https://www.cnblogs.com/yangfengwu/p/11204436.html
誰かが私はチキンスープを必要とすると述べた....
私はハを考えて、私はそれの側面チキンスープについて質問しませんでした!
シークバーを追加
スイッチ
協定:
00 01 70 70 C0 C0は、LED照明が高および低CRCで制御する
上位ビットと下位ビットCRCの外に出るために、LED 00 B0 01 B0 01 00
PWMデータ
01 CRC16パリティビットの最後の2ビットで高い正面及び低い(法令IEEE754によれば、MSB第低い後)は、4つのPWMデータに固定された後
コラム:いくつかの例、PWMデータが0から1000です
01 03 E8 00 00 B0 99注:03 E8 00 00 1000 B0 99のCRCテストデータポストに高い正面と低いため
1時01分F4 0時00分EC 59 500
01 64 00 00 00 F0 06100
01 00 00 00 00 19 0 C0
私たちは、CRCを生成するには、このツールを使用することができ、CRCは、我々はプログラムを書く検証するために使用されています。
注:01 03 E8 00 00 B0 99は、実際には2 0 01 03 E8 B0 99を保存することができます
しかし、私は4だから4でまだしてみましょうされている楽器のほとんどを使用していました
今Androidの終わりを作成する方法を見て
今では誰もCRC計算のためのプログラムです、CRCデータ判定は、右のプログラムではありません
/** * CRC检验值 * @param modbusdata * @param length * @return CRC检验值 */ protected int crc16_modbus(byte[] modbusdata, int length) { int i=0, j=0; int crc = 0xffff;//有的用0,有的用0xff try { for (i = 0; i < length; i++) { //注意这里要&0xff,因为byte是-128~127,&0xff 就是0x0000 0000 0000 0000 0000 0000 1111 1111 //参见:https://blog.csdn.net/ido1ok/article/details/85235955 crc ^= (modbusdata[i]&(0xff)); for (j = 0; j < 8; j++) { if ((crc & 0x01) == 1) { crc = (crc >> 1) ; crc = crc ^ 0xa001; } else { crc >>= 1; } } } } catch (Exception e) { } return crc; } /** * CRC校验正确标志 * @param modbusdata * @param length * @return 0-failed 1-success */ protected 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; }
先去烧壶水,今天需要熬夜写文章,测试东西....