當前位置:歷史故事大全網 - 範文作文 - vb串口通信程序实例

vb串口通信程序实例

我也摸索自己开发出来的每一篇VBtoCOM通讯,具体思路如下:

给你推荐一个工具“com串口测试工具ComTone V1.0中文绿色版”

给你推荐一个工具“com串口测试工具ComTone V1.0中文绿色版”

>

1、打开你的噪音计的测试软件,调整好串口号、通讯频率等等,我用温度计举例说明。

开始查询后有返回数值,这个接收:就是返回 的数值000304012200004b05,

打开串口监视精灵,监视软件的com口事件:

这里面的写的是测试软件发出的查询指令,读的是设备返回的数据指令< /p>

Private?Sub?Command1_Click()?'发送指令

If?Not?MSComm1.PortOpen?Then

MSComm1.CommPort?=?7?' 结构 为7

MSComm1.Settings?=?"9600,n,8,1"

MSComm1.InBufferCount?=?0?'清除接收蓝牙

MSComm1.OutBufferCount?=?0?'清晰串口

MSComm1.InputMode?=?comInputModeBinary?'二进制接收

MSComm1.InputLen?=?0?'读取 接收弧形的所有字符

MSComm1.PortOpen?=?True?'打开串口

MSComm1.RTSEnable?=?False?'设置为发送状态

End?If

Dim?pu()?As?Byte

Dim?strdata?As?String

Dim?crc_js()?As?Byte

ReDim?pu(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校验码?因为我们不 知道设备的CRC校验规则所以用测试软件产生的校验码

pu(7)?=?"&HDA"?'6、7为CRC校验码

MSComm1.Output?=?pu

'不做任何事情,仅允许其他应用程序处理它们的事件。

DoEvents

MSComm1.InBufferCount?=?0?'清晰接收流程图

MSComm1.RThreshold?=?9?'所要接收的数据长度, 我们通过COM检测精灵看到了回传数据一***是9字节

MSComm1.RTSEnable?=?True?'转为接收状态

End?Sub

Private?Sub?Command2_Click()

Timer1.Enabled?=?False

End?Sub

Private?Sub?Form_Unload(取消 ?As?Integer)

If?MSComm1.PortOpen?Then

MSComm1.PortOpen?=?False?'关闭串口

End?If

Timer1.Enabled?=?False

End?Sub

Private?Sub?MSComm1_OnComm()?'COM事件

Dim?PA( )?As?Byte

Dim?PB?As?String

Select?Case?MSComm1.CommEvent

Case?comEvReceive

MSComm1.InputLen?=?0?'读取接收亮度的所有字符

PB?=?MSComm1.Input

PA()?=?PB

< p>For?i?=?0?To?UBound(PA())

'打印?"PA("?&?i?&?")";?PA(i)

如果?Len(Hex(PA(i)))?=?1?那么

strdata?=?strdata?&?"0"?&?Hex(PA(i) )

其他

strdata?=?strdata?&?Hex(PA(i))

结束?如果

下一步< /p>

'回传的数据串:000304012600000AC4,这9字节我们根据通讯协议进行分割

'00为协议内回传机号,03为读命令,04为 返回的数据长度?0126?为我要的温度数据为十六轮瑜伽,下面我进行数据处理

wd?=?CLng("&H"?&?Left(Right(strdata, ?12),?4))?/?10?&?"℃"'根据通讯协议换算成温度

Text1?=?Text1?&?vbCrLf?&?strdata?&?"? "?&?wd

strdata?=?""

MSComm1.PortOpen?=?False?'关闭串口

结束?选择

End?Sub

Private?Sub?Timer1_Timer()

Call?Command1_Click

End?Sub这是我的测试结果。

下面是通讯协议

这是我的软件用检测精灵检测的结果

  • 上一篇:怎樣使用電腦壹鍵還原
  • 下一篇:駕校不教的各種“冤”的違章
  • copyright 2024歷史故事大全網