function CRC16(puchMsg:array of Byte;usDataLen:Word):Word;
var
uchCRCHi,uchCRCLo:Byte;
uIndex:Word;
i:Word;
index:Word;
begin
uchCRCHi := $FF;
uchCRCLo := $FF;
index := 0;
for i := usDataLen downto 0 do
begin
uIndex := uchCRCLo xor puchMsg[index];
index := index + 1;
uchCRCLo := uchCRCHi xor auchCRCHi[uIndex] ;
uchCRCHi := auchCRCLo[uIndex] ;
end;
Result := uchCRCHi shl 8 or uchCRCLo
end;我自己搞了一下,请高手指教对否?
var
uchCRCHi,uchCRCLo:Byte;
uIndex:Word;
i:Word;
index:Word;
begin
uchCRCHi := $FF;
uchCRCLo := $FF;
index := 0;
for i := usDataLen downto 0 do
begin
uIndex := uchCRCLo xor puchMsg[index];
index := index + 1;
uchCRCLo := uchCRCHi xor auchCRCHi[uIndex] ;
uchCRCHi := auchCRCLo[uIndex] ;
end;
Result := uchCRCHi shl 8 or uchCRCLo
end;我自己搞了一下,请高手指教对否?
解决方案 »
- 删除dbgrid中记录的问题
- 如何分模块开发
- 求救,用delphi6为asp写了一个dll组件,在开发机器可以顺利调用,可拿到别的机器连注册都不行了
- 有谁有松下KX-p1121打印命令说明???
- delphi 程序在我的计算机上面没有问题,但是到其他的计算机上面不行
- 在TEdit的OnKeyDown中获知Ctrl键是否已按下、这样子做何错之有啊?
- dbgrid可以动态生成columns吗?
- 在sybase中,如果取得datetime的年月日呢?
- 关于delphi中报表制作的一个问题
- 怎样得到数字或英文字母的字形码?
- 求教delphi消息机制,我想做一个点击窗口任意位置就关闭窗口的操作
- Delphi AccessViolation at address 00000000
var
uchCRCHi: Byte;
uchCRCLo: Byte;
uindex: Byte;
begin
uchCRCHi := $FF;
uchCRCLo := $FF;
while usDataLen > 0 do
begin
usDataLen := usDataLen - 1;
uindex := uchCRCLo^ * puchMsg + +; // 计算CRC
uchCRCLo := uchCRCHi^auchCRCHi[uindex];
uchCRCHi := auchCRCLo[uindex];
end;
result := (uchCRCHi << 8 | uchCRCLo);
end;
大概是这样,中间那段你再查查delphi的语法吧
就是c到delphi的语法不熟啊,尤其这个 *puchMsg++ 是几个意思啊?
var
uchCRCHi,uchCRCLo:Byte;
uIndex:Word;
i:Word;
index:Word;
begin
uchCRCHi := $FF;
uchCRCLo := $FF;
index := 0;
for i := usDataLen downto 1 do
begin
uIndex := uchCRCLo xor puchMsg[index];
index := index + 1;
uchCRCLo := uchCRCHi xor auchCRCHi[uIndex] ;
uchCRCHi := auchCRCLo[uIndex] ;
end;
Result := uchCRCHi shl 8 or uchCRCLo
end;好吧,就是这样的,经过验证了