我用超级终端读取仪器过的数据正常,但用VB写的程序却读取的是乱码?请大家帮帮忙啦,我星期一要交差啊。
With MSComm1
    If .PortOpen = False Then
        .Settings = "4800,N,8,1"
        .CommPort = iPort
        .InputLen = 0
        Timer2.Interval = ChkTime
        .InputMode = comInputModeText
        Timer2.Enabled = True
        .PortOpen = True
    End If
End With
并在timer2事件中读取com口中的内容,显示在文本框中(显示为乱码),请问应该怎么写才对啊

解决方案 »

  1.   

    你可以通过OnComm 事件试试看,不要用Timer,OnComm 事件在MSDN中有例子。
      

  2.   

    这是我的一个接收报警设备的程序。给你作参考
    dim dummy 
    dim Comminput1, Comminput2, Comminput3, Comminput4, Comminput5, Comminput6, Comminput7, Cominput8 As Integer '从串口受到的命令的分解数据
    Private Sub Form_Load()
    call read_arm
    end subSub Read_Arm()
     ll:
      Do
        dummy = DoEvents()
      Loop Until form1.Comm1.InBufferCount > 0
        I_Inter = 0
        Comminput = Comm1.Input
        If UBound(Comminput) < 6 Then GoTo ll
        Comminput1 = Comminput(0)       '第一个字节,标准为&HFE
        Comminput2 = Comminput(1)       '第二个字节,&H3为报警器,&H4为解码器
        Comminput3 = Comminput(2)       '第三个字节,设备地址号高位
        Comminput4 = Comminput(3)       '第四个字节,设备地址号低位
        Comminput5 = Comminput(4)       '第五个字节,回传参数
        Comminput6 = Comminput(5)       '第六个字节,键盘ID
        Comminput7 = Comminput(6)       '第七个字节,校验码
    form1.text1.text=comminput1+" "+comminput2+" "+comminput3+" "+comminput4+" "+comminput5+" "+comminput6+" "+comminput7
      

  3.   

    dim Comminput() As Byte            '从串口受到的命令
      

  4.   

    我用下面的程序获得数据
    Private Sub MSComm2_OnComm()
        Dim str As String
        Select Case MSComm2.CommEvent
          Case comEvReceive
          MSComm2.InputMode = comInputModeBinary
          Dim i, j As Integer
          j = MSComm2.InBufferCount
          ReDim buffer(0 To j - 1)
          buffer = MSComm2.Input
          For i = 0 To j - 1
           If startcommunication = 1 Then
            buffertem(buffercount) = buffer(i)
            buffercount = buffercount + 1
           End If
          Next i
        End Select
    End Sub
    其中mscomm控件的inbuffersize设置为1,outbuffersize设置为1,RThreshold为1
    我的软件用这个通讯很好用
      

  5.   

    轮讯和事件触发都可以,就是不要在Timer中做,最低1毫秒的时间不太够用。
      

  6.   

    你的波特率4800相对比较低,用TIMER可能Timer2.Interval 就要设长一点了。建议用OnComm 事件。