【问题标题】:Understanding serial device settings了解串行设备设置
【发布时间】:2015-11-25 14:09:38
【问题描述】:

如果这个问题已经回答,请随时拍我并发送链接;我只是找不到它。不过我确实搜索过。

我一直在对与串行设备的通信进行故障排除。通过查看大量文档,我现在了解“波特率”、“数据位”、“停止位”和“奇偶校验”的设置是什么意思。但我似乎无法理解是谁(发送者或接收者)决定了这些设置。

假设我有一个串行设备插入我的计算机。在我的代码中,我打开一个到串行端口的连接并指定类似 9600,8,E,1 的内容。当我指定这些设置时,这些设置是否会发送到发送本身,以便它知道如何将数据发送到我的接收器?还是发送者期望接收者遵守严格的设置更常见?

我遇到的问题是我尝试使用“偶数”奇偶校验,这导致了大量不规则的传输错误。但是,当我使用“奇数”奇偶校验时,这些错误就会消失。我的设置中还涉及一个 USB 到串行适配器。如果中间没有适配器,偶数或奇数奇偶校验不会出现任何传输错误。所以我很难理解设备本身是否不支持使用偶校验发送,或者适配器是否是导致问题的东西等等。

谢谢。

【问题讨论】:

  • 两者都不是,确保设备和 PC 使用的设置相同完全取决于您。由于您似乎不知道设备设置,因此使用电话会领先很多,因此您可以确定。
  • 谢谢。使用电话是什么意思?
  • 拿起一个,拨打制造该设备的公司的号码,要求与技术支持人员交谈。他们知道。

标签: serial-port


【解决方案1】:

当我指定这些设置时,这些设置是否会发送给发送方,以便它知道如何将数据发送给我的接收方?

没有。

扩展 Hans Passant 的评论,串行端口的两侧必须同意设置,否则它们将无法相互通信。如果他们不同意,您将得到任何一方的乱码数据,因为硬件将在不正确的时间读取数据。这些设置通常记录在您尝试与之通信的设备的手册中。例如,要与 Cisco 路由器通信,您通常会使用following settings

Bits per sec    :  9600 
Data bits       :     8 
Parity          :  none 
Stop bits       :     1 
Flow control    :  none 

当您设置串行端口时,您必须使用这些相同的设置,两个设备之间没有硬件级别的握手来决定它们通信的速度。

有时,串行端口设置的格式可能会以如下格式给出:

9600,8,N,1

这只是上面引用的简写(9600 波特,8 个数据位,无奇偶校验,1 个停止位)

根据我的经验,大多数设备默认为9600,8,N,1,下一个常见的串行设置是115200,8,N,1

【讨论】:

  • 非常有帮助,谢谢。还有一点需要澄清。我正在测试“偶数”奇偶校验。使用端口嗅探器,我发现设备的软件使用“奇数”奇偶校验。当直接插入计算机上的串行端口时,我的数据与来自设备软件的数据相匹配。如果使用不同的奇偶校验设置,这怎么可能?使用 USB 转串口适配器时,我才开始使用偶校验开始看到传输错误。甚至不知道从哪里开始解决问题:)
  • 我不确定究竟是什么原因造成的。你用什么来做零件嗅探?
  • 我使用了 Eltima 的串行端口监视器。该设备自己的软件将其设置为奇校验,所以这就是我现在正在做的事情,无论是否使用 USB 到串行适配器都没有错误。之前,使用偶校验,没有适配器我没有错误,但适配器有很多错误。这么奇怪!让我想知道这个适配器。我们将继续并将其标记为已解决。如果您在 Wikipedia 之外有更多关于如何更好地理解平价和所有这些的想法或有用的资源,我将不胜感激。再次感谢!
猜你喜欢
  • 2011-02-16
  • 2013-12-29
  • 2019-02-08
  • 2018-08-10
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 2012-01-18
相关资源
最近更新 更多