我正在使用C#开发一个需要通过串行通信与矩阵交换机通信的应用程序。
string value = "abc";
serialPort1.Open();
serialPort1.WriteTimeout = 500;
serialPort1.WriteLine(value);
serialPort1.Close();
矩阵框的状态应该在WriteLine(value)
时改变。
这是我的问题。当我发送字符串值时,矩阵框的状态不会改变。但是,当我通过Putty发送相同的字符串(通过串行通信)时,矩阵框会正确响应。所有串行属性都相同(BaudRate,DataBits,PortName等)。
我应该尝试哪些可能的解决方案?
答案 0 :(得分:3)
您可以在设置SerialPort
的位置发布代码吗?您必须确保所有属性与矩阵切换所需的一样。例如:
// Setup port
SerialPort serialPort = new SerialPort();
serialPort.PortName = portName; //eg. COM1
serialPort.BaudRate = 9600;
serialPort.StopBits = StopBits.One;
serialPort.Parity = Parity.None;
serialPort.DataBits = 8;
serialPort.Handshake = Handshake.None;
serialPort.NewLine = "\r\n";
serialPort.ReadTimeout = 2000;
serialPort.WriteTimeout = 1000;
在您的端口上调用Open()
后,您可以使用serialPort.IsOpen
属性检查打开或关闭状态。
答案 1 :(得分:2)
下载PortMon http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx并使用Putty运行成功的串行通信,嗅探PC和设备之间的所有数据交换。然后执行您的程序并比较交换日志。这应该给你答案,你的程序中做错了什么。
答案 2 :(得分:1)
我会检查串口上的Encoding属性。看起来默认是ASCII。也许您的设备期待Unicode? p>