资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

为何我的串口通讯在发送数据,而OnComm事件却没有发生!

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

我将我的mode上电后就会有很多数据返回,在串口监测工具都看得很清楚的,但是我的OnComm   怎么会没有反映?主要是什么原因啊?  
  Private   Sub   MSComm1_OnComm()   串口中断  
  On   Error   Resume   Next  
  Static   bFlag   As   Boolean  
  Static   Xbyte   As   Long  
  Select   Case   MSComm1.CommEvent       选择事件  
  Case   comEvReceive   接收到字符  
   
                  Dim   InByte()   As   Byte   定义一个二进制指针放接收到的数据  
                  InByte   =   MSComm1.Input   数据转移到指针  
                  Dim   temp   As   Long  
                  Dim   temp1   As   Long  
                  Dim   temp2   As   Long  
                  Dim   j   As   Long  
               
                    For   j   =   0   To   UBound(InByte)   循环到指针上标  
   
  。  
  。  
  。  
  。  
 

网友回答:

发表者:tztz520

要选设置串口.  
  Private   Sub   Form_Load()  
  MSComm1.InBufferSize   =   5120  
  MSComm1.OutBufferSize   =   2560  
  MSComm1.CommPort   =   1  
  设置波特率为4800,没有奇偶校验,8位数据位,1位结束位  
  MSComm1.Settings   =   "4800,N,8,1"  
  读取全部的输入缓冲区  
  MSComm1.InputLen   =   0  
  MSComm1.InputMode   =   comInputModeText  
  端口打开  
  MSComm1.PortOpen   =   True  
  MSComm1.RThreshold   =   1   这个属性设定当收到多少个字符时触发   "MSComm1_OnComm"   事件.  
  MSComm1.SThreshold   =   1  
  End   Sub  
   
  接收信息就在MSComm1中的OnComm事件.  
  Private   Sub   MSComm1_OnComm()  
  Dim   ST   As   String  
  ST   =   MSComm1.Input接收信息  
  debug.print   st将接收到的信息打印出来  
  End   Sub  
 

发表者:featherfly

是不是通讯端口号、波特率、奇偶校验、数据位、停止位设置不正确?

发表者:lyxhappy

设置以下串口的属性:  
  CommPort   设置并返回通讯端口号。    
  Settings   以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。    
  PortOpen   设置并返回通讯端口的状态。也可以打开和关闭端口。    
  Input         从接收缓冲区返回和删除字符。    
  Output       向传输缓冲区写一个字符串。    
 

发表者:tztz520

MSComm1.Output   =   "at+csq"   &   vbcrlf

发表者:jam021

关注,帮你顶!

发表者:efengxu

MSComm1.RThreshold   =   1  
   
  你一定这个地方设置的是     0       ,这个就不会响应oncomm事件,一定要设置值

发表者:Winters_lee

MSComm1.RThreshold   不一定要设置成1啊,那要看你的输入缓冲有多大,设成1是只要有东西进来就触发一次

发表者:efengxu

当然不一定要设置1,我的意思是要设置值,2,3,等都可以,意思是设置多少,就是接收到多少促发oncomm事件

发表者:tobetter

应该是读取之后没有清空缓冲区。至于RThreshold的值不一定必须为1,可以根据自己的条件和实际情况进行设置,不过一般设置为1,便于当有数据就产生消息

发表者:Wenking003

1、这部分信息是在MSComm1.Output   =   "at+csq"   &   Chr(13)   &   Chr(10)产生的吗?  
  at+csq  
  +CSQ:   20,99  
  OK  
  2、从现象看:你直接通过键盘输入送到串口与通过  
  MSComm1.Output   =   "at+csq"   &   Chr(13)   &   Chr(10)发送到串口,  
  有一个差别,就是前者的发送是间歇性的,比较慢,而后者是连续性的,比较快。  
  是否下位机的处理速度比较慢?

发表者:Wenking003

如果是下位机的处理速度比较慢,可在发送时加入等待,试试如下:  
  Dim   Str   As   String  
  Dim   I   As   Integer  
  Dim   J   As   Integer  
  Str   =   "at+csq"   &   Chr(13)   &   Chr(10)  
  For   I   =   1   To   Len(Str)  
      MSComm1.Output   =   Mid(Str,   I,   1)  
      For   J   =   0   To   3           (调整这里的等待时间)  
          DoEvents  
      Next   J  
  Next   I  
 

发表者:ddy0204

还是没用啊,  
  Dim   a  
  a   =   MSComm1.Input  
   
  If   Len(a)   >   0   Then  
  Text1.Text   =   Text1.Text   &   vbCrLf   &   StrConv(a,   vbUnicode)   &   vbCrLf  
  Else  
  Text1.Text   =   Text1.Text   &   vbCrLf   &   "串口没有回应"  
  End   If  
  为什么总是出现   "串口没有回应"啊?  
  我监测到a   总是空的,是不是和我有设置OnComm有关啊?我RThreshold   为   1。  
 


 

 
热门推荐笔记本: 清华紫光笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved