程序非法中止后,COM口怎么强行关闭。

csuker 2008-03-28 04:11:32
程序非法关闭后,再次打开COM口时总是提示“端口已经打开”,有什么办法通过程序强行关闭。
...全文
180 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
csuker 2008-03-30
  • 打赏
  • 举报
回复
我补充一点,我的目的不是想解决程序不出错的问题。因为出错的程序我没有源码也没有其实办法避免。
现在是想找到办法在出问题后怎么解决,怎么释放资源。
csuker 2008-03-30
  • 打赏
  • 举报
回复
要是我能优化代码就不问大家了。关键是其实程序造成的,我也没办法避免。所以才找这方面的方法。
请知道的大侠快告诉我吧。不知道解决办法的我谢谢大家顶贴了。
zdingyun 2008-03-30
  • 打赏
  • 举报
回复
既然是程序非法关闭造成的,你应从导致程序非法关闭的原因查找,完善你的代码.
csuker 2008-03-30
  • 打赏
  • 举报
回复
程序再执行时判断端口是开的,可是这根本没意思.因为这个端口相当于被挂死了,你不重起电脑这个端口就不能用了.
liang80318 2008-03-29
  • 打赏
  • 举报
回复
换个思路啊,在非法关闭时,你的代码就执行不到了,所以可以换到程序启动时,执行到串口启动,判断一下状态就是了
csuker 2008-03-29
  • 打赏
  • 举报
回复
以前说的这些我都知道.我是说在你不能控制的情况下打开端口的程序在未关闭端口的时候就退出了.这时怎么办?类似以上的方法我谢谢大家了,我已经知道了.
zdingyun 2008-03-29
  • 打赏
  • 举报
回复
用下列代码可判断可用,出错或占用Com号:
Option Explicit
Dim a As Integer
Private Sub Command1_Click()
On Error GoTo uerror
For a = 1 To 16
MSComm1.CommPort = a
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
Print "可用Com号= "; a
MSComm1.PortOpen = False
Else
End If
Next
Exit Sub
uerror:
Print "出错或占用Com号= "; a
Resume Next
End Sub
csuker 2008-03-28
  • 打赏
  • 举报
回复
上面说的这些我是知道的.也加在程序前面了,不过我说的情况是当程序不正常关闭后才会出的情况.
判断端口是否打开时,Mscomm1.Portopen等于FLASE,
但运行到后面打开端口的时候还是提示"端口已经打开"
zdingyun 2008-03-28
  • 打赏
  • 举报
回复

Private Sub Form_Load()
On Error GoTo userr
MSComm1.PortOpen = True
'Print MSComm1.PortOpen
Exit Sub
userr:
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
'Print MSComm1.PortOpen
Resume
End Sub
sstlwg 2008-03-28
  • 打赏
  • 举报
回复
好久没用VB,大概思路是这样
sstlwg 2008-03-28
  • 打赏
  • 举报
回复
异常退出时
if Mscomm1.Portopen=true then mscomm1.portopen=false
sstlwg 2008-03-28
  • 打赏
  • 举报
回复
if mscomm1.portopen=true then mscomm1.portopen=fasle.. . ^^




sstlwg 2008-03-28
  • 打赏
  • 举报
回复
if com1.enabled=true then
com1.enabled=fasle

7,785

社区成员

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

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