以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关闭串口报错 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=163317) |
-- 作者:873773115 -- 发布时间:2021/4/23 10:16:00 -- 关闭串口报错 老师好。现在有个问题请教一下 现在如果在窗体的 afterclose 事件里 使用代码关闭串口,会直接导致系统假死 如果不关闭串口,直接关闭系统,会在系统关闭后,出现 《通用技术平台已停用》 如果在beforecloseproject 事件里 使用代码关闭串口,也会直接导致系统假死 代码如下: If ports.Contains("COM1") = True AndAlso Ports("COM1").IsOpen Then Ports("COM1").Close() End If 请问老师,如何解决呢? |
-- 作者:有点蓝 -- 发布时间:2021/4/23 10:46:00 -- 放到窗口按钮里点击有没有问题?放到命令窗口执行有没有问题? |
-- 作者:873773115 -- 发布时间:2021/4/23 14:31:00 -- 放在窗口按钮里不行,但不是每次都会假死,可能3次会出现一次假死 e.Form.TimerEnabled = False If ports.Contains("COM1") = True AndAlso Ports("COM1").IsOpen Then Ports("COM1").Close() End If |
-- 作者:有点蓝 -- 发布时间:2021/4/23 14:58:00 -- 假死的可能程序还在执行什么代码,等一段时间看看能不能结束 |
-- 作者:873773115 -- 发布时间:2021/4/23 15:18:00 -- 不是,直接就假死了,等几分钟后任然是假死状态。只能结束进程 这里有个帖子说的问题 和我遇到的是一样的,还提供了解决方法,但是没看懂,请老师帮忙看下 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&replyID=884352&ID=132444&skin=1
|
-- 作者:有点蓝 -- 发布时间:2021/4/23 15:27:00 -- 他是写错串口名称。 试试每次接收完毕数据后添加一句:Application.DoEvents |
-- 作者:873773115 -- 发布时间:2021/4/23 16:54:00 -- 不行,串口数据刷新放在窗口的 timertick事件中了,然后在里面加了 Application.DoEvents afterload 事件中设置了打开 timertick 开关 直接窗口没打开就假死了 |
-- 作者:873773115 -- 发布时间:2021/4/23 17:02:00 -- 老师补充一下,如果电脑没插上与地磅相连的数据线时候,随便怎么操作,啥事儿都没有 只有在线正常连接的时候,数据也正常传输的时候,使用串口关闭时,会出现这种情况
|
-- 作者:有点蓝 -- 发布时间:2021/4/23 17:27:00 -- 不关闭串口,直接退出窗口,等窗口关闭后,再另外关闭串口有没有问题? |
-- 作者:873773115 -- 发布时间:2021/4/23 18:38:00 -- 测试了。也不行,也是直接假死 只要线路正常连接,有数据过来的话 使用 Ports("COM1").close() 这个方法关闭串口,就会假死
|