vb如何使用串口通讯

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-19
vb串口通信程序实例

我也是自己摸索开发出来的每一款VBtoCOM通讯,有具体的思路如下:
给你推荐一个工具“com串口测试工具 ComTone V1.0 中文绿色版”
1、打开你的噪音计的测试软件,调整好串口号、通讯频率等等,我用温度计举例说明。

开始查询后有返回数值,这个Receive:就是返回的数值000304012200004b05,
打开串口监视精灵,监视软件的com口事件:

这里面的Write是测试软件发出的查询指令,read是设备返回的数据指令
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 IfDim pu() As ByteDim strdata As StringDim crc_js() As ByteReDim 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'不做任何事情,仅仅允许其它应用程序处理它们的事件。DoEventsMSComm1.InBufferCount = 0 '清除接收缓冲区MSComm1.RThreshold = 9 '所要接收的数据长度,我们通过COM检测精灵看到了回传数据一共是9字节MSComm1.RTSEnable = True '转为接收状态End SubPrivate Sub Command2_Click()Timer1.Enabled = FalseEnd SubPrivate Sub Form_Unload(Cancel As Integer) If MSComm1.PortOpen Then MSComm1.PortOpen = False '关闭串口 End If Timer1.Enabled = FalseEnd SubPrivate Sub MSComm1_OnComm() 'COM事件 Dim PA() As Byte Dim PB As StringSelect Case MSComm1.CommEvent Case comEvReceive MSComm1.InputLen = 0 '读取接收缓冲区的所有字符 PB = MSComm1.Input PA() = PB For i = 0 To UBound(PA()) 'Print "PA(" & i & ")"; PA(i) If Len(Hex(PA(i))) = 1 Then strdata = strdata & "0" & Hex(PA(i)) Else strdata = strdata & Hex(PA(i)) End If Next '回传的数据串: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 SelectEnd SubPrivate Sub Timer1_Timer()Call Command1_ClickEnd Sub

这是我的测试结果。
下面是通讯协议

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

单片机+RS232通信模块实现Modbus RTU串口通信

用PC机的9针RS232接口,用VB6 含有的MSComm 控件编程

两台PC机串行通信串行口的接线图:

 

'==============================
'PC机串行口用命令按钮启动接收/发送VB程序

Private Sub Form_Load()
  MSComm1.PortOpen = True  '开启通信控件的端口
End Sub

'点击“发送”命令按钮发送数据
Private Sub Command1_Click()
   MSComm1.Output = Text1.Text  '将文本框Text1的数据发送至对方
End Sub


'点击“接收”命令按钮接收数据
Private Sub Command2_Click()
   Dim st As String
   st = MSComm1.Input
   Text2.Text = st             '将接收到的数据至入文本框Text2
End Sub

 


'==============================
’PC机串行口定时自动接收/发送VB程序

Private Sub Form_Load()
   MSComm1.PortOpen = True  '开启通信控件的端口
   Timer1.Interval = 100   ’自动传送时间间隔100毫秒
End Sub


Private Sub MSComm1_OnComm()
   Dim st As String
   If MSComm1.InBufferCount > 0 Then
      st = MSComm1.Input
      Text2.Text = st  '将收到的数据放入Text2文本框
   End If
End Sub

Private Sub Timer1_Timer()
  MSComm1.Output = Text1.Text  '发送Text1文本框内容
End Sub



这个是链接串口的代码
Private Sub initial_com(com_num As Integer)
MSComm1.CommPort = com_num
MSComm1.OutBufferSize = 1024
MSComm1.InBufferSize = 1024
MSComm1.InputMode = 1
MSComm1.InputLen = 0
MSComm1.InBufferCount = 0
MSComm1.SThreshold = 1
MSComm1.RThreshold = 1
MSComm1.settings = "9600,N,8,1"
MSComm1.PortOpen = True
End Sub

最简单的是使用MSComm控件

没有错!

先模拟一下,了解一下串口通信的大概,再深入了解

你可以找个 串口通讯测试的软件,推荐 accessport。
硬件嘛,你已经了解了,就是 单台计算机,将串口线的一段接电脑串口,另一端 2 3 端短接。
在accessport里发送数据,就能看到接收到的数据!

也可以 2台电脑联机 试验,这时 用用到 空调制器(Null Modem)!其实,就是做一个一端 2 3 交换 的串口线!

