我需要通过RS232与使用Arduino的设备进行通信,我已经完成了所有设置和工作。我的问题是,使我需要与之通信的设备的公司告诉我以下内容:
1)通过串行发送的数据有一个起始位和停止位,并且是十六进制“7E”。 2)在消息的末尾附加CRC散列
设备使用请求/响应协议,因此Arduino板必须发送数据才能接收内容。我将起始位和停止位设置为ASCII字符,将数据和CRC置于其间并简单地Serial.write(data)
;我已经设置了两个Arduino板,并且都以这种方式进行通信。一切都很顺利。
但是设备本身并没有用。设备发回一个响应,如“CE 0F”,中间有空格。所以我开始搜索有关串行通信的更多信息,并找到有关启动和停止位和奇偶校验的信息,并开始想知道我是否以设备预期的方式发送和接收数据。
发送和接收我使用了基本教程,如:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
到目前为止,我还不太了解这种沟通方式。所以我想知道为什么,例如某些资源表示起始位为0且停止位为1,在这种情况下,起始位和停止位为“7E”。
我怀疑这有什么用: https://en.wikipedia.org/wiki/High-Level_Data_Link_Control