以文本方式查看主题 - 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 --
|
|
-- 作者:有点甜 -- 发布时间:2019/6/10 8:51:00 -- 断电以后msgbox判断,如
msgbox(ports("COM1").IsOpen)
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 |
|
-- 作者: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 --
那就没办法处理了。如果你发送某个命令过去,会返回一个数值,这样才能变通处理。也就是,如果发数据过去,没有数值返回,就是没连上了。
|