串口通讯

时间:2010-11-05 23:36:45

标签: c# serial-port

我正在使用C#开发一个需要通过串行通信与矩阵交换机通信的应用程序。

string value = "abc";
serialPort1.Open();
serialPort1.WriteTimeout = 500;
serialPort1.WriteLine(value);
serialPort1.Close();

矩阵框的状态应该在WriteLine(value)时改变。

这是我的问题。当我发送字符串值时,矩阵框的状态不会改变。但是,当我通过Putty发送相同的字符串(通过串行通信)时,矩阵框会正确响应。所有串行属性都相同(BaudRate,DataBits,PortName等)。

我应该尝试哪些可能的解决方案?

3 个答案:

答案 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?