当前位置: 代码迷 >> 驱动开发 >> RS232与多台设备通信解决思路
  详细解决方案

RS232与多台设备通信解决思路

热度:104   发布时间:2016-04-28 11:20:54.0
RS232与多台设备通信
目前遇到个难题:
1. 我需要使用一台PC机与6台设备同时进行串口通讯。
2. 但是一台电脑上只有一个串口,无法实现多设备通讯。
3. 如果使用市面上的串口卡可能会实现我想要的功能。

我想请问各位:
如果我成功扩展了6个串口,比如COM1,COM2,COM3,COM4,COM5,COM6,
我在用VB编程的时候,怎样判断现在是和那个设备通讯(或者说我想给COM3相连的串口发数据,怎样定义?)

谢谢您的回答!

------解决方案--------------------
这里的close Port communication需不需要??
我认为需要。open-close对应是良好的习惯

另外你不需要那么多port,只要一个就够了。可以在发送的数据前面加上开始字节、地址和数据长度,后面加上校验字节。比如把你的PC地址定为00,其他6个设备的地址分别定为01-06,将开始字节定为FE.

如果PC向设备1发送数据 0A 0B 0C
则可发送 FE(开始字节) 01(设备地址) 03(发送的数据字节数) 0A 0B 0C(数据) F1(校验字节=FE^01^03^0A^0B^0C)
设备1从串口读数据时如果读到FE,表示传输开始,继续读第二个字节,如果不是01,则表示数据是发给其他设备的,设备1放弃此数据。如果是01,表示数据是发给设备1的,继续读数据,下个字节表示要读的数据的长度,再继续读3个字节数据,最后读取校验字节,将前面读到的字节做异或看是否跟校验字节相等,相等则表示数据完整无误,否则认为传输有误。
上面是对1楼的回复做的详细说明。

2楼的意见也不错。485的传输距离更远,且能够支持发送使能,避免同时多点发送数据,一般是半双工的,如果用422就是全双工了。