首页 > 试题

校验怎么读

更新时间:2022-12-03 07:02:28 阅读: 评论:0

数学竞赛教练排名-2吨等于多少千克


2022年12月3日发(作者:适合情侣之间的睡前故事)

⽤VB编写的Modbus通讯CRC16校验程序

⽤VB编写的Modbus通讯CRC16校验程序

(2007-09-2721:48:19)

转载▼

标签:

IT/科技

Rem声明CRC16冗余校验函数ACS510_CRC

PrivateDeclareFunctionACS510_CRCLib""(ByValaAsLong,ByValaAsLong)AsLong

PublicFunctionACS510_Cmd(ByValStationIDAsLong,ByValWRcmdAsLong,ByValWRAddressAsLong,ByValData

AsLong)AsString

DimStatIDAsString'定义从机地址缓存区

DimCmdAsString'定义功能命令缓存区

DimAddressAsString'定义读写地址缓存区

DimWRAddressHiAsString'定义读写地址的⾼半字节缓存区

DimWRAddressLoAsString'定义读写地址的低半字节缓存区

DimhDataAsString'定义读写数据缓存区

DimDataHiAsString'定义读写数据⾼半字节缓存区

DimDataLoAsString'定义读写数据低半字节缓存区

DimCRCBuffer1AsString'定义从机地址校验缓存区

DimCRCBuffer2AsString'定义命令校验缓存区

DimCRCBuffer3AsString'定义读写地址⾼字节校验缓存区

DimCRCBuffer4AsString'定义读写地址低字节校验缓存区

DimCRCBuffer5AsString'定义读写数据⾼半字节校验缓存区

DimCRCAsString'定义读写数据低半字节校验缓存区(也即是CRC计算的最后结果)

DimCRCHiAsString'定义校验⾼半字节缓存区

DimCRCLoAsString'定义校验低半字节缓存区

DimCRC_EvenAsString'定义校验

结果取反缓存区

Rem取从机的地址

StatID=Trim(Hex(StationID))

IfStatID=""Then

MsgBox"⽬的地地址不能为空!",vbInformation+vbOKOnly,"系统提⽰!"

ExitFunction

El

IfLen(StatID)=1Then

StatID="0"+StatID

EndIf

IfLen(StatID)>=2Then

StatID=Trim(Right(StatID,2))

EndIf

EndIf

Rem取读写命令

Cmd=Trim(Hex(WRcmd))

IfCmd=""Then

MsgBox"读写命令不能为空!",vbInformation+vbOKOnly,"系统提⽰!"

ExitFunction

El

IfLen(Cmd)=1Then

Cmd="0"+Cmd

EndIf

IfLen(Cmd)>=2Then

Cmd=Trim(Right(Cmd,2))

EndIf

EndIf

Rem取读写数据的地址

Address=Trim(Tran_Format(Trim(Hex(WRAddress))))

WRAddressHi=Trim(Mid$(Address,1,2))

WRAddressLo=Trim(Mid$(Address,3,2))

Rem取读写的数据(读时为字节数,写时为要写的数据)

hData=Trim(Tran_Format(Trim(Hex(Data))))

DataHi=Trim(Mid$(hData,1,2))

DataLo=Trim(Mid$(hData,3,2))

Rem计算从机地址的校验

CRCBuffer1=ACS510_CRC(65535,StationID)

Rem计算读写命令的校验

CRCBuffer2=ACS510_CRC(CRCBuffer1,WRcmd)

Rem计算读写地址⾼半字节的校验

IfReadAddressHi="00"Then

ReadAddressHi=""

CRCBuffer3=CRCBuffer2

El

CRCBuffer3=ACS510_CRC(CRCBuffer2,Tran_HD(WRAddressHi))

EndIf

Rem计算读写地址低半字节的校验

CRCBuffer4=ACS510_CRC(CRCBuffer3,Tran_HD(WRAddressLo))

Rem计算读写数据⾼半字节的校验

IfDataHi="00"Then

CRCBuffer5=CRCBuffer4

DataHi=""

El

CRCBuffer5=ACS510_CRC(CRCBuffer4,Tran_HD(DataHi))

EndIf

Rem计算读写数据低半字节的校验,既最终的校验

CRC=Trim(Tran_Format(Hex(ACS510_CRC(CRCBuffer5,Tran_HD(DataLo)))))Rem取校验的⾼半字节

CRCHi=Trim(Mid$(CRC,1,2))

Rem取校验的低半字节

CRCLo=Trim(Mid$(CRC,3,2))

Rem重新组合校验的结果

CRC_Even=CRCLo+CRCHi

Rem返回发送字符串

ACS510_Cmd=StatID+Cmd+WRAddressHi+WRAddressLo+DataHi+DataLo+CRC_Even

EndFunction

本文发布于:2022-12-03 07:02:28,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/42951.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:no和off
下一篇:二楼英语
标签:校验怎么读
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图