日期:2014-05-17  浏览次数:20778 次

求助,串口通信的问题
1.1.2.1 命令帧格式定义
命令帧是主机操作读写器的数据帧,格式如下表所示:
Packet 
T ype 
Station
Num 
Length Command 
Code 
Command 
Data 
… Command 
Data 
Command 
Data 
Checksum
0xA5 0xFF n+2 1 byte Byte1 Byte n-1 Byte n cc 
l Packet T ype 是包类型域,命令帧包类型固定为 0xA5。
l Station Num 是站地址域,在总线网络中,表明读写器的唯一身份。0xFF 代表任意
站,0x00 代表广播地址,0x01~0xFE 代表可独立寻址的站。
l Length 是包长域,表示 Length 域后帧中字节数。
l Command Code 是命令码域。
l Command Data 是命令帧中的参数域。
l Checksum 是校验和域,规定校验范围是从包类型域到参数域最后一个字节为止所
有字节的校验和。 读写器接收到命令帧后需要计算校验和来检错。 校验和计算方法
是所有参与校验数据求和取反后加 1 所得数据为 Checksum 的值。
为了说明校验和计算方法,我们以如下命令帧为例进行说明:
Packet Type
Station 
Num 
Length 
Command 
Code 
Command 
Data 
Checksum 
0xA5 0x00 3 0x92 04 cc 
计算命令帧 CheckSum 过程如下:
1、 A5+0+3+92+4=0x13E;
2、0x13E 取 0x3E 转换为二进制为 00111110,取反加 1 再转换为 16 进制为 0xC2;
3、完整的命令帧为:A5 00 03 92 04 C2。

想问一下 校验和域 怎么写,网上看了好多的例子,得到的结果都不说想要的结果,麻烦各位大侠帮下忙

------解决方案--------------------
用C语言写个动态库,C#调用。C#搞运算,最繁琐了
------解决方案--------------------
啥说明啊
如果他的说明是对的话
C#也很好写
所有参与校验数据求和取反后加 1这种功能
不过你那个0x13E 取 0x3E 是为什么呢?