CheckSum编码问题-300分(300分)

  • 主题发起人 主题发起人 天使屁屁猪
  • 开始时间 开始时间

天使屁屁猪

Unregistered / Unconfirmed
GUEST, unregistred user!
大家是不是可以帮助我看看,下面的这段消息用的是什么编码方式呀,不胜感激!!!


COM1 Send 2006-3-7 17:05:11 TXT <--- 01microspos 1 8234 1000898

COM1 Send 2006-3-7 17:05:11 HEX <--- 0130316D6963726F73706F7320202020202020022031203832333420202020202020202020202020313030033038393804

...

COM1 Recv 2006-3-7 17:05:11 TXT --->

COM1 Recv 2006-3-7 17:05:11 HEX ---> 06

...

COM1 Recv 2006-3-7 17:05:11 TXT ---> 01microspos 1 INVALID ROOM 095A

COM1 Recv 2006-3-7 17:05:11 HEX ---> 0130316D6963726F73706F732020202020202002203120494E56414C494420524F4F4D202020033039354104
...
 
20是空格的AscII码
看不出什么规律...
 
可能是我没有表达清楚。最后4位为CheckSum校验码。

我不知道是不是CRC。但是也不知道其他的可能性,所以就用CRC测试,但是测试了好多,因子没有测试出来,所以希望大家可以帮忙。
 
第一个消息的Checksum为:0898
第二个消息的CheckSum为:095A
 
01................04
01是开始码
04是结束码
0130316D6963726F73706F7320202020202020022031203832333420202020202020202020202020313030033038393804
.3034............3938这段是AscII码
总的看来,可能这样的编码方式
01....04为固定头尾格式
用AscII码为数据
 
其实数据编码方式我是知道的,我已经全部猜出来了,但是就是不知道Checksum校验码算法,因为要和别人做接口,而这个接口是一家德国公司做的,资料里面只是告知最后这4个字符是Checksum校验码,但是没有告知具体的算法,但是因为公司急于要重新编写新的通讯接口功能,所以只有顶着头皮上了。

原来的两个系统都是德国公司开发的,接口消息也都传输的非常好,但是因为现在要引入其他功能,而原有的接口又达不到,所以只有在两个接口中直接嫁接一个我的通讯软体上去,他们达不到的功能由我来独立完成,所以才面临今天这样的状况。

原有模式:A机<->B机
现在模式:A机<->My Interface<->B机
|
^
Member Sales System

工作原理:原来A机和B机之间采用RS232通讯方式,我现在维持他们原有的通讯方式不变,而增加了一层上去,就可以在他们之间的通讯中负责转发消息,并且同时获取有用的消息,如当A机需要查询信息时,我采集到对我有用的消息后,我就不再负责转发到B机,而是直接应答A机,而数据来源就使用TCP/IP方式和我自己写的Member sales system远程通讯得到。A机得到的信息就好像是B机发送给他的一样。所以要重新开发新的接口系统,其他的东西都已经完成,就是这个CheckSum现在还无法破解。

消息编码格式:
SOH: #01
EOH: #04
STX: #02
ETX: #03

其中:
SOH
01

01microspos 为通讯主机编号及标识符(主机编号2位,标识符为16位)
30316D6963726F73706F7320202020202020

STX
02

1 消息命令码元(2位)
2031

这里是空格其实是有消息的,表示重发标识符(一般如果该消息为重发数据,这一位就为“R”数据长度1位)
20

8234 消息数据(16位)
38323334202020202020202020202020

100 操作员编号(4位)
20313030

ETX
03

0898 CheckSum
30383938

EOH
04


在此感谢各位的大力帮助,分数不够另外开帖送分。3月22日为公司的截至日,搞不出来就人头落地了。
 
不好弄,我们自己常用checksum用crc而已
更换几个常用的crc多项式试一下
 
看来这个问题没有人帮忙解决了。
 
后退
顶部