MScomm无效的端口号

tw4423 2011-06-10 10:33:57
'串口初始化
Private Sub Form_Load()
MSComm1.CommPort = 1 '设置通信端口号为COM1
MSComm1.Settings = "9600,n,8,1" '设置串口参数
MSComm1.InputMode = 0 '接收文本型数据
MSComm1.PortOpen = True '打开通信端口1
MSComm2.CommPort = 2 '设置通信端口号为COM2
MSComm2.Settings = "9600,n,8,1" '设置串口参数
MSComm2.InputMode = 0 '接收文本型数据
MSComm2.PortOpen = True '打开通信端口2
End Sub
'把字符通过串口发送出去
'启动定时器
Private Sub Cmdsend_Click()
MSComm1.Output = Trim(Textsend.Text)
Timer1.Enabled = True
End Sub
'接收字符
Private Sub Timer1_Timer()
Dim buf$
Timer1.Enabled = False
buf = Trim(MSComm2.Input) '将缓冲区内的数据读入buf变量中
If Len(buf) = 0 Then '判断缓冲区内是否存在数据
TextReceive.Text = ""
Else
TextReceive.Text = buf
End If
End Sub
'停止程序运行
Private Sub Cmdquit_Click()
Unload Me
End Sub
'关闭通信端口,
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
MSComm2.PortOpen = False
End Sub




在运行到 MSComm2.PortOpen = True 是叫报错 无效的端口号。
我在设备管理器那里检查了下,发现通信端口只有com1 没有发现com2 请问是不是这个原因呢????这个应该问题怎么解决呢,谢谢!!!
...全文
1056 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2011-06-10
  • 打赏
  • 举报
回复
打开设备管理器看看里面有没有COM2?如果没有,那么你的程序肯定出错。
zdingyun 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tw4423 的回复:]
为什么呢,是不一般电脑都只有一个COM口呢
[/Quote]

目前的电脑主板(台式机)还保留1个COM口,较老的主板有2个COM口的(2000年前)
zdingyun 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tztz520 的回复:]
只有一个COM口也不能说端口号就一定是1呀
[/Quote]
LZ的代码执行到
MSComm2.PortOpen = True
行时报错,此时LZ的设置
MSComm2.CommPort = 2
而在
MSComm2.PortOpen = False的状态下,MSComm控件的端口号在WINXP下可为1-16的任意号,只有打开串口号时会对不存在的串口号报错.

见MSDN:
CommPort 属性
设置并返回通讯端口号。
语法
object.CommPort[ = value ]
CommPort 属性语法包括下列部分:
部分 描述
object 对象表达式,其值是“应用于”列表中的对象。
value 一整型值,说明端口号。
说明
在设计时,value 可以设置成从 1 到 16 的任何数(缺省值为 1)。但是如果用 PortOpen 属性打开一个并不存在的端口时,MSComm 控件会产生错误 68(设备无效)。

警告 必须在打开端口之前设置 CommPort 属性。

数据类型

Integer


tztz520 2011-06-10
  • 打赏
  • 举报
回复
具体是如何分配端口号我不懂, 但是这个是可以配置的, 你在设备管理器里看看你的端口号是什么就知道了.
tw4423 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tztz520 的回复:]
只有一个COM口也不能说端口号就一定是1呀
[/Quote]

为什么呢,是不一般电脑都只有一个COM口呢
tztz520 2011-06-10
  • 打赏
  • 举报
回复
只有一个COM口也不能说端口号就一定是1呀
zdingyun 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 tw4423 的回复:]
'在运行到 MSComm2.PortOpen = True 是叫报错 无效的端口号。
我在设备管理器那里检查了下,发现通信端口只有com1 没有发现com2 请问是不是这个原因呢????这个应该问题怎么解决呢,谢谢!!!
[/Quote]

如果LZ
一定要使用2个COM口,则需要通过增加硬件来扩充COM口
1)使用USB转换RS232的数据线,安装驱动.
2)如果是台式机,可增加PCI串口扩展卡来增加COM,也要安装驱动,在WINXP下.
3)如果仅是调试软件需要2个COM,也可使用虚拟串口软件增加成对的虚拟串口.
zdingyun 2011-06-10
  • 打赏
  • 举报
回复
LZ的主板仅一个COM1口,没有COM2口.

Private Sub Form_Load()
MSComm1.CommPort = 1 '设置通信端口号为COM1
MSComm1.Settings = "9600,n,8,1" '设置串口参数
MSComm1.InputMode = 0 '接收文本型数据
MSComm1.PortOpen = True '打开通信端口1
'MSComm2.CommPort = 2 '设置通信端口号为COM2
'MSComm2.Settings = "9600,n,8,1" '设置串口参数
'MSComm2.InputMode = 0 '接收文本型数据
'MSComm2.PortOpen = True '打开通信端口2
End Sub

mokton 2011-06-10
  • 打赏
  • 举报
回复
是,就是这个原因。
只有在设备管理器里看到的设备才可以使用。

1,451

社区成员

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

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