以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]串口通信断电  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=136178)

--  作者:YDS
--  发布时间:2019/6/9 16:25:00
--  [求助]串口通信断电

TimerTick

窗口计时器代码

If Ports.PortNames.Count > 0 Then
    If vars("com") > "" Then
        If Ports.Contains(vars("com")) = False Then
            Ports.Add(vars("com"))
            With Ports(vars("com"))
                .Close()
                .Parity = Parity.None
                .Handshake = Handshake.None
                .StopBits = StopBits.One
                .BaudRate = 19200
                .DataBits = 8
                .ReadBufferSize() = 4096
                .WriteBufferSize() = 2048
                .Open()
            End With
        Else
            If Ports(vars("com")).IsOpen = False Then
                Ports(vars("com")).Open()
            End If
        End If
    Else
        vars("com") = Ports.PortNames(Ports.PortNames.Count-1)
        If Ports.Contains(vars("com")) = False Then
            Ports.Add(vars("com"))
            With Ports(vars("com"))
                .Close()
                .Parity = Parity.None
                .Handshake = Handshake.None
                .StopBits = StopBits.One
                .BaudRate = 19200
                .DataBits = 8
                .ReadBufferSize() = 4096
                .WriteBufferSize() = 2048
                .Open()
            End With
        Else
            If Ports(vars("com")).IsOpen = False Then
                Ports(vars("com")).Open()
            End If
        End If
    End If
Else
    msgbox("没有发现本机com端口,请确认是否已经连接并且完成驱动安装!",64,"温馨提示")
    e.form.Close()
    Return
End If

问题:
串口设备的断电再加电以后不会工作,需要如何处理?串口设备断电以后Ports(vars("com")).IsOpen应该是什么状态?如何判断串口设备是否已经断电?

--  作者:有点甜
--  发布时间:2019/6/9 16:28:00
--  

1、写代码判断和弹出值看一下,不就知道了?

 

2、断电后再加电,就是相当于你拔出再插入。你要确保com的端口号正确;你要确保close掉端口,然后重新open。

 

 


--  作者:YDS
--  发布时间:2019/6/10 8:07:00
--  

1、写代码判断和弹出值看一下,不就知道了?


能说一下具体要求如何让判断吗?


--  作者:有点甜
--  发布时间:2019/6/10 8:51:00
--  

断电以后msgbox判断,如

 

msgbox(ports("COM1").IsOpen)

 

try
    ports("COM3").open
catch ex As exception
    msgbox(123)
End try


--  作者:YDS
--  发布时间:2019/6/10 9:45:00
--  
现在的问题是只要串口连接成功后msgbox(Ports(vars("com")).IsOpen)一直是true,即使断电了也是true,也就是通过Ports(vars("com")).IsOpen无法检测该串口是否断电了
--  作者:有点甜
--  发布时间:2019/6/10 9:49:00
--  

那你断电后测试

 

try
    ports("COM3").open
catch ex As exception
    msgbox(123)
End try


--  作者:YDS
--  发布时间:2019/6/10 9:53:00
--  
try
    Ports(vars("com")).open
catch ex As exception
    msgbox(123)
End try

执行上述操作没有弹窗

--  作者:有点甜
--  发布时间:2019/6/10 10:50:00
--  

那你发送信息,接收信息,是否正常?

 

http://www.foxtable.com/webhelp/scr/1977.htm

 


--  作者:YDS
--  发布时间:2019/6/10 11:38:00
--  
Dim s As String 
s = Ports(vars("com")).ReadExisting()
msgbox(s)  s为空


Dim s As String = "foxtable"
Ports(vars("com")).WriteLine(s)
没有任何反应



--  作者:有点甜
--  发布时间:2019/6/10 12:17:00
--  

 

那就没办法处理了。如果你发送某个命令过去,会返回一个数值,这样才能变通处理。也就是,如果发数据过去,没有数值返回,就是没连上了。