02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D
02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D
02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D
官方文档给出的协议格式如下:
请问我代码该如何校验,获取小数点位置,本人小白(刚接触C#没多久),还请大神给思路,或者贴一下代码,万分感激。
21 个解决方案
#2
31是状态A,转换成二进制是00110001,看前三位来确定你的小数点位置
#3
多谢大神,请问能在给点提示或者示例代码一类的吗,本人小白一只,,到现在只是调通了与地磅的通信
#4
02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D
这段数据02是起始符,固定的
31 30 20对应状态字ABC,从状态字A的二进制码前三位来读取你的小数位,同理利用状态字B的二进制位来读其他数据。你的开发文档里很清楚
两段20 20 20 20 30是你要读的数据,具体怎么定义的要自己去破解
0D为校验和
我说的还不够明白么
这段数据02是起始符,固定的
31 30 20对应状态字ABC,从状态字A的二进制码前三位来读取你的小数位,同理利用状态字B的二进制位来读其他数据。你的开发文档里很清楚
两段20 20 20 20 30是你要读的数据,具体怎么定义的要自己去破解
0D为校验和
我说的还不够明白么
#5
这里有点错误 数据X20 20 20 20 20 20 和数据Y 30 20 20 20 20 20是不同的皮重毛重我不清楚,看你怎么理解了
#6
协议中数据长18字节
而你给的数据长 17字节(02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D)
显然没有校验和(协议中也说校验和是可选的)
第二个字节(31)是状态字A 前3个二进制位表示小数点位置 00110001
但协议说 00110 001 bit5恒为1 bit5恒为0,显然你的不是
可见你收到的数据是错误的
而你给的数据长 17字节(02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D)
显然没有校验和(协议中也说校验和是可选的)
第二个字节(31)是状态字A 前3个二进制位表示小数点位置 00110001
但协议说 00110 001 bit5恒为1 bit5恒为0,显然你的不是
可见你收到的数据是错误的
#7
补充了不少我的错误,但状态A这里00110001这是从低位开始读的,前三位是100
#8
是吗?你确定是倒过来读的?
#9
难道不是么,bit0难道不是最低位,我接触单片机比较多,I/O寄存器中就是这样的
#10
接收的数据明显不对,地磅的设置有问题。
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
#11
呃,你这是自己解析后的数据吧,20 20 20 20 30这段数据怎么解
#12
串口发送的都是ASCII , 查看ASCII 对照表,20是空格,30是0,31是1。
你现在配置不成功,所以接收的都是20 20 20 20 30这样的数据。
我当初花了1个月研究这个呢,当时手边没有电子秤,都是远程协助人家开发的。
#13
接收的数据明显不对,地磅的设置有问题。
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
呃,你这是自己解析后的数据吧,20 20 20 20 30这段数据怎么解
串口发送的都是ASCII , 查看ASCII 对照表,20是空格,30是0,31是1。
你现在配置不成功,所以接收的都是20 20 20 20 30这样的数据。
我当初花了1个月研究这个呢,当时手边没有电子秤,都是远程协助人家开发的。
那就是说 我现在接收到的数据就是有问题的了? 那设置正确的情况下返回的该是什么呢?
#14
接收的数据明显不对,地磅的设置有问题。
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
呃,你这是自己解析后的数据吧,20 20 20 20 30这段数据怎么解
串口发送的都是ASCII , 查看ASCII 对照表,20是空格,30是0,31是1。
你现在配置不成功,所以接收的都是20 20 20 20 30这样的数据。
我当初花了1个月研究这个呢,当时手边没有电子秤,都是远程协助人家开发的。
那就是说 我现在接收到的数据就是有问题的了? 那设置正确的情况下返回的该是什么呢?
=00.0000
现在的电子秤,如 上海耀华,一些知名的品牌,都是这样的数据格式。
#15
有趣,楼主你查下ASCII码表,意思是00.0000对应的数据是30 30 30 30 30
#16
接收的数据明显不对,地磅的设置有问题。
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
呃,你这是自己解析后的数据吧,20 20 20 20 30这段数据怎么解
串口发送的都是ASCII , 查看ASCII 对照表,20是空格,30是0,31是1。
你现在配置不成功,所以接收的都是20 20 20 20 30这样的数据。
我当初花了1个月研究这个呢,当时手边没有电子秤,都是远程协助人家开发的。
那就是说 我现在接收到的数据就是有问题的了? 那设置正确的情况下返回的该是什么呢?
=00.0000
现在的电子秤,如 上海耀华,一些知名的品牌,都是这样的数据格式。
我这个是托利多T800,100吨地磅。
#17
有趣,楼主你查下ASCII码表,意思是00.0000对应的数据是30 30 30 30 30
按照官方给的文档,我不应该是根据状态码获取小数点位置么,他会直接在数据位上给我小数点? 不还是需要解析么。
#18
有趣,楼主你查下ASCII码表,意思是00.0000对应的数据是30 30 30 30 30
按照官方给的文档,我不应该是根据状态码获取小数点位置么,他会直接在数据位上给我小数点? 不还是需要解析么。
是啊,我只是给你说明下这段数据怎么解,小数点还是看状态字A
#19
用串口调试伴侣 调试下,不称和称重状态,对比一下就出来了。
如果一直是 02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D ,肯定就错了。
现在的电子秤都不用做太多的数据解析,发送的时候16进制,带有分割符=,serialPort1_DataReceived 接收到的就是已经解析好的
00.0000,然后反转数据就得到结果了。
如果一直是 02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D ,肯定就错了。
现在的电子秤都不用做太多的数据解析,发送的时候16进制,带有分割符=,serialPort1_DataReceived 接收到的就是已经解析好的
00.0000,然后反转数据就得到结果了。
#20
用串口调试伴侣 调试下,不称和称重状态,对比一下就出来了。
如果一直是 02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D ,肯定就错了。
现在的电子秤都不用做太多的数据解析,发送的时候16进制,带有分割符=,serialPort1_DataReceived 接收到的就是已经解析好的
00.0000,然后反转数据就得到结果了。
恩,这个东西是需要多测试,,谢了。
#21
重量数据转成Ascii码,再看下。20是空格,30是0。给出的重量数据的毛重和净重都是0。
#1
#2
31是状态A,转换成二进制是00110001,看前三位来确定你的小数点位置
#3
31是状态A,转换成二进制是00110001,看前三位来确定你的小数点位置
多谢大神,请问能在给点提示或者示例代码一类的吗,本人小白一只,,到现在只是调通了与地磅的通信
#4
02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D
这段数据02是起始符,固定的
31 30 20对应状态字ABC,从状态字A的二进制码前三位来读取你的小数位,同理利用状态字B的二进制位来读其他数据。你的开发文档里很清楚
两段20 20 20 20 30是你要读的数据,具体怎么定义的要自己去破解
0D为校验和
我说的还不够明白么
这段数据02是起始符,固定的
31 30 20对应状态字ABC,从状态字A的二进制码前三位来读取你的小数位,同理利用状态字B的二进制位来读其他数据。你的开发文档里很清楚
两段20 20 20 20 30是你要读的数据,具体怎么定义的要自己去破解
0D为校验和
我说的还不够明白么
#5
02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D
这段数据02是起始符,固定的
31 30 20对应状态字ABC,从状态字A的二进制码前三位来读取你的小数位,同理利用状态字B的二进制位来读其他数据。你的开发文档里很清楚
两段20 20 20 20 30是你要读的数据,具体怎么定义的要自己去破解
0D为校验和
我说的还不够明白么
这里有点错误 数据X20 20 20 20 20 20 和数据Y 30 20 20 20 20 20是不同的皮重毛重我不清楚,看你怎么理解了
#6
协议中数据长18字节
而你给的数据长 17字节(02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D)
显然没有校验和(协议中也说校验和是可选的)
第二个字节(31)是状态字A 前3个二进制位表示小数点位置 00110001
但协议说 00110 001 bit5恒为1 bit5恒为0,显然你的不是
可见你收到的数据是错误的
而你给的数据长 17字节(02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D)
显然没有校验和(协议中也说校验和是可选的)
第二个字节(31)是状态字A 前3个二进制位表示小数点位置 00110001
但协议说 00110 001 bit5恒为1 bit5恒为0,显然你的不是
可见你收到的数据是错误的
#7
协议中数据长18字节
而你给的数据长 17字节(02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D)
显然没有校验和(协议中也说校验和是可选的)
第二个字节(31)是状态字A 前3个二进制位表示小数点位置 00110001
但协议说 00110 001 bit5恒为1 bit5恒为0,显然你的不是
可见你收到的数据是错误的
补充了不少我的错误,但状态A这里00110001这是从低位开始读的,前三位是100
#8
是吗?你确定是倒过来读的?
#9
难道不是么,bit0难道不是最低位,我接触单片机比较多,I/O寄存器中就是这样的
#10
接收的数据明显不对,地磅的设置有问题。
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
#11
接收的数据明显不对,地磅的设置有问题。
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
呃,你这是自己解析后的数据吧,20 20 20 20 30这段数据怎么解
#12
接收的数据明显不对,地磅的设置有问题。
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
呃,你这是自己解析后的数据吧,20 20 20 20 30这段数据怎么解
串口发送的都是ASCII , 查看ASCII 对照表,20是空格,30是0,31是1。
你现在配置不成功,所以接收的都是20 20 20 20 30这样的数据。
我当初花了1个月研究这个呢,当时手边没有电子秤,都是远程协助人家开发的。
#13
接收的数据明显不对,地磅的设置有问题。
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
呃,你这是自己解析后的数据吧,20 20 20 20 30这段数据怎么解
串口发送的都是ASCII , 查看ASCII 对照表,20是空格,30是0,31是1。
你现在配置不成功,所以接收的都是20 20 20 20 30这样的数据。
我当初花了1个月研究这个呢,当时手边没有电子秤,都是远程协助人家开发的。
那就是说 我现在接收到的数据就是有问题的了? 那设置正确的情况下返回的该是什么呢?
#14
接收的数据明显不对,地磅的设置有问题。
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
呃,你这是自己解析后的数据吧,20 20 20 20 30这段数据怎么解
串口发送的都是ASCII , 查看ASCII 对照表,20是空格,30是0,31是1。
你现在配置不成功,所以接收的都是20 20 20 20 30这样的数据。
我当初花了1个月研究这个呢,当时手边没有电子秤,都是远程协助人家开发的。
那就是说 我现在接收到的数据就是有问题的了? 那设置正确的情况下返回的该是什么呢?
=00.0000
现在的电子秤,如 上海耀华,一些知名的品牌,都是这样的数据格式。
#15
有趣,楼主你查下ASCII码表,意思是00.0000对应的数据是30 30 30 30 30
#16
接收的数据明显不对,地磅的设置有问题。
一般设置成功的数据都是这样,如8.62 Kg的数据格式:
=26.8000=26.8000=26.8000=26.8000
如果没秤东西,串口连接成功,则接收的数据一般是 =00.0000
呃,你这是自己解析后的数据吧,20 20 20 20 30这段数据怎么解
串口发送的都是ASCII , 查看ASCII 对照表,20是空格,30是0,31是1。
你现在配置不成功,所以接收的都是20 20 20 20 30这样的数据。
我当初花了1个月研究这个呢,当时手边没有电子秤,都是远程协助人家开发的。
那就是说 我现在接收到的数据就是有问题的了? 那设置正确的情况下返回的该是什么呢?
=00.0000
现在的电子秤,如 上海耀华,一些知名的品牌,都是这样的数据格式。
我这个是托利多T800,100吨地磅。
#17
有趣,楼主你查下ASCII码表,意思是00.0000对应的数据是30 30 30 30 30
按照官方给的文档,我不应该是根据状态码获取小数点位置么,他会直接在数据位上给我小数点? 不还是需要解析么。
#18
有趣,楼主你查下ASCII码表,意思是00.0000对应的数据是30 30 30 30 30
按照官方给的文档,我不应该是根据状态码获取小数点位置么,他会直接在数据位上给我小数点? 不还是需要解析么。
是啊,我只是给你说明下这段数据怎么解,小数点还是看状态字A
#19
用串口调试伴侣 调试下,不称和称重状态,对比一下就出来了。
如果一直是 02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D ,肯定就错了。
现在的电子秤都不用做太多的数据解析,发送的时候16进制,带有分割符=,serialPort1_DataReceived 接收到的就是已经解析好的
00.0000,然后反转数据就得到结果了。
如果一直是 02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D ,肯定就错了。
现在的电子秤都不用做太多的数据解析,发送的时候16进制,带有分割符=,serialPort1_DataReceived 接收到的就是已经解析好的
00.0000,然后反转数据就得到结果了。
#20
用串口调试伴侣 调试下,不称和称重状态,对比一下就出来了。
如果一直是 02 31 30 20 20 20 20 20 20 30 20 20 20 20 20 30 0D ,肯定就错了。
现在的电子秤都不用做太多的数据解析,发送的时候16进制,带有分割符=,serialPort1_DataReceived 接收到的就是已经解析好的
00.0000,然后反转数据就得到结果了。
恩,这个东西是需要多测试,,谢了。
#21
重量数据转成Ascii码,再看下。20是空格,30是0。给出的重量数据的毛重和净重都是0。