我在调试modbus的asc协议,不太明白,协议里讲
使用ASCII模式,消息包括了一基于LRC方法的错误检测域。LRC域检测了消息域中除开始的 冒号及结束的回车换行号外的内容。
于是我设了一个两字节的数组char pp[2]={0x36,0x30};
数组不包括冒号及结束的回车换行号外的内容,
完整代码如下
#include <reg52.h>
#define uchar unsigned char
unsigned char lrc(unsigned char *str,int lenth) { unsigned char tmp; tmp = 0; while (lenth-- ) { tmp += *str++; } return ((unsigned char)(-((char)tmp))); }
main() { char pp[2]={0x36,0x30}; lrc(pp,2);
while(1) {}
}
计算出来lrc=0x0112,我不知道怎抹去比较传递的消息正确与否
那位做过的兄弟指点一下,举个例子
|