Modbus RTU中對CRC16校驗的步驟

2021-10-22 00:02:25 字數 587 閱讀 2498

1 . 假定需要檢驗的資料存放在陣列data[n]中,

2 . 預置16位暫存器為ffffh,稱此暫存器為crc暫存器;即可定義crc=16#ffff

3.把data[0]與crc暫存器的低位相異或,把結果放於crc暫存器;即crc=crc xor data[0]

4.把暫存器的內容右移一位(朝低位),用0填補最高位,檢查最低位;

6.重複上一步,直到右移8次,這樣整個8位資料全部進行了處理;

7.重複步驟3到步驟5,進行下乙個8位資料的處理

最後得到的crc暫存器即為crc碼

void

crc16

(unsigned

char

*p,unsigned

int len)

else

//如果不是1,則直接移出}}

temp=wcrc;

//crc的值

temp中即存放了crc的高八位和低八位

unsigned char crc[2];//定義陣列

crc[0]=wcrc;//crc的低八位

crc[1]=wcrc>>8;//crc的高八位

EF Core 中處理 1對1 關係

最近在開發記錄感想功能的時候用到了1對1的資料關係,具體情況是這樣的,有這樣兩個1對1的型別 public class item public string title public note note public class note public string content public i...

python中對閉包的理解(1)

今天聊下python中閉包的用法,首先它是在函式內再定義乙個函式,內部定義的函式可以引用外部函式的引數和區域性變數,在呼叫外部函式時返回的是內部函式,但是不會立馬執行內部函式的程式體,需要單獨呼叫內部函式才會去執行。下面的程式就是閉包 首先正常定義乙個求和函式 def sum args s 0 fo...

(補充1)Ruby中的p puts print對比

p 和puts 是ruby 中特別常用的方法,很多童鞋可能認為它們是差不多的,使用的時候也不加注意,但是仔細考究起來,它們是有明顯差別的。先舉乙個例子 class foo def inspect foo from inspect end def to s foo from to s endend f...