当前位置:网志问答 > 财务税务 > vb串口通信程序实例
已有回答

vb串口通信程序实例

网志问答在浏览764次收到腾讯网的热心用户ftqrq34fad关于叶圣陶vb串口通信程序实例的提问,关于这些疑难问题,进行了深入的分析。得到了网志问答众多网友的支持,得到了如下解决方案,摘录了部分优质回答,如对此有任何好的意见,欢迎大家进行探讨共同解决!

详细问题描述及疑问:期待您的答案,谢谢你帮我,祝你快乐,愿你事事如意 !

本页链接:http://www.oxrm.com/question/1514128382210084

AD728-90
满意答案

第1个优秀答案:

我也是自己摸索开发出来的每一款VBtoCOM通讯,有具体的思路如下:给你推荐一个工具“com串口测试工具ComToneV1.0中文绿色版”1、打开室岩固专状求却并答你的噪音计的测试软件,调整好串口号、通讯频率等等,我用温度计举例说明。开始查询后有返回数值,这个Receive:问答就是返回的数值00030存只优谁育短早4012200004b05,打开串口监视精灵,监视软件的com口事件:这里面说存半措打意美差次的Write是测试软件发出的查询指令,read是设备返回的数据指令PrivateSubComm香流盐输列燃and1_Click()'发送指令IfNotMSComm1.PortOpenThenMSComm1.志德弦下刘项随顶素吃CommPort=7'串口为7MSComm1.Sett写现节座排起圆乎茶ings="9600,n,8,1"MSComm1.InBufferCount=0'清除接收缓冲区MSComm1.OutBufferCount=0'清除发送缓冲区MSComm三它育1.InputMode=comInputModeBinary'二进制接收MSComm1.InputLen=0'读取接收缓冲区的所有字符MSComm轮觉1.PortOpen=True'打兰统级术开串口MSComm1.RTSEnable=False'置为发送状态EndIfDimpu()AsByteDimstrdataAsStringDimcrc束案觉频良钱认设热材_js()AsByt川渐务高eReDimpu(7)'这个数组是8位的查询指令pu(0)="&H00"'温度计地址pu(1)="&H03"'查询指令pu(2)="&H00"'2、3为温度计地址pu(3)="&H00"'2、3为温度计地址pu(4)="&H00"'4、5为读取寄存器长度pu(5)="&H02"'4、5为读取寄存器长度pu(6)="&HC5"'6行育济、7为CRC校验码因为我们不知道设备的CR高正投未C校验规则所以用测试软件产生的校验码pu(7)="&HDA"'6、7为CRC校掌情拉后重刻阳液验码MSComm1.丰独文Output=pu'不做任何事情,仅仅允许其它应用程序处理它们的事件。DoEve响服站危觉块操什多则ntsMSComm1.InBufferCount=0'清除接收缓冲区MSComm1.RThreshold=9'所要接收的数据长度,我们通过喜步倒斤图COM检测精灵看到了回传数据一共是9字节MSComm1.RTSEnable=True'转为接收状态EndSubPrivateSubCommand2_Click()Timer1.Enabled=FalseEndSubPrivateSubForm_Unload(CancelAsInteger)IfMSComm1.PortOpenThenMSComm1.PortOpen=False'关闭串口EndIfTimer1.Enabled=FalseEndSubPrivateSubMSComm1_OnComm()'COM事件DimPA()AsByteDimPBAsStringSelectCaseMSComm1.CommEventCasecomEvReceiveMSComm1.InputLen=0'读取接收缓冲区的所有字符PB=MSComm1.InputPA()=PBFori=0ToUBound(PA())'Print"PA("&i&")";PA(i)IfLen(Hex(PA(i)))=1Thenstrdata=strdata&"0"&Hex(PA(i))Elsestrdata=strdata&Hex(PA(i))EndIfNext'回传的数据串:000304012600000AC4,这9字节根据通讯协议我们进行拆分'00为协议内回传机号,03为读命令,04为返回的数据长度0126为我要的温度数据为十六进制表达,下面我进行数据处理wd=CLng("&H"&Left(Right(strdata,12),4))/10&"℃"'根据通讯协议换算成温度Text1=Text1&vbCrLf&strdata&""&wdstrdata=""MSComm1.PortOpen=False'关闭串口EndSelectEndSubPrivateSubTimer1_Timer()CallCommand1_ClickEndSub这是我的测试结果。下面是通讯协议这个是我的软件用检测精灵检测的结果


希望以上的回答,能够帮助你。更多关于vb串口通信程序实例的知识及相关经验请访问经验知识https://www.5058.cn/,能够帮助你解决更多的问题,学习更多的经验。
AD160-600