其他都一样!

用 空调制器,可以 双机串口通讯,还可以用 超级终端 登录 到另外 的机器!

就这样,祝你顺利,也欢迎交流!

  • VB6.0中的串口通讯
    答:Dim Buffer As Variant Dim Arr() As Byte ' 设定并开启连接埠MSComm1.CommPort = 1 ' 连线速度 9600 baud、无同位检查、资料位元 8、停止位元 1 MSComm1.Settings = "9600,N,8,1" 告诉控制项当使用 Input 时,读取整个暂存区 MSComm1.InputLen = 0 MSComm1.PortOpen = True ' 设定 ...
  • VB编程串口通信
    答:然后用添加两个MSCOMM控件(Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。).CommPort=2 '使...
  • 单片机与上位机VB通信问题,单片机,Visual Basic 6.0,串口通信,谢谢...
    答:其实 不管用 VB 与 单片机通信,或者单片机 与 单片机之间通信,都需要设计 一个通信协议,比如:先发送一个 指令代码 + (多机通信需要 机号)+ 数据1 + --- 数据n + 结束码,这种方式 结束码 不能在 指令数据 中出现,不然会出错,或者:指令代码 + 数据字节数 + 数据1 + --- 数据n ...
  • 计算机有二个串口VB中要如何处理才能同时通讯
    答:计算机的两个串口是相互独立的,可以同时与两个外界设备通讯,你只需要在VB程序中放入两个 MSComm 通讯控件,然后分别设置相应的参数就可以了,但有一点要注意:就是两个控件的CommPort 属性不能设置成一样的,否则打开一个串口后,再打开就会出错。例子如下:MSComm1.CommPort = 1 '设置串口1 MSComm...
  • 用VB的MSComm控件实现PC机与多个单片机的通信
    答:下面是一台电子秤的串口应用,请参考:输出 RS-232C标准接口,波特率 300-9600、偶校验、7个数据位、2个停止位。所有字符均发送11位ASCII码, 1个起始位。 VB 串口通讯需 引入控 MSComm串口通讯控 ( Microsoft Comm Control 6.0 )。具体程序如 :控件简称:MSC Dim Out(12) As Byte '接收...
  • vb串口通讯
    答:1、你去查一下senddata定义的数据类型。最大收发数,由数据类型来限制。2、应该是使用socket对像的getdata与senddata方法来完成。你最好写两个程序,一个服务端,一个客户端。这样服务器端监听,客户端联接。两者握手联接后,就可以通信了。
  • 高手来帮帮忙啊!vb的串口通信
    答:4、串口接收程序:在数据接收程序中,利用VB中MSComm控件,一次接收缓冲区中的全部数据,存放到数组形式的暂存单元中,然后分析每个元素的值,得到读写的数据。Dim RCV_Array() As Byte Dim Dis_Array As String Dim RCV_Len As Long RCV_Array = MSComm1.Input ‘取出串口接收缓冲器的数据。RCV_...
  • vb串口通信程序实例
    答:我也是自己摸索开发出来的每一款VBtoCOM通讯,有具体的思路如下:给你推荐一个工具“com串口测试工具 ComTone V1.0 中文绿色版”1、打开你的噪音计的测试软件,调整好串口号、通讯频率等等,我用温度计举例说明。开始查询后有返回数值,这个Receive:就是返回的数值000304012200004b05,打开串口监视精灵,...
  • VB实现串口通信,可接收R、G、B的值,并显示相应颜色~~急求程序~~_百度知...
    答:vb里用MSComm控件可以串口通信,至于rgb颜色值你可以整理一个数组发送出去。并用API函数GetPixel和SetPixel来设置和获取颜色值。假设有一张10×10的图 picture1.picture = loadpicture("c:\test.bmp")把图片转换成颜色数组 Dim pic() As Long,i As Long for h=0 to 9 for w=0 to 9 clr = ...
  • VB 串口通信
    答:按图添加控件,可以加一个按扭!加按扭了就把From_Load()的代码放在按钮的代码下。可以修改波特率等.Private Sub Form_Load()MSComm1.Settings = "9600,N,8,1" '波特率9600bit/s,无校验,8位数据,1位停止位 MSComm1.CommPort = 1 '设定串口,为1为comm1 MSComm1.InBufferSize = 8 '设置返回...