我需要通过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