我试图了解在我的通信协议(protocol)中包含某种 CRC 或校验和对我来说是否多余。如果任何人都可以与 chrome.serial
和其他 chrome 硬件通信 API 进行对话(例如 chrome.hid
、chrome.bluetoothLowEnergy
、 ...)
最佳答案
串行通信只是一种传输位的方式,其存在的主要原因是它一次传输一位,因此只能在单个通信链路上工作,例如简单的电话线。没有内置的 CRC 或校验和或任何东西。
有许多基于串行通信的系统试图解决通信通常在嘈杂的环境中进行的事实。回到通过电话线调制解调器的时代,您可能必须面对这样一个事实:家里的其他人可能会接听电话线上的另一个分机,并在您的下载中注入(inject)一堆噪音。因此,像 XMODEM 这样的协议(protocol)被发明了,将串行通信包装在一个更强大的框架中。 (然后,当 XMODEM 被证明不可靠时,我们转向 YMODEM 和 ZMODEM。)
根据您正在谈论的内容(例如,通过 25 厘米长的电线连接到 USB 串行端口的 Arduino 等设备),您可能会发现将工作投入到数据校验和中并不值得麻烦,因为干扰的可能性很低,而且后果也微不足道。另一方面,如果您正在与激光武器的 Controller 对话,您可能需要确保您发送的命令是接收到的命令。
我对你提到的其他系统一无所知,但我已经足够老了,早在 80 年代就花了很多时间进行串行通信(现在又对使用 chrome.serial 的设备进行了同样的操作,去搞清楚)。
关于bluetooth-lowenergy - chrome.serial API 能否确保数据完整性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27910200/