关于串口通讯--停止位是什么意思,如何确定?(100分)

  • 主题发起人 主题发起人 delphiroad
  • 开始时间 开始时间
D

delphiroad

Unregistered / Unconfirmed
GUEST, unregistred user!

MSComm中的Setting属性为:BBBB,P,D,S
前三个我都知道是什么意思,也会设,大S如何设,查MSDN,知道是“停止位值”,
并且微软给出的合法值为1、1.5、2。
我现在正在做一个喷墨机控制程序,该喷墨机的通讯协议为e文,有段文字如下:
Data will be transferred over the rs232 serial connection at a maximum
rate of 38.4kbaud with 8 data bits,1 start bit and 1 stop bit per
character.No parity checking will be used.
从上面的文字我已经知道Setting属性的前三部分(38400,n,8),但e文中说的
“1 start bit and 1 stop bit per character”(我直译就是每字符一个开始
位和一个停止位)我却不明白,到底应该设哪些属性,这些属性如何设。为何它
多了一个“开始位”?唉,说到底是我不懂停止位和开始位的意思!

 
你应该先了解一下什么时串行异步通讯,常规的方法是这样的,平时(指没有通讯发生)的
空闲时候,通讯线总处于一个稳定的电平(对于PC的串行口而言为1),当通讯开始时,首
先需要同步通讯的双方(发送方和接收方),方法时首先改变通讯线的电平,这就是起始位,
显然,PC串行口的起始位是0;另外,通讯中还需要双方执行相同的速率,而事实上世界上
不会存在真正相同的速度的,因此需要使用一个简单的校验方法确保信号的正确,因此,在
一个字节(8位或9位)发送完毕后需要附加一个位(PC串行口为1),当接收方接收完有用
的数据位以后可以对这个恒定的位进行校验,这就是帧同步!而且,显然易见,停止位之后
通讯线的电平恰好回到空闲状态的。
PC串行口的设置通常可以描述为“波特率,校验,数据位数,停止位数”如(38400,n,8,1)
这样的方式,起始位永远是一位的,而停止位则可以是1位,1.5位和2位,其中的原因很简单,
因为外设的速度可能比PC低,那么,PC可以通过延长停止位让外设有足够的时间处理刚收到
的字节。
 
38400,n,8,1
 
多谢两位,已给分!
 
后退
顶部