我用超级终端已经读了数据过来,设置为"1200,N,8,1",波特率为1200,无奇偶,8位数据位,1位停止位.读的数据为+00006001D,此时仪表显示为60Kg;当仪表显示为60140Kg时,仪表读的数据为+06014001A;(说明,+号前面有一个特殊字符,最后也有一个特殊字符,前后两个字符不同,而每次数据这两个字符分别都一样),当显示为零公斤时,读的数据为+00000001B,前后分别有一特殊字符.说明书中有仪表的说明如下:所有数据均为ASCII码,每组数据由10位组成,第1位为起始位,第10位为停止位,中间8位为数据位,通讯方式为连续方式;所传数据为仪表显示的当前称量.每帧数据由12组数据组成.格式如下:
第X字节    内容及注解
1         02(XON)      开始
2         +或-         符号位
3        称量数据        高位
          称量数据
           称量数据8        称量数据        低位
9        小数点位数      从右到左(0~4)
10       异或校验        高四位
11       异或校验        低四位
12       03(XOFF)      结束
异或=2.........9请问我如何将数据读进TEXT控件中并可以保存

解决方案 »

  1.   

    Option Explicit
        Dim strData As String
    Private Sub Form_Load()
        MSComm1.Settings = "1200,N,8,1"
        MSComm1.RThreshold = 1
        MSComm1.InputMode = comInputModeText
        MSComm1.PortOpen = True
    End SubPrivate Sub mscomm1_OnComm()
        Dim strRe As String
        Select Case Me.MSComm1.CommEvent
            Case comEvReceive
                strRe = Me.MSComm1.Input
                strData = strData & strRe
                Dim xsws As Integer
                '未考虑第10及11字节异或校验
                If Mid(strData, 1, 1) = Chr(2) And Mid(strData, 12, 1) = Chr(3) Then '数据判断
                    '请加异或校验代码
                    xsws = Val(Mid(strData, 9, 1)) '取小数位数
                    Text1 = Val(Mid(strData, 2, 10)) / (10 ^ xsws) '输出到文本框
                    Open "c:\sj.txt" For Append As #1
                        Print #1, Date$, Time$, Text1
                    Close
                    strData = ""
                End If
        End Select
    End Sub
      

  2.   

    Private Sub Form_Load()
        MSComm1.Settings = "1200,N,8,1"
        MSComm1.RThreshold = 1
        MSComm1.InputMode = comInputModeText
        MSComm1.PortOpen = True
    End SubPrivate Sub mscomm1_OnComm()
        Dim strRe As String
        Select Case Me.MSComm1.CommEvent
            Case comEvReceive
                strRe = Me.MSComm1.Input
                strData = strData & strRe
                Dim xsws As Integer
                Dim fh As String
                '未考虑第10及11字节异或校验
                If Mid(strData, 1, 1) = Chr(2) And Mid(strData, 12, 1) = Chr(3) Then '数据判断
                    '请加异或校验代码
                    fh = Mid(strData, 2, 1)
                    xsws = Val(Mid(strData, 9, 1)) '取小数位数
                    Text1 = Val(Mid(strData, 3, 6)) / (10 ^ xsws) '输出到文本框
                    Open "c:\sj.txt" For Append As #1
                        Print #1, Date$, Time$, fh & Text1
                    Close
                    strData = ""
                End If
        End Select
    End Sub
      

  3.   

    楼上两位基本都正确,自己在根据实际情况进行以下调试就可以了。 
    大家帮忙点击一下下面的两个网站:谢谢啊! 
    http://hi.henhaoji.com/index.aspx?id=39192 
    http://hi.henhaoji.com/index.aspx?id=39474