求助! VB串口通讯~

dragon632 2008-08-08 01:01:38
正在做一个VB的串口通讯数据采集,用Mscomm控件和MSCOMM_ONCOM这个事件做,当用Commdialog时,COM事件就停止响应了.
有什么办法能把COM事件做成独立运行的一个任务,不受到其他事件的拖延??
...全文
202 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
apisoftware 2008-08-21
  • 打赏
  • 举报
回复
这个问题,最后改一个串口的接收方式 用timer 来监测 mscomm1.InBufferCount 是否为0
不为0时就取出来.
Edistein 2008-08-21
  • 打赏
  • 举报
回复
API用这个:

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type


'例了:======================================
Private Sub Command2_Click()
Dim ofn As OPENFILENAME
Dim rtn As String

ofn.lStructSize = Len(ofn)
ofn.hwndOwner = Me.hWnd
ofn.hInstance = App.hInstance
ofn.lpstrFilter = "所有文件"
ofn.lpstrFile = Space(254)
ofn.nMaxFile = 255
ofn.lpstrFileTitle = Space(254)
ofn.nMaxFileTitle = 255
ofn.lpstrInitialDir = App.Path
ofn.lpstrTitle = "打开文件"
ofn.flags = 6148
rtn = GetOpenFileName(ofn)
If rtn >= 1 Then
MsgBox ofn.lpstrFile
Else
MsgBox "Cancel Was Pressed"
End If
End Sub
Michael_g 2008-08-21
  • 打赏
  • 举报
回复
因为VB 是单线程的,当你弹出一个模太对话框时整个程序就会停在那里。这只能变相的去解决这个问题,你可以建立两个独立的EXE ,然后用DDE或COM 在两个程序间进行通信,只能这样。
Edistein 2008-08-21
  • 打赏
  • 举报
回复
CommonDialog可不可以用且一个Windows API来代替呢?如果有这样一个API,那个文件窗口就不会中断通讯
就是不晓得有没有这样一个API了.....
zuojiwei 2008-08-21
  • 打赏
  • 举报
回复
学习
dragon632 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zdingyun 的回复:]
引用 2 楼 jacyfx 的回复:
去我的空间看下吧,里面可能有你要的资料,是楼上的这个高手帮我解决的。

2楼客气了。
LZ,我认为在OnComm事件中尽量不使用MSGBOX或CommonDialog等,那会中断通信。对前者可用标签来处理提示。后者应通过代码来自动提供保存数据的路径及文件名。
所以我只能关注,帮顶。
[/Quote]

这个问题看来不太好解决...
zdingyun 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jacyfx 的回复:]
去我的空间看下吧,里面可能有你要的资料,是楼上的这个高手帮我解决的。
[/Quote]
2楼客气了。
LZ,我认为在OnComm事件中尽量不使用MSGBOX或CommonDialog等,那会中断通信。对前者可用标签来处理提示。后者应通过代码来自动提供保存数据的路径及文件名。
所以我只能关注,帮顶。
jacyfx 2008-08-08
  • 打赏
  • 举报
回复
去我的空间看下吧,里面可能有你要的资料,是楼上的这个高手帮我解决的。
zdingyun 2008-08-08
  • 打赏
  • 举报
回复
关注!

7,763

社区成员

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

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