Serial port Arduino能否通过串行传输空字符?

Serial port Arduino能否通过串行传输空字符?,serial-port,arduino,Serial Port,Arduino,我将通过内置的硬件串行库在两个Arduinos之间建立一个二进制驱动的串行通信。由于我的数据包是以二进制格式构造的,对于值为0的整数实例,数据包中的几个字符很可能是空字符。我不确定Arduinos将如何处理空字符,或者如果有的话。在我继续我的项目之前,我当然想知道。这本书谈论的是“二进制数据”和字节。回到未来 是的,标准UART串行将处理二进制文件。确保在串行线路的每一端的UART(通用异步接收/传输)设备上都配置了停止位,并且应该全部设置好 根据我的经验,这种事情需要一定程度的胡闹才能得到正确

我将通过内置的硬件串行库在两个Arduinos之间建立一个二进制驱动的串行通信。由于我的数据包是以二进制格式构造的,对于值为0的整数实例,数据包中的几个字符很可能是空字符。我不确定Arduinos将如何处理空字符,或者如果有的话。在我继续我的项目之前,我当然想知道。这本书谈论的是“二进制数据”和字节。

回到未来

是的,标准UART串行将处理二进制文件。确保在串行线路的每一端的UART(通用异步接收/传输)设备上都配置了停止位,并且应该全部设置好

根据我的经验,这种事情需要一定程度的胡闹才能得到正确的结果。如果您将两个UART都设置为8位、一个停止位、无奇偶校验和相同的位/秒速率,您应该会很好


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

我发现通过串行软件发送以下uart数据包时遇到了相同的问题: [10]={0x12,0x32,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14} mySerial.write(a)将只发送0x12,0x32,0x30,并且不会发送空字符。 为了解决这个问题,我必须使用mySerial.write((字节)0)发送空字符。
因此,Arduino串行库仅在单独发送时才发送空字符:P

二进制数据可以使用

write()
方法以以下形式传输:

Serial.write(buf,len)

在哪里

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


以这种方式传输所有指定字符,包括空字符。否则,如果只将缓冲区参数传递给该方法,它会将该参数视为字符串,并在遇到第一个空字符时停止传输。

在@powtac good point询问。我应该这样做。我不小心单击了“关闭”,无法撤消它-抱歉。谢谢,这也省去了我制作函数对整数进行位移位的麻烦。