我正在将C#和.NET 4.5与Visual Studio 2012编译器/ IDE一起使用,以打开串行端口并与之交互。我的代码旨在连接到US Digital的QSB正交至USB转换器。
这是我用来打开端口并连接的代码。
this.Port = new SerialPort();
this.Port.BaudRate = 230400;
this.Port.PortName = "COM9";
this.Port.Parity = Parity.None;
this.Port.Handshake = Handshake.None;
this.Port.DataBits = 8;
this.Port.StopBits = StopBits.One;
this.Port.Open();
Run Code Online (Sandbox Code Playgroud)
在this.Port.Open()之后立即设置断点,使我可以验证串行端口是否确实已连接。在另一部分代码中,响应于按钮按下而调用以下内容:
this.Port.WriteLine("W168");
Run Code Online (Sandbox Code Playgroud)
该命令*应该使我的硬件旋转电动机,实际上,如果我使用Putty或使用我编写的Python脚本(两者使用与C#代码完全相同的设置)发送该命令,则它确实会旋转。然而什么也没发生。我可以在Putty或Python中打开端口,并以预期的结果执行命令,然后运行C#代码,但没有任何反应。
我是否缺少某些特定于C#的东西来阻止其工作?
对于它的价值,这是我可以使用的Python代码:
ser = serial.Serial("COM9", 230400, timeout=1)
ser.write(b"W168\n")
Run Code Online (Sandbox Code Playgroud)
链接到pySerial文档:http ://pyserial.sourceforge.net/pyserial_api.html#classes
C#代码中提及但上述python调用中未提及的字段的默认值为: