【发布时间】:2012-02-16 11:27:38
【问题描述】:
我遇到了一个问题,花了我太多时间,但没有解决它。所以我真的希望你能帮助我。
我有一个用 c# wpf 构建的应用程序,并通过串口与烤箱通信。
我需要发送的帧格式如下:[EOT] (GID) (UID) (Temp) [ENQ]
gid uid:组标识符和单元标识符(机器的地址)。
(eof),(enq) :框定消息。
(temp) 意思是:给我温度值。
只有具有相同地址的机器才能应答(主从架构)。
响应消息的格式为:[STX] (Temp) <DATA> [ETX].
该字段仅包含温度值
stx 开始文本。 etx 结束文本。
我发送和接收数据没有问题,可以显示连接的单机温度值。 但是当我连接更多机器时,我不知道是哪台机器响应了我发送的帧,因为响应帧没有任何地址,因此我可以确定哪个烤箱有响应。
所以简单的情况是:
-我将数据发送到烤箱。
- 我收到了数据。
- 我无法决定哪个烤箱回答了。
请任何人有一个想法。
PS:我使用的协议是:欧陆的EI-BISYNCH EuroTherm
【问题讨论】:
-
嗯,您知道您将请求发送给了谁,因此如果在响应中未确定发件人,似乎唯一的做法是在发送新请求之前等待响应。
-
@500 - 内部服务器错误:这里的问题是我从一个循环发送给每个人。有些机器可能处于离线或关闭状态,因此无法响应
-
SerialPort.PortName 匹配机器。
-
多少个烤箱?不是每个烤箱都连接到它自己的串口:COM1-->烤箱_1,COM2-->烤箱_2等......在这种情况下,汉斯的回答是正确的。事实上,如果这是使用 COM 端口的真正 RS-232 串行 COM,那么它必须是这种方式。只有其他可能性是 RS-485,您会知道,因为您必须在数据包中放入设备地址?
标签: c# wpf serial-port