CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

关于MSComm控件的串口数据接收问题

楼主windgolly(超级菜鸟系列篇)2001-10-29 17:15:27 在 C++ Builder / 基础类 提问

为何我使用MSComm控件接收串口数据时,接收的数据分两部份显示,  
  如:按的数据为:SN+00987098  
  则显示的数据为:第一次显示:SN+00987  
  第二次显示:098  
   
  我的MSComm中的Setting值为:9600,n,8,1  
  我不知是不是其中的显示位“8”有设置有问题,但当我改为9600,n,9,1时,则显示出错,也就最大只能为8,  
  我的设置哪儿有问题? 问题点数:10、回复次数:7Top

1 楼ygd(人生短暂,及时行乐。准备成熟中)回复于 2001-10-29 17:54:26 得分 1

用同步通信试试看Top

2 楼DoItFreely(Freely)回复于 2001-10-29 17:57:03 得分 1

没有任何错误,异步读写常被分成几段,所以,*不好玩*!Top

3 楼zhangyan_qd(doggyzone)回复于 2001-10-29 20:29:25 得分 1

和设置没有关系,把源程序多贴一点上来看看。Top

4 楼windgolly(超级菜鸟系列篇)回复于 2001-10-30 10:58:57 得分 0

不好意思,我用的是BCB,所以以下是BCB代码:  
   
  A:我直接将一个TMSComm控件“拉”到窗口中,属性值全部使用默认值。如:  
  CommPort   =   1;  
  DTREnable   =   true;  
  EOFEnable   =   false;  
  Handshaking   =   0;  
  InBufferSize   =   0;  
  InputLen   =   0;  
  InputMode   =   0;  
  OutBufferSize   =   512;  
  ParityReplace   =   ?;  
  RThreshold   =   0;  
  RTSEnable   =   false;  
  Settings   =   9600,n,8,1;  
  SThreshold   =   0;  
   
  B:再在TMSComm控件的OnComm事件中编写如下代码:  
  System::OleVariant   RxBuff;//定义接收缓冲。  
  AnsiString   INDATA;  
  RxBuff=Comm1->Input;//读取数据  
  INDATA=Trim(VarToStr((Variant   &)RxBuff));//->字符串  
  Panel1->Caption=INDATA;//最后将读取的数据显示在窗口的Panel1中。Top

5 楼SFirefox(火狐狸)回复于 2001-11-02 09:07:51 得分 4

读取数据时不可能一次性全部读入,不然做串口通讯时,也不会用到什么“包长”,“起始位”,“终止位”的。8是通讯时的数据位,范围5-8。以上问题最简单的解决方法是:接受数据前,根据接收数据的长短给个延时。要做得更好,你最好看点串口的书。Top

6 楼Hoarfrost(霜)回复于 2001-11-08 13:01:04 得分 2

同意UP,你可以在读数据之前Sleep(ms)一下,这样可以保证数据完整性!Top

7 楼lhuaf_26(lhuaf_26)回复于 2001-11-08 21:34:45 得分 1

是否是在串口的初始化有问题,  
  用这个不妨试一下  
  if(!star)  
  {  
  MSComm1->PortOpen=true;    
  }  
  MSComm1->Settings="9600,n,8,1";  
  Top

相关问题

  • MScomm串口控件问题?
  • 如何以十进制(十六进制也可)数接收串口的数据。我使用MSCOMM控件。
  • 用MSCOMM控件能向串口发送和接收十进制(十六进制)数吗?
  • 使用MSComm控件来串口通讯,关于接收多字节时候会截断的问题
  • 为什么mscomm控件的oncomm事件无法触发?我的串口无法接收到数据.
  • 为什么mscomm控件的oncomm事件无法触发?我的串口无法接收到数据.
  • 使用MSCOMM控件,这段 串口接收数据的代码 如何写? 可能设计到延时.
  • 利用mscomm控件接收串口数据,接受的是‘?’怎么读出卡号(形如S010002597416E)?
  • 关于串口通讯控件(Mscomm)
  • mscomm控件读写串口的问题

关键词

  • 数据
  • 控件
  • 串口
  • mscomm
  • rxbuff
  • indata
  • 显示
  • 读取
  • 接收
  • 问题

得分解答快速导航

  • 帖主:windgolly
  • ygd
  • DoItFreely
  • zhangyan_qd
  • SFirefox
  • Hoarfrost
  • lhuaf_26

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo