4).串行口命令码:本仪器作为从机与主机通信,接收命令后执行相应操作,命令码为单字节。
2DH:复位仪器
20H:向主机回送所有参数数据(V,A,W,PF,HZ),每个参数占5个字节,共5*5=25个字节。数据格式见串行数据结构
(5)。数据结构
本仪器在接到命令码后,回送相应的参数数据,每个参数由5个字节组成前4字节表示尾数,后1字节表示阶码,数据格式采用科学记忆法即小数点在第一个bcd码之后,其结构如下:
尾数(4字节):小数点;数码
阶码(1字节):数符;阶符;阶码
阶码最高为数符,次高位为阶码,(0代表下数,1代表负数),低6位为阶码值,范围为0~63H,例:
1.2345678*10^4其浮点数为12345.678,接收字节次序:78,56,34,12,04
-8.7654321*10^-2其浮点数为0.087654321,接收字节次序:21,43,65,87,12
上面是产品说明书上的内容,好多错误,我参照之后接收到了字符串,但是实在不知道怎样分析得到的数据,希望各位做过这个的能给个建议,源码最好,本人急用
这是我用加了hex函数接收到的字符串
405845CC28
202020A0E8
4040404028
E040404028
20E04040E8
不加也能收到,但是经常不完整,下面是一段
1685178344
1616160820
4016160820
1640160820
1616400844
谢谢各位帮忙,用的仪器是杭州威博的电参数测量仪,说明书好多错误,客服什么都不懂,大家以后不要用!请大家帮我分析一下数值,怎么搞?小弟先谢谢了。这个码实在不知道怎么转换成10进制的,能看懂的帮忙 啊 !
我把接收的源码也贴上
Private Sub MSComm1_OnComm()
    Dim Buffer() As Byte
    Dim str As String
    Dim i As Integer
    Select Case MSComm1.CommEvent
        Case 2
            Buffer = MSComm1.Input
        
            For i = 0 To UBound(Buffer)
          strRec = strRec & Right("0" $ Hex(Buffer(i), 2))
            Next i
            str = strRec
     End Select
    
End Sub
各位大侠,我的qq是503922432,如果有能帮助解决的,小弟感激不尽,主要是读上来的数据实在看不懂,不能显示,没办法解码,谢谢了

解决方案 »

  1.   

    double Convert_Data_PF100_PF300(int *in)
    {
    int *p;
    int i;
        double iinn[2], t;p=in+3;
    iinn[0]=(*p%16+(*p/16)*10)/10.0;
    p--;
    iinn[0]=iinn[0]+(*p%16+(*p/16)*10)/1000.0;
    p--;
    iinn[0]=iinn[0]+(*p%16+(*p/16)*10)/100000.0;
    p=in+4;
    i=*p;
    if (i>=192)
    t=-iinn[0]*pow(10,192-i);
    else if (i>=128) t=-iinn[0]*pow(10,i-128);
             else if (i>=64) t=iinn[0]*pow(10,64-i);
                      else t=iinn[0]*pow(10,i);
    return(t);
    }
    这个是那家公司给我的处理程序,但是我取得的数据按照这个分析也是不对,谁能帮我转成vb的啊,还有,我读取到的数据有什么错误呢,各位高手帮忙想一下,那家公司的工程师也不知道什么数字算是对的,汗啊