vb 怎么实现串口端口的扫描呢?就是将电脑上现有的串口号扫描罗列出来。

hollandjzy 2009-09-08 08:18:20
如题:
vb 怎么实现串口端口的扫描呢?就是将电脑上现有的串口号扫描罗列出来。
...全文
463 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzhjic 2009-09-09
  • 打赏
  • 举报
回复
搞错,虽然pc支持串口数没那么多,但可遍历数很大,1~1000都没问题。
hbkjccl 2009-09-08
  • 打赏
  • 举报
回复
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
hollandjzy 2009-09-08
  • 打赏
  • 举报
回复
呼叫OF123 大哥还在不
hollandjzy 2009-09-08
  • 打赏
  • 举报
回复
四楼的方法是行 但有时候 虚拟端口的端口 可能会比较大 顺序查找的话没什么效率啊,而且事先也不知道查到哪为止
of123能告诉我怎么查注册表吗
yangbo_cuit 2009-09-08
  • 打赏
  • 举报
回复
4楼的方法可行
of123 2009-09-08
  • 打赏
  • 举报
回复

查注册表。可以得到所有固有的硬件串口和虚拟串口。
gzhjic 2009-09-08
  • 打赏
  • 举报
回复


Private Sub Form_Load()
With frmPort1
If .MSComm.PortOpen = True Then .MSComm.PortOpen = False
For i = 1 To 16
On Error Resume Next
'当运行发生错误时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行
.MSComm.CommPort = i
.MSComm.PortOpen = True
Select Case Err.Number
Case 0 '错误号为0(也就是没出错),
cboPort.AddItem "Com" & Trim(i)
.MSComm.PortOpen = False
Case 8005 '错误号为8005,也就是端口被占用
cboPort.AddItem "Com" & Trim(i) & " 已经占用"
.MSComm.PortOpen = False
End Select
Err = 0 '将错误号置0. 注:Err.Number可以简写为Err ,2者等效
Next
End With
End Sub
'以上是在名为' frmPort1 的窗体中添加了 一个名为MSComm的MSComm控件.
'在当前窗体中用添加一个名为 cboPort的ComboBox 控件,用于列出可用的串口端口号





来自网络。代码一看就清楚,不用解释了吧。
hollandjzy 2009-09-08
  • 打赏
  • 举报
回复
我要扫描的是串口端口
  • 打赏
  • 举报
回复
small but effective tool(if u know the rite way to use it..u might do wonders..)

--------------------
you need:

2 textboxes
1 listbox
3 commandbuttons
1 timer
1 winsock control
--------------------

Code: VB
Private Sub Command1_Click() Timer1.Enabled = TrueEnd SubPrivate Sub Command2_Click() Timer1.Enabled = False Text2.Text = "0"End SubPrivate Sub Command3_Click() List1.ClearEnd SubPrivate Sub Timer1_Timer() On Error Resume Next Winsock1.Close Text2.Text = Int(Text2.Text) + 1 Winsock1.RemoteHost = Text1.Text Winsock1.RemotePort = Text2.Text Winsock1.ConnectEnd SubPrivate Sub Winsock1_Connect() List1.AddItem Winsock1.RemotePort & " is open!"End Sub--------------------
explanation:

text1 = IP to scan
text2 = starting port
list1 = list where all open ports are shown
command1 = start
command2 = stop and reset
command3 = clear port list
timer1 = will make the winsock control to try ports
hollandjzy 2009-09-08
  • 打赏
  • 举报
回复
大家都没上班吗 自己先顶
hollandjzy 2009-09-08
  • 打赏
  • 举报
回复
我以前做过一个一转16 的虚拟串口 每次换个USB口都会有不同的 虚拟口,有时候虚拟口都到40多的 所以我觉得遍历方法会不可靠
水猿兵团五哥 2009-09-08
  • 打赏
  • 举报
回复
不想说话
gzhjic 2009-09-08
  • 打赏
  • 举报
回复
一般pc支持16个串口,所以想1~17去遍历也不行,如果事先知道没那么多串口,可以1~8遍历就行,我试过了,这样遍历可以将虚拟串口一块罗列出来,注册表的方法也不错,但如果操作系统不同,位置会不会不同呢?还有如果人为在注册表删掉键值,读出来就是错误了。一般在form_load里面判断一次,速度应该不是问题吧?

7,762

社区成员

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

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