以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何判定没有串口 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148288) |
-- 作者:明天的灵 -- 发布时间:2020/4/3 21:17:00 -- 如何判定没有串口 For Each sp As String In Ports.PortNames Output.Show(sp) Next 以上语句可以输出所有串口名称,但是如果电脑中没有任何串口,sp 就是空的。使用串口前,首先要排除这种情况, 请问有什么语句能判断 第一个"sp" 是空的。 试过 sp Is Nothing 或 sp = “” 都不行
|
-- 作者:明天的灵 -- 发布时间:2020/4/4 11:23:00 -- 换一个思路,当串口为空时,这里的“sp”不知道是何种类型变量? |
-- 作者:明天的灵 -- 发布时间:2020/4/4 22:00:00 -- For Each sp As String In Ports.PortNames MessageBox.Show(sp) Next If sp = Nothing Then MessageBox.Show("没有串口") End If 用上述语句,第二段也会出错: --------------------------- 编译错误:未声明名称“sp”。 错误代码:If sp = Nothing Then --------------------------- 确定 |
-- 作者:明天的灵 -- 发布时间:2020/4/4 22:25:00 -- For Each sp As String In Ports.PortNames MessageBox.Show(sp) If sp = Nothing Then MessageBox.Show("没有串口") Else MessageBox.Show("有串口") End If Next 测试计算机没有COM 时, 以上代码没有任何输,说明当没有串口时,这个循环没有执行, 这样不知道用什么办法可以检查出没有串口 |
-- 作者:sloyy -- 发布时间:2020/4/4 22:33:00 -- Dim c1 As String Dim cms() As String = {"COM1","COM2","COM3","COM4"} For Each c As String In cms Ports.Add(c) For Each sp As String In Ports.PortNames If sp =c Then c1 =c Exit For End If Next If c1 > "" Then Exit For Next If c1 > "" With Ports(c1) .Close() .Parity = Parity.None .Handshake = Handshake.None .StopBits = StopBits.One .BaudRate = 2400 .DataBits = 8 .ReadBufferSize() = 2048 .WriteBufferSize() = 2048 .Open End With else messagebox.show("没有串口") End If
|
-- 作者:明天的灵 -- 发布时间:2020/4/4 22:50:00 -- 谢谢楼上,上面代码能检查出有没有串口,代码正确 |