誰能給個 pb版的 CRC16代碼或者可用的DLL也可以,萬分感謝啊!
uj5u.com熱心網友回復:
__stdcall unsigned short uart_crc(unsigned char* data , long length)
{
unsigned short reg_crc;
unsigned short s_crcchk;
s_crcchk = 0;
reg_crc = 0xffff;
while(length--)
{
reg_crc ^= *data++;
for(s_crcchk = 0; s_crcchk < 8; s_crcchk ++)
{
if(reg_crc & 0x01)
{
reg_crc = (reg_crc >> 1) ^ 0xa001;
}
else
{
reg_crc = reg_crc >> 1;
}
}
}
return reg_crc;
}
PB:
function int uart_crc(ref string s,long len) library .............
uj5u.com熱心網友回復:
有沒有pb的?uj5u.com熱心網友回復:
global type xor16 from function_object
end type
forward prototypes
global function unsignedinteger xor16 (unsignedinteger p1, unsignedinteger p2)
end prototypes
global function unsignedinteger xor16 (unsignedinteger p1, unsignedinteger p2);uint ret,n
for n = 0 to 15
if mod(long(p1 / (2 ^ n)),2) <> mod(long(p2 / (2 ^ n)),2) then
ret += 2 ^ n
end if
end for
return ret
end function
global type uart_crc16 from function_object
end type
forward prototypes
global function unsignedinteger uart_crc16 (character data[], unsignedinteger len)
end prototypes
global function unsignedinteger uart_crc16 (character data[], unsignedinteger len);uint ret,n,i
ret=65535
for i=1 to len
ret=xor16(ret,asc(data[i]))
for n=1 to 8
if mod(ret,2) = 1 then
ret=xor16(long(ret/2),40961)
else
ret=long(ret/2)
end if
end for
end for
return ret
end function
呼叫:
char data[]
data[1]='~h23'
data[2]='~h3a'
data[3]='~h00'
data[4]='~h01'
data[5]='~h02'
data[6]='~h00'
uint ret
ret=uart_crc16(data,6)
messagebox('',ret)
return
uj5u.com熱心網友回復:
學習學習!!!!!!uj5u.com熱心網友回復:
mark
uj5u.com熱心網友回復:
mark
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/62200.html
標籤:腳本語言
上一篇:PB的資料視窗中插入OLE OBJECT報錯并退出了?
下一篇:求解惑!!!
