安卓能用的modebus CRC16計算,附上對應的C語言的CRC16

來源:互聯網
上載者:User

標籤:

源:安卓能用的modebus CRC16計算,附上對應的C語言的CRC16

“源”即是原文地址,想瞭解作都更多文章及思想請移步到“源”。轉過只是為了本人感興趣的文章尋找方便。

 

本文:

  最近寫安卓串口通訊需要用到modebus 的crc16通訊,網上找了很多都是字串的,我需要byte的,由於java沒有無符號數,轉換有點小麻煩,對著C一部一部測試

代碼如下:

//java

int CRC16_Check(byte Pushdata[],int length)  {      int Reg_CRC=0xffff;     int temp;    int i,j;          for( i = 0; i<length; i ++)      {          temp = Pushdata[i];        if(temp < 0) temp += 256;         temp &= 0xff;        Reg_CRC^= temp;                  for (j = 0; j<8; j++)         {             if ((Reg_CRC & 0x0001) == 0x0001)                 Reg_CRC=(Reg_CRC>>1)^0xA001;            else                 Reg_CRC >>=1;        }        }      return (Reg_CRC&0xffff);  } 

 

//C

 

u16 CRC16_Check(u8 *Pushdata,u16 length)  {      u16 Reg_CRC=0xffff;      u8 Temp_reg=0x00;      u16 i,j;            for( i = 0; i<length; i ++)      {          Reg_CRC^= *Pushdata++;          for (j = 0; j<8; j++)          {                 if (Reg_CRC & 0x0001)                     Reg_CRC=Reg_CRC>>1^0xA001;              else                  Reg_CRC >>=1;             }        }      return (Reg_CRC);  } 

 

安卓能用的modebus CRC16計算,附上對應的C語言的CRC16(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.