串口读写问题
通信参数:38400,N,8,1 。
在双向传输命令过程中,上位机向下位机发送命令全部采用帧格式,格式如下:
顺序 类别 表示字符 说明 备注
1 首标识位 HEAD 数据帧的起始位 0XAA
2 控制位 COMMAND 控制命令
3 数据位 DATA 地址和数据等信息
4 校验位 CHKSUM 校验位,前面数据累加和的低字节
5 末标识位 END 结束标志 0xed
每发送一帧数据,在发送前至少保留4个停止位。
首标识位H’AA’和末标识位H’59’为数据采集系统在双向通信时专用。
通信等待:上位机和下位机通信过程中,如果需要下位机回应而下位机超过15S没有回应,显示通信错误。
在通信时,若某参数大于等于2字节,则应先发送低位字节,再发送高位字节。其在存储器中的存储方式也遵循此规定,低位字节存在低地址中,高位字节存在高地址中。例如数据0x12345678,发送顺序是0x78, 0x56, 0x34, 0x12。
如果是字符串则先发送起始字节,然后发送后续字节。例:SERIES参数(产品系列,2byte压缩BCD格式)为“3211”,则应先发送0x32,再发送0x11。再如LF_DATE参数(出厂日期,YYMMDD,3byte,压缩BCD格式)为“060825”,则应先发送0x06,再发送0x08,最后发送0x25。
问题1,如果说我的数据真是0X12345678,年月日是090909,这两个数据要同时发送,这两个数据我得发送几次?是一次就能发送完的吗?还有我如何控制这个数据,能让我知道什么时候是真的发完了。
问题2,首标识位H’AA’和末标识位H’59’为数据采集系统在双向通信时专用。这句话是什么意思,只有在一条数据是0xAA,……0x59下才是双向通信吗?这个双向通信指的是全双工吗?
谢谢!