using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading; using System.Threading.Tasks; namespace CommonConsole { public static class Program { static ManualResetEventSlim awaiter = new ManualResetEventSlim(false); static Queue lines = new Queue(); static bool release; static void Main() { var file = @"C:\Users\SZLATEV\source\repos\laa_production\Common\CommonConsole\log.txt"; // var writeTask using (var fileStream = File.OpenWrite(file)) { while (!release) { awaiter.Wait(); while (lines.Count > 0) { var line = $"{lines.Dequeue()}"; var bytes = Encoding.UTF8.GetBytes(line); fileStream.Write(bytes, 0, bytes.Length); } } } Parallel.For(1, 11, StartWritingLogs); //SIRTServer.StartServer(Console.WriteLine, Console.WriteLine, 6); //SIRTServer.StartProgramming(868, 402001154, "0E9FACC6A0E1EF1C3B27A49BAC216535"); } private static void StartWritingLogs(int index) { Task.Factory .StartNew(ix => { for (var i = 0; i < 100; i++) { Console.WriteLine($"{ix}: {i}"); Task.Delay(1000); awaiter.Set(); } } , index , CancellationToken.None) .Wait(); } public static void MainRF(params string[] args) { //var pam03 = new PAM03(); //pam03.Run("COM6", "402010030", "E6C88800DEB868C0D6A84880CE982840"); //pam03.Run("COM6", "402010027", "D9C154DC274966AB71AD5D804A322178"); //return pam03.Run("COM7", "412004190", "0E9FACC6A0E1EF1C3B27A49BAC216535"); // 10402010030 E6C88800DEB868C0D6A84880CE982840 //try //{ // return pam03.Run("COM10", "402009768", "3CB64CBCB71F8D0F9F69FF18DF5D24D3"); //} //catch (System.Exception e) //{ // return -1; //} } class FDRMask { public const byte LOG_ALARM_STATE = 0; // 0x00000001, //!< AlarmState (16 bits) public const byte LOG_BILLING_COUNTER = 1; // 0x00000002, //!< BillingCounter public const byte LOG_REVERSE_COUNTER = 2; // 0x00000004, //!< Backward or ReverseCounter public const byte LOG_MAX_FLOW_VAL = 3; // 0x00000008, //!< Value of MaxFlow public const byte LOG_MAX_FLOW_TIME = 4; // 0x00000010, //!< Date/Time of MaxFlow public const byte LOG_PEAK_FLOW_VAL = 5; // 0x00000020, //!< Value of PeakFlow public const byte LOG_PEAK_FLOW_TIME = 6; // 0x00000040, //!< Date/Time of PeakFlow public const byte LOG_CUR_FLOW_VAL = 7; // 0x00000080, //!< Current Flow Value (Average of Period) public const byte LOG_BROKEN_PIPE_FLOW_VAL = 8; // 0x00000100, //!< Value of BrokenPipe public const byte LOG_BROKEN_PIPE_FLOW_TIME = 9; // 0x00000200, //!< Date/Time of BrokenPipe public const byte LOG_MIN_FLOW_VAL = 10; // 0x00000400, //!< Value of FlowMin public const byte LOG_MIN_FLOW_TIME = 11; // 0x00000800, //!< Date/Time of FlowMin public const byte LOG_FORWARD_COUNTER = 12; // 0x00001000, //!< ForwardCounter public const byte LOG_MIN_PRESS_VAL = 13; // 0x00010000, //!< Pressure Minimum public const byte LOG_MIN_PRESS_TIME = 14; // 0x00020000, //!< Pressure Minimum Time public const byte LOG_MAX_PRESS_VAL = 15; // 0x00040000, //!< Pressure Maximum public const byte LOG_MAX_PRESS_TIME = 16; // 0x00080000, //!< Pressure Maximum Time public const byte LOG_MIN_TEMP_VAL = 17; // 0x00100000, //!< Temperature Minimum public const byte LOG_MIN_TEMP_TIME = 18; // 0x00200000, //!< Temperature Minimum public const byte LOG_MAX_TEMP_VAL = 19; // 0x00400000, //!< Temperature Maximum public const byte LOG_MAX_TEMP_TIME = 20; // 0x00800000, //!< Temperature Maximum public const byte LOG_CUR_PRESS_VAL = 21; // 0x01000000, //!< Pressure Current Value public const byte LOG_CUR_TEMP_VAL = 22; // 0x02000000, //!< Temperature Current Value public const byte LOG_EXT_ALARM_STATE = 23; // 0x04000000,    //> AlarmMask.ALARM_REBOOT) % 2} {(x2 >> AlarmMask.ALARM_REBOOT) % 2} "); //Console.WriteLine($"ALARM_LOW_BATTERY: [{(int)AlarmMask.ALARM_LOW_BATTERY,2}] {(x1 >> AlarmMask.ALARM_LOW_BATTERY) % 2} {(x2 >> AlarmMask.ALARM_LOW_BATTERY) % 2} "); //Console.WriteLine($"ALARM_VERY_LOW_BATTERY: [{(int)AlarmMask.ALARM_VERY_LOW_BATTERY,2}] {(x1 >> AlarmMask.ALARM_VERY_LOW_BATTERY) % 2} {(x2 >> AlarmMask.ALARM_VERY_LOW_BATTERY) % 2} "); //Console.WriteLine($"ALARM_CONFIG_ERROR: [{(int)AlarmMask.ALARM_CONFIG_ERROR,2}] {(x1 >> AlarmMask.ALARM_CONFIG_ERROR) % 2} {(x2 >> AlarmMask.ALARM_CONFIG_ERROR) % 2} "); //Console.WriteLine($"ALARM_EMPTY_PIPE: [{(int)AlarmMask.ALARM_EMPTY_PIPE,2}] {(x1 >> AlarmMask.ALARM_EMPTY_PIPE) % 2} {(x2 >> AlarmMask.ALARM_EMPTY_PIPE) % 2} "); //Console.WriteLine($"ALARM_MAGNETIC_TAMPER: [{(int)AlarmMask.ALARM_MAGNETIC_TAMPER,2}] {(x1 >> AlarmMask.ALARM_MAGNETIC_TAMPER) % 2} {(x2 >> AlarmMask.ALARM_MAGNETIC_TAMPER) % 2} "); //Console.WriteLine($"ALARM_REVERSE_FLOW: [{(int)AlarmMask.ALARM_REVERSE_FLOW,2}] {(x1 >> AlarmMask.ALARM_REVERSE_FLOW) % 2} {(x2 >> AlarmMask.ALARM_REVERSE_FLOW) % 2} "); //Console.WriteLine($"ALARM_SUSPECT_LEAK: [{(int)AlarmMask.ALARM_SUSPECT_LEAK,2}] {(x1 >> AlarmMask.ALARM_SUSPECT_LEAK) % 2} {(x2 >> AlarmMask.ALARM_SUSPECT_LEAK) % 2} "); //Console.WriteLine($"ALARM_BROKEN_PIPE: [{(int)AlarmMask.ALARM_BROKEN_PIPE,2}] {(x1 >> AlarmMask.ALARM_BROKEN_PIPE) % 2} {(x2 >> AlarmMask.ALARM_BROKEN_PIPE) % 2} "); //Console.WriteLine($"ALARM_LOW_PRESSURE: [{(int)AlarmMask.ALARM_LOW_PRESSURE,2}] {(x1 >> AlarmMask.ALARM_LOW_PRESSURE) % 2} {(x2 >> AlarmMask.ALARM_LOW_PRESSURE) % 2} "); //Console.WriteLine($"ALARM_HIGH_PRESSURE: [{(int)AlarmMask.ALARM_HIGH_PRESSURE,2}] {(x1 >> AlarmMask.ALARM_HIGH_PRESSURE) % 2} {(x2 >> AlarmMask.ALARM_HIGH_PRESSURE) % 2} "); //Console.WriteLine($"ALARM_LOW_TEMPERATURE: [{(int)AlarmMask.ALARM_LOW_TEMPERATURE,2}] {(x1 >> AlarmMask.ALARM_LOW_TEMPERATURE) % 2} {(x2 >> AlarmMask.ALARM_LOW_TEMPERATURE) % 2} "); //Console.WriteLine($"ALARM_HIGH_TEMPERATURE: [{(int)AlarmMask.ALARM_HIGH_TEMPERATURE,2}] {(x1 >> AlarmMask.ALARM_HIGH_TEMPERATURE) % 2} {(x2 >> AlarmMask.ALARM_HIGH_TEMPERATURE) % 2} "); //Console.WriteLine($"ALARM_RADIO_ERROR: [{(int)AlarmMask.ALARM_RADIO_ERROR,2}] {(x1 >> AlarmMask.ALARM_RADIO_ERROR) % 2} {(x2 >> AlarmMask.ALARM_RADIO_ERROR) % 2} "); //Console.WriteLine($"ALARM_METROLOGY_PARAMS: [{(int)AlarmMask.ALARM_METROLOGY_PARAMS,2}] {(x1 >> AlarmMask.ALARM_METROLOGY_PARAMS) % 2} {(x2 >> AlarmMask.ALARM_METROLOGY_PARAMS) % 2} "); //Console.WriteLine($"ALARM_METROLOGY_MEASURE: [{(int)AlarmMask.ALARM_METROLOGY_MEASURE,2}] {(x1 >> AlarmMask.ALARM_METROLOGY_MEASURE) % 2} {(x2 >> AlarmMask.ALARM_METROLOGY_MEASURE) % 2}"); //Console.WriteLine($"ALARM_MAX: [{(int)AlarmMask.ALARM_MAX,2}] {(x1 >> AlarmMask.ALARM_MAX) % 2} {(x2 >> AlarmMask.ALARM_MAX) % 2} "); //Console.WriteLine(int.MaxValue); //Console.WriteLine(uint.MaxValue); //Console.WriteLine(long.MaxValue); } public static void MainCSD() { //var alarmEnableMask = 0xD39F0000; //var ix = 0; //foreach (var item in Enum.GetValues(typeof(AlarmMask)).Cast().OrderBy(x => (uint)x).ToArray()) //{ // Console.WriteLine($"{item,23} = {item:X} = {(uint)item,5} = {(alarmEnableMask << ix++) & 1}"); //} //foreach (var item in Enum.GetValues(typeof(FDRMask)).Cast().OrderBy(x => x).ToArray()) //{ // Console.WriteLine($"{item} = {item:X} = {(uint)item}"); //} //ushort value = 3; //Console.WriteLine($"0: {value >> 0 & 1}"); //Console.WriteLine($"0: {value >> 1 & 1}"); //Console.WriteLine($"0: {value >> 2 & 1}"); //Console.WriteLine("CSD CSD 772161_MW"); //Console.WriteLine("============================================================================="); //var alarm = AlarmMask.ALARM_REBOOT // | AlarmMask.ALARM_EMPTY_PIPE // | AlarmMask.ALARM_LOW_BATTERY // | AlarmMask.ALARM_REVERSE_FLOW; //Console.WriteLine($"CUSTOMER_AlarmVisualMask: {BitConverter.ToString(BitConverter.GetBytes((int)alarm))}"); //var dlg = FDRMask.LOG_BILLING_COUNTER // | FDRMask.LOG_MIN_FLOW_VAL // | FDRMask.LOG_CUR_FLOW_VAL // ... AverageFlow !? // | FDRMask.LOG_ALARM_STATE // | FDRMask.LOG_EXT_ALARM_STATE; //Console.WriteLine($"PERIODICLOG_DataLogContents: {BitConverter.ToString(BitConverter.GetBytes((int)dlg))}"); //var fdr = FDRMask.LOG_BILLING_COUNTER // | FDRMask.LOG_MIN_FLOW_VAL // | FDRMask.LOG_CUR_FLOW_VAL // ... AverageFlow !? // | FDRMask.LOG_ALARM_STATE // | FDRMask.LOG_EXT_ALARM_STATE; //Console.WriteLine($"PERIODICLOG_FixedDateReadingContents: {BitConverter.ToString(BitConverter.GetBytes((int)fdr))}"); } } }