jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1724回复:9

串口通讯的奇怪问题

楼主#
更多 发布于:2003-10-11 09:20
最近做了一个项目,需要用到串口通讯。项目完成后,发现了一个奇怪的问题。具体介绍如下:
  PC机和红外设备利用串口进行通讯,在正确通讯大约180次左右,通讯就频频发生错误。但是将计算机重新启动后,问题就可以解决。但在正常通讯180次后,问题会再次发生。重启动计算机后,问题可以解决。这种现象的原因会是什么呢?愿听您的建议,谢谢!

  
jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-12 10:13
怎么没有人接招啊?顶一下!
link_bridge
驱动巨牛
驱动巨牛
  • 注册日期2002-11-28
  • 最后登录2011-05-15
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望13点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-13 19:09
十有八九片子的问题,换种型号的,或者换另外一片试试看!
guowf
驱动牛犊
驱动牛犊
  • 注册日期2002-12-15
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-13 23:15
来,我给你答复一下,看你满意不满意。
主要是频率不同步的问题。你可以看看晶振是否有问题。

解释:假如计算机是9600bps,而设备是9601bps,由于计算机有容忍度,他在一个范围内可正常接受。由于是串行数据,他的偏差可以往后增加。
发送第一个偏差1,发送第二个时,这个时候偏差2,依次类推,当偏差达到一定程度,会造成数据接收失败。

我觉得不用启动计算机,可以重启红外设备。
yunri_2
驱动中牛
驱动中牛
  • 注册日期2002-08-16
  • 最后登录2011-09-10
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-14 08:38
来,我给你答复一下,看你满意不满意。
主要是频率不同步的问题。你可以看看晶振是否有问题。

解释:假如计算机是9600bps,而设备是9601bps,由于计算机有容忍度,他在一个范围内可正常接受。由于是串行数据,他的偏差可以往后增加。
发送第一个偏差1,发送第二个时,这个时候偏差2,依次类推,当偏差达到一定程度,会造成数据接收失败。

我觉得不用启动计算机,可以重启红外设备。


有理,同意。
计算机的波特率是很准的,所以最好看看你的下位机波特率是不是准!
曾经 所以 然后 ~!@ 完 @!~
jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-10-14 11:15
谢谢大家的提醒,我再试验一下。大家准备好,马上给分了!
jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-10-14 18:42
感谢大家对论坛的支持!
PandaFeng
驱动牛犊
驱动牛犊
  • 注册日期2002-10-09
  • 最后登录2004-09-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-10-15 06:40
来,我给你答复一下,看你满意不满意。
主要是频率不同步的问题。你可以看看晶振是否有问题。

解释:假如计算机是9600bps,而设备是9601bps,由于计算机有容忍度,他在一个范围内可正常接受。由于是串行数据,他的偏差可以往后增加。
发送第一个偏差1,发送第二个时,这个时候偏差2,依次类推,当偏差达到一定程度,会造成数据接收失败。

我觉得不用启动计算机,可以重启红外设备。


异步串行通讯是靠起此位同步接收时钟。
根据搂主说的现象,不认同您的解释。
jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-10-20 09:59
呵呵,问题解决。但原因不是串口的问题,是我的vxd影响了串口。
谢谢大家的参与讨论。
  论坛是个好地方,个人可以提出问题,大家一起解决问题。和大家共同进步!
wddjj
驱动牛犊
驱动牛犊
  • 注册日期2002-08-01
  • 最后登录2005-11-15
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-10-21 20:33
胡扯! 什么叫异步串口, 每个字节内同步!
一般是什么BUFFER定义等问题 。
我主要做硬件开发! 包括PC板卡和嵌入系统,最近完成USB HOST和MSP430的项目,对ARM感兴趣。 多关照!
游客

返回顶部