首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >串行通信

串行通信
EN

Stack Overflow用户
提问于 2010-11-06 07:36:45
回答 3查看 1.7K关注 0票数 1

我正在用C#开发一个应用程序,它需要通过串行通信与矩阵开关通信。

代码语言:javascript
复制
string value = "abc";
serialPort1.Open();
serialPort1.WriteTimeout = 500;
serialPort1.WriteLine(value);
serialPort1.Close();

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

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

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

EN

回答 3

Stack Overflow用户

发布于 2010-11-06 17:03:09

你能在你安装SerialPort的地方发布你的代码吗?您必须确保所有属性都符合您的矩阵开关的期望。例如:

代码语言:javascript
复制
// 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属性检查打开或关闭状态。

票数 3
EN

Stack Overflow用户

发布于 2010-11-06 17:37:17

下载PortMon http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx并使用Putty成功运行串行通信,嗅探PC和设备之间的所有数据交换。然后执行您的程序并比较交换日志。这应该会给你答案,在你的程序中做错了什么。

票数 2
EN

Stack Overflow用户

发布于 2010-11-06 07:42:01

我会检查串行端口上的Encoding属性。看起来默认值是ASCII。也许你的设备需要Unicode?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4110989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档