CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  控件

MSComm控件怎么用?

楼主hzh_shat(水)2004-09-04 13:13:23 在 VB / 控件 提问

我在我的程序中用MSComm控件与一个仪表进行通讯,不知道怎么用,写了下面的一段代码,可是读不出数据:  
  Dim   ReadData   As   String  
  Dim   InData   As   String  
   
  Private   Sub   Command1_Click()  
          MSComm1.CommPort   =   2  
          MSComm1.Settings   =   "4800,n,8,1"  
          MSComm1.PortOpen   =   True  
           
          MSComm1.InBufferCount   =   0  
  '         MSComm1.Output   =   ReadData  
          Do  
          Loop   Until   MSComm1.InBufferCount   >=   10  
          InData   =   MSComm1.Input  
          Text1.Text   =   InData  
  End   Sub  
  这个仪表是以固定的波特率采集数据,并在采集完成之后以只讲的方式向外发送数据的.  
   
  问题:  
  我用单步的方法,看MSComm1.Input,可是一直都是空的  
   
  请问如何写才能实现最简单的读出数据?  
   
  谢谢! 问题点数:0、回复次数:7Top

1 楼jack20042005()回复于 2004-09-04 14:12:33 得分 0

 
  帮你顶一下  
   
  我很感兴趣   也要学   我看到有的书上用psis(好像是这么写的)仿真器来仿真电脑串口通信  
  我是自己学   还是新手   对单片机还不了解    
   
  考虑到价格和功能因素   请问采用哪种型号的仿真测试的产品   搂主能帮我推荐一下么Top

2 楼lele2002(拒绝网恋)回复于 2004-09-04 14:24:11 得分 0

仪器是发送回来字符串,还是二进制数?  
  Top

3 楼alexmayer(小豹)回复于 2004-09-04 14:35:54 得分 0

1、每次点击按钮都要打开Comm2?又没有关闭,多次点击,岂不出错!  
   
  应该在程序初始化时,根据配置文件,打开串口。  
   
  2、用这个方法等待:  
          Do  
          Loop   Until   MSComm1.InBufferCount   >=   10  
  长期没有数据传入,你的界面不就死在这儿啦,对其他操作无法响应!加上DoEvent吧!  
   
   
  Top

4 楼jack20042005()回复于 2004-09-05 22:52:17 得分 0

都应该可以把  
  当然不能兼备   就是字符串了    
  我是想做和单片机之间的通讯仿真的Top

5 楼lovebeethoven(小佛-寻找幸福)回复于 2004-09-06 17:04:31 得分 0

我是这么用的,发送和接收都按字节  
          comm.InputMode   =   comInputModeBinary           '用二进制  
          comm.InputLen   =   1         '读1字节  
  其它设置如楼主  
  这是一个接受过程,在模块中  
  Public   Sub   RFreceive(bb()   As   Byte,   MSComm1   As   MSComm,   dLen   As   Integer)  
  'bb()为接收的数组,iLen为数据长度  
  On   Error   GoTo   errh  
          Dim   bufin()   As   Byte  
          dLen   =   0  
          i   =   1  
          debugSS   =   ""         '调试用字符串  
          Do   While   MSComm1.InBufferCount   >   0  
                  bufin   =   MSComm1.Input  
                  bb(i)   =   bufin(0)  
                  debugSS   =   debugSS   &   "   "   &   Hex(bufin(0))   '调试信息,即返回的数据信息  
                  i   =   i   +   1  
          Loop  
          dLen   =   i   -   1  
  '         MsgBox   debugSS  
          Exit   Sub  
  errh:  
          MsgBox   "接收过程错误:"   &   Err.Description  
  End   SubTop

6 楼lovebeethoven(小佛-寻找幸福)回复于 2004-09-06 17:11:11 得分 0

接收可以用2种方式,  
  一种是你自己判断时间去接收,一种是用串口空间的ONCOMM事件  
  第一种如楼主所写,但要加入DOEVENTS  
  DO  
      DOEVENTS  
  LOOP   UNTIL...  
  第二种需要设置,MSCOMM的RTHRESHOLD属性,即在串口收到多少个字节数据时触发事件,0为禁止这项功能,1   为每收到一字节就触发  
  Top

7 楼caojinrong(小曹)回复于 2004-09-09 12:42:22 得分 0

波特率对否?Top

相关问题

  • MSComm控件到底怎么用
  • mscomm控件怎么用啊,msdn里的帮助都是vb的.
  • MSComm控件的使用
  • 如何使用 mscomm 控件?!
  • 用vc开发基于mfc的activex控件时,怎么样再使用一个别的activex控件,比如mscomm控件
  • 用MSComm控件怎么实现double型数组的串口通信?
  • C++Builder用MSCOMM控件报找不到许可信息!怎么解决?
  • 求mscomm控件
  • 用inno setup制作含有mscomm控件程序该怎么注册mscomm控件,或是用其他什么程序制作安装程序!
  • 再提一问,关于MScomm控件: 在使用MScomm控件时,怎么判断,所选择的串口已被其它程序使用?谢谢!!

关键词

  • 数据
  • mscomm
  • bufin
  • debugss
  • dlen
  • inbuffercount
  • 接收
  • 串口
  • 仿真
  • comm

得分解答快速导航

  • 帖主:hzh_shat

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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