static void RunCapture() { Console.WriteLine("Serial port: " + portName); Console.WriteLine("Baud rate: " + baudRate + " Bd"); Console.WriteLine("Parity: " + parity); Console.WriteLine("Stopbits: " + stopbits); Console.WriteLine("Frame gap: " + frameGapMs + " ms"); Console.WriteLine("DLT: " + dlt); Console.WriteLine("Output file: " + outputFile); Console.WriteLine(); Console.WriteLine("Starting capture (press Ctrl+c to stop)"); using (var capture = new CaptureSerial(portName, baudRate, parity, stopbits, frameGapMs)) { if (pipe && Environment.OSVersion.Platform != PlatformID.Unix) { using (BinaryWriter writer = new BinaryWriter(new NamedPipeServerStream(outputFile, PipeDirection.Out))) { Capture(capture, writer); } } else { using (BinaryWriter writer = new BinaryWriter(File.Open(outputFile, FileMode.Create))) { Capture(capture, writer); } } } }
static void Capture(CaptureSerial capture, BinaryWriter writer) { Pcap.Header.Write(writer, dlt); writer.Flush(); while (true) { var packet = capture.CapturePacket(); if (packet != null) { packet.Write(writer); writer.Flush(); } } }