1

我正在尝试为我开始的新工作收集一些串行通讯。我做了一些阅读,这很有帮助,但是很多阅读告诉你串行通信的规范和一切是什么,但不是什么时候最好使用特定的选项。

到目前为止,我对这些信息的搜索似乎只符合规范;也许作为一个新手,我正在寻找错误的术语。

那我的问题!

波特率- 我读过这是每秒的信号变化,并且经常被错误地标记为每秒比特。如果异步,这本质上是每秒比特数,包括帧数据,如果同步,实际上是每秒比特数?

奇偶校验- 偶数/奇数..两者之间有什么区别吗?我在考虑效率或类似的方面。这只是为了兼容性而存在吗?

停止位-到目前为止,我已经阅读过您可以有 1 或 2 个停止位。在 C# 中似乎也有 1.5 的选项。我找不到任何关于您为什么想要/需要超过 1 个的信息。

如果有人能就这些观点提出建议,或者给我一些推荐的阅读材料,我将不胜感激。

谢谢阅读。

编辑:错字

4

1 回答 1

4

您很少有选择,您必须使其与设备使用的设置兼容。如果您不知道,那么您需要查看手册或拿起电话。请记住,使用真正的串行端口设备(使用 UART 的设备)越来越少见。最常见的情况是,您实际上与由 USB 或蓝牙设备驱动程序实现的模拟串行端口通信。在这种情况下,您使用的设置无关紧要,因为实际信号是由底层总线实现的。

如果您可以配置设备,那么基本准则是:

  • 波特率与电缆的长度和存在的电气干扰量直接相关。当您遇到位错误时,您必须放慢速度。RS-232 规范仅允许在 9600 波特下最大 50 英尺。
  • 当您不使用纠错协议时,应该使用奇偶校验。选择奇数还是偶数并不重要。奇怪的人挑奇怪的,这是他们的特权。
  • Stopbits 通常为 1。选择 1.5 或 2 有助于减轻设备的压力,这些设备的中断响应时间很差,会被数据丢失检测到。
  • Databits 几乎总是 8,如果设备只处理 ASCII 代码,有时是 7。
  • 握手是一个重要的设置,它永远不会停止造成麻烦,因为许多程序员只是忽略了它。现代计算机几乎总是足够快以至于不需要它,但对于设备来说并不一定如此。最基本的无故障配置是在您打开端口时打开 DTR 并告诉设备驱动程序处理 RTS/CTS 握手。有时会使用 Xon/Xoff 握手,具体取决于设备。

通过实施可靠的错误检查,可以赢得 90% 的战斗。它几乎总是被忽略,坏主意。对于串口设备来说非常重要,因为它们本身没有纠错能力并且错误检测非常弱。始终确保您可以检测并正确报告溢出、奇偶校验和帧错误。并通过故意设置错误来测试它们。

于 2014-07-30T23:58:15.217 回答