https://www.cnblogs.com/yangfengwu/p/11104167.html
先說一下整體思路哈..
咱滑動的時候
會進入這個,然后咱呢不直接從這個里面寫發送
因為這樣的話太快了,,咱的單片機是用任務處理
咱就做一個10ms的定時器,實時檢測進度條值的變化,如果這次的值和上次的值不一樣就發送
定義一個變量用來存儲上次的狀態
現在測試一下,發給另一個串口,然后計算下
好現在控制燈
自己去測試吧,自己擴展成控制舵機,控制電機轉速都可以
然后給大家CRC的代碼 這個CRC和前頭單片機的CRC 計算出來的CRC一致,大家可以在數據的最后兩位加上CRC
/// <CRC 效驗 > /// /// </summary> /// <param name="modbusdata"></param> /// <param name="length"></param> /// <returns></returns> 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