当COM口相关的程序非法关闭或是COM口停止响应时,再次运行程序时会检测到端口是打开状态,你不能再重新打开,所以什么也执行不了了.这时你想关端口也不行.对端口的操作也执行不了.主要重起电脑后才可以恢复,问在VB里加入一段什么代码可以不重起电脑就恢复端口状态.
解决方案 »
- 求API用法
- 求04年全国二级VB机试最后一题答案?
- 定义类里面关于怎么对一个整形数组进行let和get。
- CrystalReport参数设定!~?
- 为什么在98系统下Ado控件就不能用了,在线等!
- 求救好心人帮帮忙吧,关于保存图片的问题,很简单的
- [急救]数据库高手达人狂入!
- 关于keypress
- 如何编程读WIN2K SAM库文件(被系统独占了.)
- 如何得知任务栏的状态(大小,是否显示时间,是否自动隐藏……)?
- 信息:大名鼎鼎的Lavolpe (Keith)将要在Planet-Source-Code上发布Unicode Textbox源码
- 求教:如何能把1,414.20转成1414.2,谢谢!!!
2)或采用通信模块放独立窗体,通过全局变量传递数据,在主窗体使用TIMER控件定时UNLOAD通信窗体,然后即刻加载。
程序可长时间运行不出错。
Private Sub Timer1_Timer()
If lbltime.Caption <> CStr(Time) Then
FrmRun.Caption = "运行图" & Space(100) & Date$ & Space(6) & Time$
frmMain.Caption = "串口接收发送" & Space(60) & Date$ & Space(6) & Time$ '在内存中加载通信窗体
miao = Right$(Time$, 2)
fen = Right$(Left$(Time$, 5), 2)
mmm = Val(fen * 60) + Val(miao) '每小时卸载加载frmMdb
If miao = "15" Or miao = "45" Then
Unload frmMain '卸载通信窗体
End If
End If
End If
3)串口通信受现场电磁干扰的错误,引起VB程序处于某种不确定的错误而无法捕获.代码就是针对此情况作
出的处理.理由是WINDOWS系统当机而程序无法执行时,就是强行退出该线程.
详细参阅:http://topic.csdn.net/u/20071220/21/2dd86b50-2f5d-47b0-b4a9-3b232b493396.html
程序出错后是不是没完全退出?如果已经完全退出了,还是占用COM口,那就没任何办法
Option Explicit
Private Declare Function ExitWindowsEx Lib "user32" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long
Private Const EWX_LogOff As Long = 0
Private Declare Function GetLastError Lib "kernel32" () As LongPrivate Sub cmdLogoff_Click()
ExitWindowsEx (EWX_LogOff), &HFFFF
'MsgBox "ExitWindowsEx's GetLastError " & GetLastError
End
End Sub
"的,在你的HOOK中都保存CreatFile返回的句柄,这样就可以把你的代码注入他的程序,关闭串口和文件操作一样CloseHandle就行.