我正在用C#开发一个应用程序,它需要通过串行通信与矩阵开关通信。
string value = "abc";
serialPort1.Open();
serialPort1.WriteTimeout = 500;
serialPort1.WriteLine(value);
serialPort1.Close();矩阵框的状态应该在WriteLine(value)时更改。
这就是我的问题。当我发送字符串值时,矩阵框的状态不变。但是,当我通过Putty (通过串行通信)发送相同的字符串时,矩阵框正确响应。所有串行属性都是相同的(BaudRate、DataBits、PortName等)。
我应该尝试哪些可能的解决方案?
发布于 2010-11-06 17:03:09
你能在你安装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属性检查打开或关闭状态。
发布于 2010-11-06 17:37:17
下载PortMon http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx并使用Putty成功运行串行通信,嗅探PC和设备之间的所有数据交换。然后执行您的程序并比较交换日志。这应该会给你答案,在你的程序中做错了什么。
发布于 2010-11-06 07:42:01
我会检查串行端口上的Encoding属性。看起来默认值是ASCII。也许你的设备需要Unicode?
https://stackoverflow.com/questions/4110989
复制相似问题