Arduino可以通过Serial传输空字符吗?

时间:2012-06-12 01:02:33

标签: serial-port arduino

我将通过内置硬件串行库在两个Arduinos之间建立二进制驱动的串行通信。由于我的数据包是以二进制格式构建的,因此对于具有0值的整数实例,数据包中的几个字符很可能是空字符。我不确定Arduinos将如何处理空字符或者根本不知道。在我进一步完成项目之前,我当然想知道。

4 个答案:

答案 0 :(得分:2)

可以使用write()方法以下列形式传输二进制数据:

Serial.write(buf, len)

哪里...

buf:要作为一系列字节发送的数组。
len:要从数组发送的字节数。

通过这种方式,所有指定的字符都被传输,包括空字符。否则,如果仅将buffer参数传递给该方法,则它将参数视为字符串,并在遇到的第一个空字符处停止传输。

答案 1 :(得分:1)

是。 Arduino documentation for write()谈论“二进制数据”和字节。

答案 2 :(得分:1)

回到未来!

是的,标准的UART串口会处理二进制文件。确保在串行线路两端的UART(通用异步接收/发送)设备上配置了停止位,您应该全部设置好。

根据我的经验,这种事情需要进行一定程度的调整才能做到正确。如果将UART设置为8位,一个停止位,无奇偶校验和相同的位/秒速率,那么你应该很好。

如果您真的感到困惑,可以尝试将串行线路的一端连接到PC上的终端仿真器。 Van Dyke Software的SecureCRT有30天的免费试用版,将处理普通系列。

答案 3 :(得分:0)

相同问题我发现通过软件序列发送以下uart数据包: 一个[10] = {} 0x12,0x32,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x14 mySerial.write(a)将只发送0x12,0x32,0x30并且不会发送空字符。 要解决这个问题,我必须使用mySerial.write((byte)0)发送空字符。 所以Arduino Serial Library只有在单独发送时才会发送空字符:P