https://www.cnblogs.com/yangfengwu/p/11104167.html
先说一下整体思路哈..
咱滑动的时候
会进入这个,然后咱呢不直接从这个里面写发送
因为这样的话太快了,,咱的单片机是用任务处理
咱就做一个10ms的定时器,实时检测进度条值的变化,如果这次的值和上次的值不一样就发送
定义一个变量用来存储上次的状态
现在测试一下,发给另一个串口,然后计算下
好现在控制灯
自己去测试吧,自己扩展成控制舵机,控制电机转速都可以
然后给大家CRC的代码 这个CRC和前头单片机的CRC 计算出来的CRC一致,大家可以在数据的最后两位加上CRC
////// /// /// /// /// private int crc16_modbus(byte[] modbusdata, int length) { int i, j; int crc = 0xffff; try { for (i = 0; i < length; i++) { crc ^= modbusdata[i]; for (j = 0; j < 8; j++) { if ((crc & 0x01) == 1) { crc = (crc >> 1) ^ 0xa001; } else { crc >>= 1; } } } } catch (Exception) { throw; } return crc; } /* modbusdata 要校验的数据 length 数据长度 返回值 1 正确 0 错误 */ private int crc16_flage(byte[] modbusdata, int length) { int Receive_CRC = 0, calculation = 0;//接收到的CRC,计算的CRC Receive_CRC = crc16_modbus(modbusdata, length); calculation = modbusdata[length + 1]; calculation <<= 8; calculation += modbusdata[length]; if (calculation != Receive_CRC) { return 0; } return 1; }
提示:CRC使用
后面咱会使用起来CRC 现在大家先自己摸索把,或者百度
https://www.cnblogs.com/yangfengwu/p/11112014.html