问题是:
串口收到数据时,其处理是这样的(以例子来演示,假设收到了12 34 56 00 02 AB CD其中黑体加粗的“00 02”是要拿出来做处理的,黑体加粗的“AB CD”是这整个接收字符串的CRC16校验结果)
处理过程如下:
1,SubString截取其除了最后两位(CRC)的其余子字符串(此处为12 34 56 00 02),将该子字符串通过自己写在C#里面的CRC16函数进行校验(CRC16源程序中已有),将校验的结果与“收到的字符串最后2位(此处为AB CD)”进行比较:如果一样,则说明收到的数据CRC通过,可以处理;如果不一样,则说明收到的数据CRC不通过,可能是杂波信号,放丢掉不予处理;
2,在CRC通过的基础上,将子字符串(12 34 56 00 02)的“00 02”拿出来;
3,将“00 02”(十六进制字符串)转为“0000 0000 0000 0010”(二进制字符串);
4,开始判断(得到的二进制字符串0000 0000 0000 0010):
1’最后一个(最右边)二进制位为1:则......(比如条件1为true,否则为flase);
2’倒数第二个(右边第二个)二进制位为1:则......(比如条件2为true,否则为flase);
3’等等等等……(还可以判断很多,不过都是一样的方法) 如果要达到这样的结果,怎么去编写相关的代码呢???字符串处理不会?
就是在串口接收函数DataReceive下怎么写呢?
请教一下,C#的字符串操作不会!
尽量给代码最好了!
谢谢!
串口收到数据时,其处理是这样的(以例子来演示,假设收到了12 34 56 00 02 AB CD其中黑体加粗的“00 02”是要拿出来做处理的,黑体加粗的“AB CD”是这整个接收字符串的CRC16校验结果)
处理过程如下:
1,SubString截取其除了最后两位(CRC)的其余子字符串(此处为12 34 56 00 02),将该子字符串通过自己写在C#里面的CRC16函数进行校验(CRC16源程序中已有),将校验的结果与“收到的字符串最后2位(此处为AB CD)”进行比较:如果一样,则说明收到的数据CRC通过,可以处理;如果不一样,则说明收到的数据CRC不通过,可能是杂波信号,放丢掉不予处理;
2,在CRC通过的基础上,将子字符串(12 34 56 00 02)的“00 02”拿出来;
3,将“00 02”(十六进制字符串)转为“0000 0000 0000 0010”(二进制字符串);
4,开始判断(得到的二进制字符串0000 0000 0000 0010):
1’最后一个(最右边)二进制位为1:则......(比如条件1为true,否则为flase);
2’倒数第二个(右边第二个)二进制位为1:则......(比如条件2为true,否则为flase);
3’等等等等……(还可以判断很多,不过都是一样的方法) 如果要达到这样的结果,怎么去编写相关的代码呢???字符串处理不会?
就是在串口接收函数DataReceive下怎么写呢?
请教一下,C#的字符串操作不会!
尽量给代码最好了!
谢谢!
我是晚上来看帖子的;
谢谢 nvshenxp的热心回复
我自己已经解决了这个问题
谢谢