求问串口通信协议应该怎么看懂,我应该怎么发送数据?

图片说明
图片说明
图片说明
我的困惑在前面通信协议说数据是8位的,但是数据长度又是20个字节,那我应该怎么发送我的数据。
我发送char send_buf[20]={0x01,0x23,0x02,0x05,0x02,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0xFE}; 就会报警,串口上传提示错误是心跳超时。
我发送char send_buf[20]={0x01,0x23,0x01,0x0A,0x01,0x0A,0x00,0x00,0x00,0x00,0x16,0xFE}; 接受以后就没有反应,电机也不转动。
不发送任何数据时,串口接收到的数据是:81 ff 19 00 08 00 00 00 00 00 01 00 00 00 00 00 19 00 3a 7e 是这样20位的。我应该怎么发送数据控制电机呢?求大神能够给我讲解一下我错在哪里或给我举个例子

你这里面没有写心跳包的事,无法分析心跳包的问题,首先无认为你的校验和char send_buf[20]={0x01,0x23,0x02,0x05,0x02,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0xFE}; 他的校验和应该是0x31,不是0x0e

看来你是一个绝对新手,串口的数据位和发送的数据长度都混肴不清。串口通讯,首先要指定串口(那个com口),设置串口的波特率(按你的协议是9600),
数据位(8)、停止位(1)、校验方式(无校验)。然后打开串口发送数据,按你的协议,一次下行应该发送20个字节,但是要注意,你每个数据是占2个字节
如你发送:0x01,0x23,0x02,0x05,0x02,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0xFE。
应该这样发0x01 0x23 0x00 0x02 0x00 0x05 0x00 0x02 0x00 0x05 0x00.........0x0E 0xFE 20个长度,我没有计算你的校验码是否正确,
记住数据是2个字节表示一个数据,小于256时中间用0x00分开。

不好意思,刚才没看仔细,回答错了,看成8个数据了,实际是15个数据。建议你用串口调试助手发送试试

http://ask.csdn.net/questions/648676?ref=myrecommend

http://ask.csdn.net/questions/648676?ref=myrecommend