




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CRC-16校验(多项式为x16+x15+x2+1): type CRC校验 TDataByte=arrayofbyte; const CRCHi:array0.255ofbyte= ( $00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0,$80,$41,$00, $C1,$81,$40,$01,$C0,$80,$41,$00,$C1,$81,$40,$00,$C1, $81,$40,$01,$C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81, $40,$00,$C1,$81,$40,$01,$C0,$80,$41,$00,$C1,$81,$40, $01,$C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81,$40,$01, $C0,$80,$41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0, $80,$41,$00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0,$80, $41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41, $01,$C0,$80,$41,$00,$C1,$81,$40,$01,$C0,$80,$41,$00, $C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0, $80,$41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80, $41,$00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0,$80,$41, $00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41,$01, $C0,$80,$41,$00,$C1,$81,$40,$01,$C0,$80,$41,$00,$C1, $81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41,$00,$C1,$81, $40,$01,$C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81,$40, $01,$C0,$80,$41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01, $C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81,$40,$00,$C1, $81,$40,$01,$C0,$80,$41,$00,$C1,$81,$40,$01,$C0,$80, $41,$01,$C0,$80,$41,$00,$C1,$81,$40 ); CRCLo:array0.255ofbyte= ( $00,$C0,$C1,$01,$C3,$03,$02,$C2,$C6,$06,$07,$C7,$05, $C5,$C4,$04,$CC,$0C,$0D,$CD,$0F,$CF,$CE,$0E,$0A,$CA, $CB,$0B,$C9,$09,$08,$C8,$D8,$18,$19,$D9,$1B,$DB,$DA, $1A,$1E,$DE,$DF,$1F,$DD,$1D,$1C,$DC,$14,$D4,$D5,$15, $D7,$17,$16,$D6,$D2,$12,$13,$D3,$11,$D1,$D0,$10,$F0, $30,$31,$F1,$33,$F3,$F2,$32,$36,$F6,$F7,$37,$F5,$35, $34,$F4,$3C,$FC,$FD,$3D,$FF,$3F,$3E,$FE,$FA,$3A,$3B, $FB,$39,$F9,$F8,$38,$28,$E8,$E9,$29,$EB,$2B,$2A,$EA, $EE,$2E,$2F,$EF,$2D,$ED,$EC,$2C,$E4,$24,$25,$E5,$27, $E7,$E6,$26,$22,$E2,$E3,$23,$E1,$21,$20,$E0,$A0,$60, $61,$A1,$63,$A3,$A2,$62,$66,$A6,$A7,$67,$A5,$65,$64, $A4,$6C,$AC,$AD,$6D,$AF,$6F,$6E,$AE,$AA,$6A,$6B,$AB, $69,$A9,$A8,$68,$78,$B8,$B9,$79,$BB,$7B,$7A,$BA,$BE, $7E,$7F,$BF,$7D,$BD,$BC,$7C,$B4,$74,$75,$B5,$77,$B7, $B6,$76,$72,$B2,$B3,$73,$B1,$71,$70,$B0,$50,$90,$91, $51,$93,$53,$52,$92,$96,$56,$57,$97,$55,$95,$94,$54, $9C,$5C,$5D,$9D,$5F,$9F,$9E,$5E,$5A,$9A,$9B,$5B,$99, $59,$58,$98,$88,$48,$49,$89,$4B,$8B,$8A,$4A,$4E,$8E, $8F,$4F,$8D,$4D,$4C,$8C,$44,$84,$85,$45,$87,$47,$46, $86,$82,$42,$43,$83,$41,$81,$80,$40 ); functioncrc16(vardataaddress:byte;datalength:byte):word; var hi:byte; lo:byte; i:byte; index:byte; datadd:pbytearray; begin hi:=$FF; lo:=$FF; datadd:=dataaddress; i:=0; while(datalength0)do begin index:=(hixordataddi); i:=i+1; hi:=loxorcrchiindex; lo:=crcloindex; datalength:=datalength-1; end; crc16:=hishl8orlo; end; functionModBusCRC(Data:string):string;/生成modbusCRC数据 var CRC16Lo,CRC16Hi,CL,CH,UseHi,UseLo:Dword; i,index:integer; begin CRC16Lo:=$FF;/CRC16Lo为CRC寄存器低8位 CRC16Hi:=$FF;/CRC16Hi为CRC寄存器高8位 CL:=$01; CH:=$A0;/A001H是CRC16多项式代码 fori:=1toLength(Data)do begin CRC16Lo:=CRC16Loxorord(Datai);/每一个数据与CRC寄存器异或 forindex:=0to7do begin UseHi:=CRC16Hi; UseLo:=CRC16Lo; CRC16Hi:=CRC16Hishr1; CRC16Lo:=CRC16Loshr1;/右移一位 if(UseHiand$1)=$1)then/如果高位字节最后一位是1的话 CRC16Lo:=CRC16Loor$80;/低位字节右移后前面补1 if(UseLoand$1)=$1)then/如果LSB为1,则与多项式进行异或 begin CRC16Hi:=CRC16HixorCH; CRC16Lo:=CRC16LoxorCL; end; end; end; Result:=IntToHex(CRC16Lo,2)+IntToHex(CRC16Hi,2); end; 进制转换: functionStrToHexStr(constS:string):string; /字符串转换成16进制字符串 var I:Integer; begin forI:=1toLength(S)do begin ifI=1then Result:=IntToHex(Ord(S1),2) elseResult:=Result+IntToHex(Ord(SI),2); end; end; functionHexStrToStr(constS:string):string; /16进制字符串转换成字符串 var t:Integer; ts:string; M,Code:Integer; begin t:=1; Result:=; whiletLength(S)or(not(St+1in0.9,A.F,a.f)then ts:=$+St else ts:=$+St+St+1; Val(ts,M,Code); ifCode=0then Result:=Result+Chr(M); inc(t,2); end; end; functionHex2Dec(Hexs:string):string; /十六进制转换成十进制 var i,j:integer; res,base:LongWord; begin res:=0; fori:=1toLength(Hexs)do begin base:=1; forj:=1toLength(Hexs)-ido base:=base*16; caseHexsiof 0.9:res:=res+(Ord(Hexsi)-Ord(0)*base; a.f:res:=res+(Ord(Hexsi)-Ord(a)+10)*base; A.F:res:=res+(Ord(Hexsi)-Ord(A)+10)*base; end; end; result:=inttostr(res); end; functionBcdToHex(Hexstr:string):string; /BCD转换成十六进制 var i:integer; returnstr:string; begin result:=0; try returnstr:=IntToHex(StrToInt64(Hexstr),4); fori:=1tolength(returnstr)do begin ifreturnstr1=0then delete(returnstr,1,1); end; Result:=returnstr; except end; end; functionDecToHex(DecS:string):string; /十进制转换成十六进制 vari:integer; begin i:=StrToInt(DecS); Restult:=IntToHex(i,2); end; 使用Comport控件进行modbus通信的简单例子: procedureTMainForm.btnReadBuadRateClick(Sender:TObject);/波特率 var str,str1,BaudRate1:string; i:integer; obj:PAsync; begin i:=0; if(edAdd.text=)and(notCheckBox1.checked)then showmessage(请输入装置地址) else begin ifcheckBox1.checkedthen/广播方式 Address:=00 else Address:=DecToHex(edAdd.text); ifnot(address=error)then/判断地址是否超出0255地址范围 begin str:=Address+03+00+02+00+01;/差校验数值 str:=str+ModBusCRC(HexStrToStr(str);/发送的字符串(包含地址,功能码,数据,CRC) InitAsync(obj); try ComPort.WriteStrAsync(hexstrToStr(str),obj); SendMemo.Text:=SendMemo.text+str+; i:=i+1; if(i30000)then begin ComPort.AbortAllAsync; showmessage(通信失败,请重新发送!); end; ComPort.WaitForAsync(obj); sleep(500);/发送命令后等待500MS,保证数据的完整性; ComPort.ReadStr(Str,20);/读取接收缓存区20个字节数; comport.ClearBuffer(true,true);/清除发送区和接收区,准备下一个通道通信; finally DoneAsync(obj); end; RXMemo.text:=RXMemo.text+StrToHexstr(str); if(str=)then showmessage(没有收到数据,请重发!) else begin /if(not
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版五年级下册分数的产生第1课时教案及反思
- 暑假预习云名著《世说新语》之“德行”卷
- 2024中航信移动科技有限公司航旅纵横校招新增岗位招聘笔试参考题库附带答案详解
- 2024中煤陕西能源化工集团有限公司面向社会公开招聘40人笔试参考题库附带答案详解
- 动画片的今昔(教案)-2023-2024学年人美版(2012)美术六年级下册
- 人教版四年级音乐下册(简谱)第一单元《音乐实践》教学设计
- 人教版 (PEP)三年级下册Unit 1 Welcome back to school!Part A第一课时教案及反思
- 人教版八年级历史与社会下册教学设计:5.3.1《皇权膨胀》
- 人教新目标 (Go for it) 版八年级上册Unit 3 Im more outgoing than my sister.Section B教学设计
- 奥尔夫音乐节奏课件培训
- 2024四川泸州市公共交通集团有限公司招聘1人笔试参考题库附带答案详解
- 北京市海淀区2024年七年级下学期数学期中考试试卷(附答案)
- 妊娠期甲状腺疾病课件
- 导线的连接精品课件
- 论提高行政效率的途径 开题报告
- 059.商业计划书和可行性报告精制食油厂年产万吨精制山茶油项目可行性研究报告
- 米度盾构导向系统
- [说明]心血管内科(心内科)_见习教案_6_动脉粥样硬化和冠状动脉粥样硬化性心脏病
- Q∕GDW 11257.3-2020 熔断器技术规范 第3部分:跌落式熔断器
- 汽车焊接夹具设计外文文献翻译
- 浓缩机的选择与计算
评论
0/150
提交评论