了解串行设备设置
Understanding serial device settings
如果这个问题已经回答了,请随时拍打我并发送一个link;我只是找不到它。不过我确实搜索了。
我一直在解决与串行设备的通信问题。通过查阅大量文档,我现在明白了 "baud rate," "data bits," "stop bit," 和 "parity" 的设置含义。但我似乎无法理解的是谁(发送者或接收者)决定了这些设置。
假设我有一个串行设备插入我的计算机。在我的代码中,我打开一个到串行端口的连接并指定类似 9600,8,E,1 的内容。当我指定这些设置时,这些设置是否会发送到发送端本身,以便它知道如何将数据发送到我的接收方?或者更常见的是发件人希望收件人遵守严格的设置?
我遇到的问题是我试图使用 "Even" 奇偶校验,这导致了大量不规则的传输错误。但是,当我使用 "Odd" 奇偶校验时,这些错误就会消失。我的设置中还涉及一个 USB 转串口适配器。如果中间没有适配器,偶数或奇数奇偶校验不会出现任何传输错误。所以我只是很难理解设备本身是否不支持发送偶校验,或者适配器是否是导致问题的原因,等等。
谢谢。
When I specify these settings, do these get sent to the sending itself, so that it knows how to send the data to my receiver?
没有
为了扩展Hans Passant 的评论,串行端口的双方必须就设置达成一致,否则他们不会互相交谈。如果他们不同意,您将在任何一方获得乱码数据,因为硬件将在错误的时间读取数据。这些设置通常记录在您尝试与之通信的设备的手册中。例如,要与 Cisco 路由器通信,您通常会使用 following settings:
Bits per sec : 9600
Data bits : 8
Parity : none
Stop bits : 1
Flow control : none
当你在你这边设置串行端口时,你必须使用这些相同的设置,两个设备之间没有硬件级握手来决定它们的通信速度。
有时,串口设置的格式可能如下所示:
9600,8,N,1
对于上面的引用,这只是 shorthand(9600 波特,8 个数据位,无奇偶校验,1 个停止位)
根据我的经验,大多数设备默认为 9600,8,N,1
,下一个常见的串行设置是 115200,8,N,1
如果这个问题已经回答了,请随时拍打我并发送一个link;我只是找不到它。不过我确实搜索了。
我一直在解决与串行设备的通信问题。通过查阅大量文档,我现在明白了 "baud rate," "data bits," "stop bit," 和 "parity" 的设置含义。但我似乎无法理解的是谁(发送者或接收者)决定了这些设置。
假设我有一个串行设备插入我的计算机。在我的代码中,我打开一个到串行端口的连接并指定类似 9600,8,E,1 的内容。当我指定这些设置时,这些设置是否会发送到发送端本身,以便它知道如何将数据发送到我的接收方?或者更常见的是发件人希望收件人遵守严格的设置?
我遇到的问题是我试图使用 "Even" 奇偶校验,这导致了大量不规则的传输错误。但是,当我使用 "Odd" 奇偶校验时,这些错误就会消失。我的设置中还涉及一个 USB 转串口适配器。如果中间没有适配器,偶数或奇数奇偶校验不会出现任何传输错误。所以我只是很难理解设备本身是否不支持发送偶校验,或者适配器是否是导致问题的原因,等等。
谢谢。
When I specify these settings, do these get sent to the sending itself, so that it knows how to send the data to my receiver?
没有
为了扩展Hans Passant 的评论,串行端口的双方必须就设置达成一致,否则他们不会互相交谈。如果他们不同意,您将在任何一方获得乱码数据,因为硬件将在错误的时间读取数据。这些设置通常记录在您尝试与之通信的设备的手册中。例如,要与 Cisco 路由器通信,您通常会使用 following settings:
Bits per sec : 9600
Data bits : 8
Parity : none
Stop bits : 1
Flow control : none
当你在你这边设置串行端口时,你必须使用这些相同的设置,两个设备之间没有硬件级握手来决定它们的通信速度。
有时,串口设置的格式可能如下所示:
9600,8,N,1
对于上面的引用,这只是 shorthand(9600 波特,8 个数据位,无奇偶校验,1 个停止位)
根据我的经验,大多数设备默认为 9600,8,N,1
,下一个常见的串行设置是 115200,8,N,1