VB串口通信1
来源:百度文库 编辑:神马文学网 时间:2024/04/27 22:58:42
界面如下: 代码如下: Private Sub Form_Load()If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
Else
End IfCombo1.AddItem "COM1"
Combo1.AddItem "COM2"
Combo1.AddItem "COM3"
Combo1.AddItem "COM4"
Combo1.AddItem "COM5"
Combo1.AddItem "COM6"
Combo1.AddItem "COM7"
Combo1.AddItem "COM8"
Combo1.AddItem "COM9"
Combo1.AddItem "COM10"
Combo1.AddItem "COM11"
Combo1.AddItem "COM12"
Combo1.AddItem "COM13"
Combo1.AddItem "COM14"
Combo1.AddItem "COM15"
Combo1.AddItem "COM16"
Combo1.ListIndex = 2Combo2.AddItem "256000"
Combo2.AddItem "128000"
Combo2.AddItem "115200"
Combo2.AddItem "57600"
Combo2.AddItem "38400"
Combo2.AddItem "28800"
Combo2.AddItem "19200"
Combo2.AddItem "14400"
Combo2.AddItem "12800"
Combo2.AddItem "11520"
Combo2.AddItem "9600"
Combo2.AddItem "4800"
Combo2.AddItem "2400"
Combo2.AddItem "1200"
Combo2.AddItem "600"Combo3.AddItem "无None"
Combo3.AddItem "奇Odd"
Combo3.AddItem "偶Even"Combo4.AddItem "4"
Combo4.AddItem "5"
Combo4.AddItem "6"
Combo4.AddItem "7"
Combo4.AddItem "8"Combo5.AddItem "1"
Combo5.AddItem "2"MSComm1.CommPort = Combo1.ListIndex + 1
MSComm1.Settings = "9600,n,8,1"
ComOpen.Caption = "打开串口"
Shape1.FillColor = &HFFFFC0End Sub
Private Sub ComOpen_Click()
On Error GoTo uerror '发现错误跳转到错误处理
If ComOpen.Caption = "关闭串口" Then
MSComm1.PortOpen = False
ComOpen.Caption = "打开串口" '按钮文字改变
Shape1.FillColor = &HFFFFC0 '灯颜色改变
Else
MSComm1.PortOpen = True
ComOpen.Caption = "关闭串口"
Shape1.FillColor = &HFF
End If
Exit Sub
uerror:
msg$ = "无效端口号" '错误显示
Title$ = "串口调试助手"
X = MsgBox(msg$, 48, Title$) '48标示显示警告图标
End Sub
Private Sub MSComm1_OnComm()
Dim BytReceived() As Byte
Dim strBuff As String
Dim i As Integer
Select Case MSComm1.CommEvent '事件发生
Case 2
Cls
MSComm1.InputLen = 0 '读入缓冲区全部内容
strBuff = MSComm1.Input '读入到缓冲区
Label10.Caption = Label10.Caption + Len(strBuff) '接收计数
If MSComm1.InputMode = comInputModeBinary Then
BytReceived() = strBuff '如果是二进制接收模式则进行数据处理,否则直接显示字符串
For i = 0 To UBound(BytReceived)
If Len(Hex(BytReceived(i))) = 1 Then
strData = strData & "0" & Hex(BytReceived(i)) & " " '如果只有一个字符,则前补0,如F显示0F,最后补空格
Else '方便显示观察如: 00 0F FE
strData = strData & Hex(BytReceived(i)) & " "
End If
Next
TextReceive = TextReceive & strData
strData = ""
Else
TextReceive = TextReceive & strBuff
End If
End Select
End Sub
Private Sub ComSend1_Click() '手动发送Dim Temp(0) As Byte
Dim strBuff As StringIf Option1.Value = True Then '如果显示16进制发送则进行16进制处理 ,这里只发送一个
Temp(0) = "&H" & TextSend
MSComm1.Output = Temp '发送一个16进制
Else
strBuff = TextSend
End IfIf MSComm1.PortOpen = False Then
MsgBox "请打开串口"
End IfOn Error GoTo uerror
MSComm1.Output = strBuff
Label11.Caption = Label11.Caption + Len(strBuff) '发送计数
uerror:End Sub
Private Sub ComSend2_Click()If ComSend2.Caption = "自动发送" Then
ComSend2.Caption = "关闭自动发送"
Timer1.Interval = TextTime.Text
Timer1.Enabled = True
Else
ComSend2.Caption = "自动发送"
Timer1.Enabled = False
End IfEnd Sub
Private Sub ComClean1_Click()TextSend.Text = "" '清空发送窗口End Sub
Private Sub Option3_Click()MSComm1.InputMode = comInputModeBinary '选择接收方式End Sub
Private Sub Option4_Click()MSComm1.InputMode = comInputModeText '选择接收方式End Sub
Private Sub Timer1_Timer()Call ComSend1_Click '定时调用手动发送End SubPrivate Sub Timer2_Timer()If Combo3 = "无None" Then
MSComm1.Settings = Str(Combo2) + "N" + Str(Combo4) + Str(Combo5)
ElseIf Combo3 = "奇Odd" Then
MSComm1.Settings = Str(Combo2) + "O" + Str(Combo4) + Str(Combo5)
ElseIf Combo3 = "偶Even" Then
MSComm1.Settings = Str(Combo2) + "E" + Str(Combo4) + Str(Combo5)
End IfEnd SubPrivate Sub Combo1_Click()If MSComm1.PortOpen = True Then '如果串口打开先关闭后再进行其他操作
MSComm1.PortOpen = False
End If
MSComm1.CommPort = Combo1.ListIndex + 1 '读取com口号End SubPrivate Sub ComClean3_Click()Label10.Caption = 0
Label11.Caption = 0End SubPrivate Sub ComClean2_Click()TextReceive.Text = "" '接收窗口End Sub
功能上:实现了字符串的发送和接收,8位数据的十六进制发送和接收,有端口,波特率等设置。 缺点:
1:只可以发送两位十六进制数。
2:接收和发送的显示数据上有点不同步,十六进制的没有算进去。
3:没有TXT的文件发送和接收的功能。 如需要源程序的,可下载本文的图片,下载后把图片的.jpg格式改为.rar格式就可以解压出来了。 附:MSComm控件的属性: 属性 说明 (Name) MSComm控件的名称 (自定义) 打开属性页 CommPort 获得或设置通讯端口号 DTREnable 决定在通讯过程中是否使数据终端机状态线有效。取值为:
True
False EOFEnable 获得或设置是否搜索EOF字符。取值为:
True
False Handshaking 获得或设置软件的握手协议。取值为:
0 comNone
1 comXOnXoff
2 comRTS
3 comRTSXOnXOff InBufferSize 获得或设置接收缓冲区的大小,以字节数为单位。 Index 在对象数组中的编号 InputLen 获得或设置输入属性从接收缓冲区读出的字符数。 InputMode 获得或设置输入属性检索的数据类型。取值为:
0 comInputModeText
1 comInputModeBinary Left 距离容器左边框的距离 NullDiscard 决定是否将空字符串从端口传送到接收缓冲区。取值为:
True
False OutBufferSize 获得或设置传输缓冲区中的字符数 ParityReplace 获得或设置当出现奇偶校验错误时,用来替换数据流中无效字符的字符。 RThreshold 获得或设置要接受的字符数。 RTSEnable 决定能否使行有效。取值为:
True
False Settings 获得或设置波特率、奇偶校验、数据位和停止位参数。 SThreshold 获得或设置传输中所能允许的最小字符数 Tag 存储程序所需的附加数据 Top 距容器顶部边界的距离
MSComm1.PortOpen = False
Else
End IfCombo1.AddItem "COM1"
Combo1.AddItem "COM2"
Combo1.AddItem "COM3"
Combo1.AddItem "COM4"
Combo1.AddItem "COM5"
Combo1.AddItem "COM6"
Combo1.AddItem "COM7"
Combo1.AddItem "COM8"
Combo1.AddItem "COM9"
Combo1.AddItem "COM10"
Combo1.AddItem "COM11"
Combo1.AddItem "COM12"
Combo1.AddItem "COM13"
Combo1.AddItem "COM14"
Combo1.AddItem "COM15"
Combo1.AddItem "COM16"
Combo1.ListIndex = 2Combo2.AddItem "256000"
Combo2.AddItem "128000"
Combo2.AddItem "115200"
Combo2.AddItem "57600"
Combo2.AddItem "38400"
Combo2.AddItem "28800"
Combo2.AddItem "19200"
Combo2.AddItem "14400"
Combo2.AddItem "12800"
Combo2.AddItem "11520"
Combo2.AddItem "9600"
Combo2.AddItem "4800"
Combo2.AddItem "2400"
Combo2.AddItem "1200"
Combo2.AddItem "600"Combo3.AddItem "无None"
Combo3.AddItem "奇Odd"
Combo3.AddItem "偶Even"Combo4.AddItem "4"
Combo4.AddItem "5"
Combo4.AddItem "6"
Combo4.AddItem "7"
Combo4.AddItem "8"Combo5.AddItem "1"
Combo5.AddItem "2"MSComm1.CommPort = Combo1.ListIndex + 1
MSComm1.Settings = "9600,n,8,1"
ComOpen.Caption = "打开串口"
Shape1.FillColor = &HFFFFC0End Sub
Private Sub ComOpen_Click()
On Error GoTo uerror '发现错误跳转到错误处理
If ComOpen.Caption = "关闭串口" Then
MSComm1.PortOpen = False
ComOpen.Caption = "打开串口" '按钮文字改变
Shape1.FillColor = &HFFFFC0 '灯颜色改变
Else
MSComm1.PortOpen = True
ComOpen.Caption = "关闭串口"
Shape1.FillColor = &HFF
End If
Exit Sub
uerror:
msg$ = "无效端口号" '错误显示
Title$ = "串口调试助手"
X = MsgBox(msg$, 48, Title$) '48标示显示警告图标
End Sub
Private Sub MSComm1_OnComm()
Dim BytReceived() As Byte
Dim strBuff As String
Dim i As Integer
Select Case MSComm1.CommEvent '事件发生
Case 2
Cls
MSComm1.InputLen = 0 '读入缓冲区全部内容
strBuff = MSComm1.Input '读入到缓冲区
Label10.Caption = Label10.Caption + Len(strBuff) '接收计数
If MSComm1.InputMode = comInputModeBinary Then
BytReceived() = strBuff '如果是二进制接收模式则进行数据处理,否则直接显示字符串
For i = 0 To UBound(BytReceived)
If Len(Hex(BytReceived(i))) = 1 Then
strData = strData & "0" & Hex(BytReceived(i)) & " " '如果只有一个字符,则前补0,如F显示0F,最后补空格
Else '方便显示观察如: 00 0F FE
strData = strData & Hex(BytReceived(i)) & " "
End If
Next
TextReceive = TextReceive & strData
strData = ""
Else
TextReceive = TextReceive & strBuff
End If
End Select
End Sub
Private Sub ComSend1_Click() '手动发送Dim Temp(0) As Byte
Dim strBuff As StringIf Option1.Value = True Then '如果显示16进制发送则进行16进制处理 ,这里只发送一个
Temp(0) = "&H" & TextSend
MSComm1.Output = Temp '发送一个16进制
Else
strBuff = TextSend
End IfIf MSComm1.PortOpen = False Then
MsgBox "请打开串口"
End IfOn Error GoTo uerror
MSComm1.Output = strBuff
Label11.Caption = Label11.Caption + Len(strBuff) '发送计数
uerror:End Sub
Private Sub ComSend2_Click()If ComSend2.Caption = "自动发送" Then
ComSend2.Caption = "关闭自动发送"
Timer1.Interval = TextTime.Text
Timer1.Enabled = True
Else
ComSend2.Caption = "自动发送"
Timer1.Enabled = False
End IfEnd Sub
Private Sub ComClean1_Click()TextSend.Text = "" '清空发送窗口End Sub
Private Sub Option3_Click()MSComm1.InputMode = comInputModeBinary '选择接收方式End Sub
Private Sub Option4_Click()MSComm1.InputMode = comInputModeText '选择接收方式End Sub
Private Sub Timer1_Timer()Call ComSend1_Click '定时调用手动发送End SubPrivate Sub Timer2_Timer()If Combo3 = "无None" Then
MSComm1.Settings = Str(Combo2) + "N" + Str(Combo4) + Str(Combo5)
ElseIf Combo3 = "奇Odd" Then
MSComm1.Settings = Str(Combo2) + "O" + Str(Combo4) + Str(Combo5)
ElseIf Combo3 = "偶Even" Then
MSComm1.Settings = Str(Combo2) + "E" + Str(Combo4) + Str(Combo5)
End IfEnd SubPrivate Sub Combo1_Click()If MSComm1.PortOpen = True Then '如果串口打开先关闭后再进行其他操作
MSComm1.PortOpen = False
End If
MSComm1.CommPort = Combo1.ListIndex + 1 '读取com口号End SubPrivate Sub ComClean3_Click()Label10.Caption = 0
Label11.Caption = 0End SubPrivate Sub ComClean2_Click()TextReceive.Text = "" '接收窗口End Sub
功能上:实现了字符串的发送和接收,8位数据的十六进制发送和接收,有端口,波特率等设置。 缺点:
1:只可以发送两位十六进制数。
2:接收和发送的显示数据上有点不同步,十六进制的没有算进去。
3:没有TXT的文件发送和接收的功能。 如需要源程序的,可下载本文的图片,下载后把图片的.jpg格式改为.rar格式就可以解压出来了。 附:MSComm控件的属性: 属性 说明 (Name) MSComm控件的名称 (自定义) 打开属性页 CommPort 获得或设置通讯端口号 DTREnable 决定在通讯过程中是否使数据终端机状态线有效。取值为:
True
False EOFEnable 获得或设置是否搜索EOF字符。取值为:
True
False Handshaking 获得或设置软件的握手协议。取值为:
0 comNone
1 comXOnXoff
2 comRTS
3 comRTSXOnXOff InBufferSize 获得或设置接收缓冲区的大小,以字节数为单位。 Index 在对象数组中的编号 InputLen 获得或设置输入属性从接收缓冲区读出的字符数。 InputMode 获得或设置输入属性检索的数据类型。取值为:
0 comInputModeText
1 comInputModeBinary Left 距离容器左边框的距离 NullDiscard 决定是否将空字符串从端口传送到接收缓冲区。取值为:
True
False OutBufferSize 获得或设置传输缓冲区中的字符数 ParityReplace 获得或设置当出现奇偶校验错误时,用来替换数据流中无效字符的字符。 RThreshold 获得或设置要接受的字符数。 RTSEnable 决定能否使行有效。取值为:
True
False Settings 获得或设置波特率、奇偶校验、数据位和停止位参数。 SThreshold 获得或设置传输中所能允许的最小字符数 Tag 存储程序所需的附加数据 Top 距容器顶部边界的距离
VB串口通信1
VB串口通信
VB串口通信333333
VB Mscomm控件串口通讯应用1
51单片机串口通信软件程序集
串口通讯及其在VB平台下的实现0
《Visual C++_Turbo C串口通信编程实践》
51单片机串口通信软件程序集 - ,单片机,DS...
Qt编写串口通信程序全程图文讲解(一)
Qt编写串口通信程序全程图文讲解(二)
Qt编写串口通信程序全程图文讲解(三)
用 VB 做 USB 通信程序及USB基础知识
单片机和Pc机串口通信<转>_飞鸟留痕
Qt编写串口通信程序全程图文讲解(三)(转)
STM32 开发板DIY测试第四步:串口通信 - 『ARM DIY专区』 - 『 ARM论...
51单片机串口通信软件程序 - 中国电子前沿-->领先的嵌入式技术网站平台,单片机,DS...
VB实现关机1
VB程序设计1
采用VB实现组态软件与下位机的串行通信方法研究
串口编程实现单片机和PC的通讯1
通信〔1〕
通信〔1〕
通信基础知识1
党内通信[1]