private static void TransmitTask(Win32Serial.Device device) { // Create write overlapped structure for async operation var overlapped = Win32Serial.Device.CreateOverlapped(); uint numbytes; int i = 1; const uint size = MessageBody.SerialSize; int limit = 15; if (Options.TestCount.HasValue) { limit = Options.TestCount.Value; } while (!Options.Test || i <= limit) { // Come up with a new message var tempData = new MessageBody { Machine = new Machine { Temperature = Rnd.NextDouble() * 100.0, Pressure = Rnd.NextDouble() * 100.0, }, Ambient = new Ambient { Temperature = Rnd.NextDouble() * 100.0, Humidity = Rnd.Next(24, 27) }, Number = i }; // Async write, using overlapped structure var message = tempData.SerialEncode; device.Write(Encoding.ASCII.GetBytes(message), size, out numbytes, ref overlapped); Log.WriteLineVerbose($"Write {i} Started"); // Block until write completes device.GetOverlappedResult(ref overlapped, out numbytes, true); Log.WriteLine($"Write {i} Completed. Wrote {numbytes} bytes: \"{message}\""); i++; Thread.Sleep(1000); } Environment.Exit(0); }
private static void TransmitTask(Win32Serial.Device device) { // Create write overlapped structure for async operation var overlapped = Win32Serial.Device.CreateOverlapped(); uint numbytes; int i = 1; const uint size = MessageBody.SerialSize; while (true) { Thread.Sleep(1000); // Come up with a new message var tempData = new MessageBody { Machine = new Machine { Temperature = Rnd.NextDouble() * 100.0, Pressure = Rnd.NextDouble() * 100.0, }, Ambient = new Ambient { Temperature = Rnd.NextDouble() * 100.0, Humidity = Rnd.Next(24, 27) }, Number = i }; // Async write, using overlapped structure var message = tempData.SerialEncode; device.Write(Encoding.ASCII.GetBytes(message), size, out numbytes, ref overlapped); Console.WriteLine($"{DateTime.Now.ToLocalTime()} Write {i} Started"); // Block until write completes device.GetOverlappedResult(ref overlapped, out numbytes, true); Console.WriteLine($"{DateTime.Now.ToLocalTime()} Write {i} Completed. Wrote {numbytes} bytes: \"{message}\""); i++; } }