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