以下是我在开发中使用的代码。
static void Main(string[] args)
{
SerialPort mySerialPort = new SerialPort("COM28");
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.RtsEnable = true;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
mySerialPort.Open();
Console.WriteLine("Press any key to continue...");
Console.WriteLine();
Console.ReadKey();
mySerialPort.Close();
}
private static void DataReceivedHandler(
object sender,
SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.WriteLine("Data Received:");
Console.Write(indata);
}
但是问题是,此功能在Windows 7 pc中工作正常。但不是在Windows 10 pc中。 Windows 10.serial端口打开中没有显示任何错误,监听工作正常。但是在Windows 10中,它永远不会触发方法'DataReceivedHandler'。
答案 0 :(得分:0)
对我来说,这段代码非常有效。我曾经模拟串行端口“虚拟串行端口9”,并创建了互连的COM28和COM30。
要使用COM30编写Termite 3.4软件,该软件会为您的软件提交一个“ Hello World”并收到。
我只是在代码中对其进行了更改,但对其没有影响。
SerialPort mySerialPort = new SerialPort("COM28")
{
BaudRate = 9600,
Parity = Parity.None,
StopBits = StopBits.One,
DataBits = 8,
Handshake = Handshake.None,
RtsEnable = true
};