串口概念性的问题 (200分)

  • 主题发起人 主题发起人 wzgss
  • 开始时间 开始时间
W

wzgss

Unregistered / Unconfirmed
GUEST, unregistred user!
1:我用它的时候发现有的时候会吃掉数据(吃的什么数据我记不清了),例如
设备发送的是“FF,01,1E”,spcomm接受有可能是“FF,1E”。大家有没有
碰到过这种情况。
我看spcomm的属性,XonChar=#17,XoffCHar=#19,他们是什么含义,是不是
他们的问题呢?

2: 属性DsrCOntrol,Dsr...是什么意思,我现在发送数据前要检查DSR,CTS针的状
态,我听同事讲用GetCommState检查,在spcomm里具体用什么函数。

3: 关于帧的问题。我以前做的都是有帧头(也有帧尾的),分析数据首先判断
是不是帧头,然后进行按协议分析数据,取出自己的帧。
我现在碰到是没有特定的帧头,不能按以前的方法进行分析。 是不是spcomm可以设置自

己的帧格式(包括校验码--spcomm里的Parity属性和协议里的校验码是一回事吗?),不

用分析就可以取出一帧数据来(spcomm能办到吗?)

以上都是我的疑惑,都是概念性的东西,向高手赐教

::我想串口的校验位和协议里的校验码应该是两回事。
::没有帧头的话,如果错了一位,可能以后永远就不能收到正确的帧数据了。
我认为没有帧头的协议可能是没有水平的人做的协议--这句话对吗
 
这是接收数据的类型不对...我说一说而己.我也不会:)哈哈。。。。
 
UP
我也在学习串口编程的,我正学些API的。
对了,你SPCOMM是用在XP系统下面吗?
 
spcomm里的Parity属性和协议里的校验码是一回事吗?
是的;
我认为没有帧头的协议可能是没有水平的人做的协议--这句话对吗?
我觉得可以这样说,
用串口通讯时,是需要自己定义通讯协议,例如:一帧数据长10个byte,可以定义FF为帧头,
FD为帧结束码,但是你要确定帧数据中不会出现和帧头、帧尾相同的内容,如果不能避免,则
需要较长的帧格式,即采用多于一个字节的帧头、帧尾,如帧头:FF FF FF,帧尾FD FD FD,
对接收到的数据进行分析,如果连续出现三个FF则认为是一帧数据的开始,连续出现三个FD,
则认为一帧数据以及结束。
你可以用MSCOMM,在VB里有帮助,比较详细。
移植到delphi里也比较简单。
 
请你检查串口的停止位、校验位和数据位的设置,然后察看相关书籍。
 
XoffCHar=#19应该是当接收数据中有#19的字符出现时就用spcomm中的Replacedchar中设置的值代替
 
为什么要把#19替换#0,该几就是几:)
我怎么不让他们替换?修改哪个属性。是不是ReplaceWhenParity
 
将xonchar,xoffchar 设为#
 
wzgss:
行了不,行了要给我加分
 
后退
顶部