使用的电子秤以连续方式按MCS-51下的方式1输出RS-232C信号,数据为ASCII码,共有16个帧,包括1个起始字符帧(02),2个状态椟志帧,1个空格字符,6个显示数据帧和6个皮重数据帧,每一个帧由10位组成,每一位是起始位“0”,第十位是停止位“1”,中间8个数据位(从低到高)的格式如下:

起始位       D0   D1   D2   D3    D4  D5   D6   D7    停止位
目前了解该电子秤不提供dll驱动请问如何实时接收到电子秤的发馈给计算机的质量信息呢,如何将接收到的信号转换为质量(kg)谢谢!!!

解决方案 »

  1.   

    别跪了,我做过一个电子称的,你可以看看也许有用得着的。
    Option ExplicitPrivate strRecBuf As String
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Private Sub Form_Activate()
        'Me.Hide     '如果不想把这个小界面显示出来就留着这段,想显示就把最前面的'去掉
    End SubPrivate Sub Form_Load()
        If mscommWeight.PortOpen = True Then mscommWeight.PortOpen = False
            mscommWeight.CommPort = 1   '1表示COM1,如果要改成COM2就写2就行了
        If mscommWeight.PortOpen = False Then mscommWeight.PortOpen = True
        mscommWeight.Settings = "2400,n,8,1"
        mscommWeight.InputLen = 0
        mscommWeight.RThreshold = 1
        mscommWeight.InputMode = comInputModeText
    End Sub
    Private Sub mscommweight_OnComm()
        Select Case mscommWeight.CommEvent
            Case comEvReceive
                strRecBuf = strRecBuf & mscommWeight.Input
            Case Else
        End Select
        If InStr(strRecBuf, "g") Then’接收到最后一个字符
            lblWeight.Caption = Mid(strRecBuf, InStr(strRecBuf, ",") + 1, 10)
            strRecBuf = ""
        End If
        
    End SubPrivate Sub tmrOrderScan_Timer()‘这是向电子称发写信息(关机)。200ms的定时器,使用了DDE接收信息(lblSwitch)
        DoEvents
        Select Case lblSwitch.Caption
            Case "Action"
                tmrWeight.Enabled = False
                mscommWeight.Output = Chr(&H50) & Chr(&HD) & Chr(&HA)‘关机开机
                lblSwitch.Caption = ""
                Sleep 200
                tmrWeight.Enabled = True
            Case Else    End Select
    End SubPrivate Sub tmrWeight_Timer()’这是1000ms定时器,向电子称发读取命令,
        mscommWeight.Output = Chr(&H51) & Chr(&HD) & Chr(&HA)
    End Sub
      

  2.   

    这是沈阳的龙腾电子天平,接到其他的监控软件上去的,用了2个DDE控件,一个接收一个发送,可以实现开关机和读取质量,这种通讯很简单的,你只要处理好数据就可以了,看看它的数据格式就行,如果是IEEE的浮点数格式的小数的话,呵呵,那就比较辛苦了,楼主!
      

  3.   

    请问楼上的大哥,您是如何进行数据转换的呢?目前我写程序使用的电子秤就提供如下这些说明
    那如何进行数据转换呢?
    使用的电子秤以连续方式按MCS-51下的方式1输出RS-232C信号,数据为ASCII码,共有16个帧,包括1个起始字符帧(02),2个状态椟志帧,1个空格字符,6个显示数据帧和6个皮重数据帧,每一个帧由10位组成,每一位是起始位“0”,第十位是停止位“1”,中间8个数据位(从低到高)的格式如下:

    起始位       D0   D1   D2   D3    D4  D5   D6   D7    停止位
      

  4.   

    在这里加这个:
    Private Sub mscommweight_OnComm()
        Select Case mscommWeight.CommEvent
            Case comEvReceive
                strRecBuf = strRecBuf & mscommWeight.Input
            Case Else
        End Select
        If InStr(strRecBuf, "g") Then’接收到最后一个字符
            lblWeight.Caption = Mid(strRecBuf, InStr(strRecBuf, ",") + 1, 10)
            Msgbox strRecbuf ‘加这个××××××
            strRecBuf = ""
        End If
        
    End Sub