真心求助vb串口通讯失败问题!!!

128821 2018-06-13 02:35:49
我用mscomm1控件尝试通过蓝牙传出串口(com3)读取单片机数据
运行即提示实时错误8002:invalid port number

Private Sub Form_Load()
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False ' 先判断串口是否打开,如果打开则先关闭
MSComm1.CommPort = 3 ' 设定端口1
MSComm1.Settings = "115200, N,8,1" ' 设置波特率,偶校验, 7位数据位,1位停止位
MSComm1.InBufferSize = 1024 ' 设置接收缓冲区为1024字节
MSComm1.OutBufferSize = 4096 ' 设置发送缓冲区为4096字节
MSComm1.InBufferCount = 0 ' 清空输入缓冲区
MSComm1.OutBufferCount = 0 ' 清空输出缓冲区
MSComm1.SThreshold = 1 ' 发送缓冲区空触发发送事件
MSComm1.RThreshold = 1 ' 每X个字符到接收缓冲区引起触发接收事件
MSComm1.OutBufferCount = 0 ' 清空发送缓冲区
MSComm1.InBufferCount = 0 ' 清空接收缓冲
MSComm1.PortOpen = True ' 打开串口
MSComm1.InputMode = comInputModeText


最奇怪在于用这个程序可以正常通过有线端口(com6)读取单片机传出数据,改成com3就不成了
而且用arduino的串口监视器可以正常读取两个端口(com6或com3)的数据
...全文
1757 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cbm6666 2018-07-22
  • 打赏
  • 举报
回复
i = Int(Text1.Text) ' 串口号 1-255

Text1.text 要先用Val转为数值 再说VB6串口号限制在 1-16
cbm6666 2018-07-22
  • 打赏
  • 举报
回复
设备管理器明显的提示 Com1 Com6 为啥你还用 COM3?
现在还是人类 2018-07-11
  • 打赏
  • 举报
回复

' 链接串口
Private Sub Command3_Click()
Dim i As Integer, _
m_Port As Integer
m_Port = 0
On Error Resume Next
i = Int(Text1.Text) ' 串口号 1-255
MSComm1.PortOpen = False
If Err.number <> 0 Then
Err.Clear
End If
MSComm1.CommPort = i
MSComm1.Settings = "57600,N,8,1"
MSComm1.PortOpen = True
If Err.number <> 0 Then
Err.Clear
m_Port = 0
GoTo protError
End If
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InputMode = comInputModeBinary
Shape1.BackColor = &HFFFF& ' 弄个链接成功提示色
Exit Sub
protError:
If m_Port = 0 Then
Shape1.BackColor = &HFF& ' 弄个链接失败提示色
Exit Sub
End If
End Sub

' 串口接收数据事件处理过程
Private Sub MSComm1_OnComm()
Dim Bytes() As Byte, _
Size As Long, _
by_tmp As Byte, _
str_out As String, _
i As Long

On Error Resume Next
' 通过事件标志判断是否接收数据
If MSComm1.CommEvent = comEvReceive Then
Bytes = MSComm1.Input '// 将数据接收到动态数组中
Size = UBound(Bytes) '// 取得数组最大边界数
' 将接收到的数据一个一个字节的进行识别处理,开始循环数组字节
For i = 0 To Size
by_tmp = Bytes(i)
str_out = str_out & Right("0" & Hex(by_tmp), 2) & " "
'这里你可以一个字节一个字节的处理信息
'......
next_data:
Next i
AddLog str_out
End If
End Sub
zdingyun 2018-06-19
  • 打赏
  • 举报
回复

设备管理器中存在的COM口,VBMsComm控件必然能打开。
zdingyun 2018-06-19
  • 打赏
  • 举报
回复
引用 2 楼 u012635375 的回复:
arduino和串口助手都能读所以串口肯定是存在的呀 串口号也改过无数次并没有成功…… 所以我才很无奈啊T·T
请在设备管理其中查看有几个COM口存在,存在的COM口号是多少。
of123 2018-06-14
  • 打赏
  • 举报
回复
把其他连接串口的应用都关了。或者重启机器试试。
笨狗先飞 2018-06-13
  • 打赏
  • 举报
回复
试试不用串口控件,用api来操作
128821 2018-06-13
  • 打赏
  • 举报
回复
出问题的行在 MSComm1.PortOpen = True MSComm1.PortOpen总显示为false
128821 2018-06-13
  • 打赏
  • 举报
回复
arduino和串口助手都能读所以串口肯定是存在的呀 串口号也改过无数次并没有成功…… 所以我才很无奈啊T·T
笨狗先飞 2018-06-13
  • 打赏
  • 举报
回复
信息量不助于问题的分析 invalid port number 无效的端口号 一般这个错误是在串口不存在的时候才会出来, 1) 那只能去确认运行的时候你串口是不是存在。 2) Intel 的ME也很喜欢用Com3,会不会有串口重叠的情况,实在不行设备管理器里去改一下串口号。
内容概要:本文围绕四旋翼飞行器在悬停状态下的控制问题,系统性地对比研究了三种经典控制策略——比例积分微分(PID)、线性二次型调节器(LQR)和模型预测控制(MPC)在响应品质与计算代价之间的权衡。研究基于四旋翼的线性化数学模型,分别设计并实现了这三种控制器,并依托Matlab仿真平台,对其控制性能(包括响应速度、稳定精度、抗干扰能力等动态特性)和计算资源消耗(涵盖运算时间、算法复杂度等实时性指标)进行了定量评估与基准测试。文章通过详尽的仿真数据分析,揭示了不同控制方法在性能表现与计算开销上的内在矛盾,旨在为无人机控制系统的设计者提供科学的选型依据,阐明各类控制范式在实际工程应用中的适用边界与优化方向。; 适合人群:具备自动控制理论基础、飞行器建模与仿真经验的研究生、科研人员及自动化、航空航天领域的工程师。; 使用场景及目标:① 掌握四旋翼飞行器线性化动力学建模方法;② 学习并对比PID、LQR、MPC三种控制器的设计流程与实现技巧;③ 深入理解控制系统中“响应品质”与“计算代价”这一核心矛盾,并学会进行工程权衡;④ 利用提供的Matlab代码进行复现、验证和进一步研究,以巩固理论知识并提升实践能力。; 阅读建议:此资源以Matlab代码实现为核心支撑,强调理论与实践的紧密结合。读者应在深入理解每种控制算法基本原理的基础上,重点动手运行和调试所提供的代码,通过修改关键参数、对比不同控制器的仿真结果来深化对各控制策略性能差异与适用场景的认识,从而真正掌握控制系统的分析、设计与优化方法。

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