我在我的程序中用MSComm控件与一个仪表进行通讯,不知道怎么用,写了下面的一段代码,可是读不出数据:
Dim ReadData As String
Dim InData As StringPrivate 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,可是一直都是空的请问如何写才能实现最简单的读出数据?谢谢!

解决方案 »

  1.   


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

  2.   

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

  3.   

    我是这么用的,发送和接收都按字节
        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 Sub
      

  4.   

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