PC机与单片机多机通讯问题

本文介绍了PC机作为主机与单片机进行多机通讯的实现方法。通过设置串口的奇偶校验位,PC机模拟TB8功能,发送地址字节和数据字节。PC机首先发送地址字节(使用MARKPARITY,相当于tb8=1),接着发送数据字节(使用SPACEPARITY,相当于tb8=0)。单片机接收到地址字节后,与自身地址比较,匹配则接收后续数据。文中给出了使用DCB结构体改变串口参数并进行同步串口读写的示例代码。
摘要由CSDN通过智能技术生成

1单片机的多机通讯一般是主机和下位机都是用单片机。通讯模式为主机发送查询命令给下位机,目标下位机返回预期的数据。发送数据时,tb8置1,发送地址字节,然后,置tb8为0,发送剩余的数据。准备接收时,置sm2 =1,当有数据接收时,如果rb8=1,说明收到的字节是地址,(从机)应该把该字节与自己的地址对比,如果一致,则置sm2=0,准备接收随后的数据字节,否则,继续保持sm2=1。

2 针对主机为pc机的情况,没有tb8这样的称呼,但是可以使用串口的奇偶校验位代替,即parity=mark,表示tb8=1,parity=space,表示tb8=0。

举例:PC机发送 48 02 55 01 48 d4 //48 设备地址,02 数据长度, 55 01 指定的控制数据,48 d4 crc16校验

返回:48 06 01 00 00 00 00 00 22 4c 

串口参数设置校验位MARKPARITY,发送第一个字节: 地址01;延时5ms, 然后串口参数设置校验位SPACEPARITY,发送后续字节;

写串口的核心部分代码如下(本代码使用同步方式读写串口,难度不大,大牛勿喷。其它的部分请参考网络解释)

BYTE cSend[6];
cSend[0] = 0x48;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值