5 个解决方案
#1
如果你的硬件上只是有一个串口,那就没必要用两个控件来处理的呀,即使是跨窗口操作,也可以直接通过窗口对象名来实现控件属性的调用的呀,如在Form2中可以这样设置Form1中的MSComm控件属性:
Form1.MSComm1.PortOpen = False
Form1.MSComm1.PortOpen = False
#2
无法控制,不能同时打开
#3
你的情况只需要一个 MSComm 控件,例如在 Form1 上。
你可以在不同的窗体声明控件变量,如:
Dim WithEvents mycomm As MSComm
窗体下的代码
Set mycomm = Form1.MSComm1
With mycomm
If mycomm.PortOpen = True Then mycomm.PortOpen = False
mycomm.CommPort = 1
'......
End With
窗体中会有 mycomm_OnComm 事件可用。
你可以在不同的窗体声明控件变量,如:
Dim WithEvents mycomm As MSComm
窗体下的代码
Set mycomm = Form1.MSComm1
With mycomm
If mycomm.PortOpen = True Then mycomm.PortOpen = False
mycomm.CommPort = 1
'......
End With
窗体中会有 mycomm_OnComm 事件可用。
#4
制作一个控件或者窗体,假如叫C,将MSCOMM32放进去,写好对应的接收数据代码,设置MSCOMM32属性代码对外开放,接收数据,保存到C的某属性内,对外开放,对外开放MSCOMM32的使用状态,接收完成后,最好可以 RaiseEvent 出来,然后将C保存为一个“模块”,在窗体A或B中嵌入C即可,判断C的使用状态,调用C的初始化代码,接收C的事件,调用数据属性。
#5
如果你使用的mdi child窗口,那么你可以使用下面代码来使用各自的串口控件
form1,form2 上都放一个mscomm控件,都叫MSComm1,都放上下面代码
Private Sub Form_LostFocus()
mscomm1.portopen=false
end sub
Private Sub Form_GotFocus()
MSComm1.ComPort=1
mscomm1.portopen=te=rue
end sub
form1,form2 上都放一个mscomm控件,都叫MSComm1,都放上下面代码
Private Sub Form_LostFocus()
mscomm1.portopen=false
end sub
Private Sub Form_GotFocus()
MSComm1.ComPort=1
mscomm1.portopen=te=rue
end sub
#1
如果你的硬件上只是有一个串口,那就没必要用两个控件来处理的呀,即使是跨窗口操作,也可以直接通过窗口对象名来实现控件属性的调用的呀,如在Form2中可以这样设置Form1中的MSComm控件属性:
Form1.MSComm1.PortOpen = False
Form1.MSComm1.PortOpen = False
#2
无法控制,不能同时打开
#3
你的情况只需要一个 MSComm 控件,例如在 Form1 上。
你可以在不同的窗体声明控件变量,如:
Dim WithEvents mycomm As MSComm
窗体下的代码
Set mycomm = Form1.MSComm1
With mycomm
If mycomm.PortOpen = True Then mycomm.PortOpen = False
mycomm.CommPort = 1
'......
End With
窗体中会有 mycomm_OnComm 事件可用。
你可以在不同的窗体声明控件变量,如:
Dim WithEvents mycomm As MSComm
窗体下的代码
Set mycomm = Form1.MSComm1
With mycomm
If mycomm.PortOpen = True Then mycomm.PortOpen = False
mycomm.CommPort = 1
'......
End With
窗体中会有 mycomm_OnComm 事件可用。
#4
制作一个控件或者窗体,假如叫C,将MSCOMM32放进去,写好对应的接收数据代码,设置MSCOMM32属性代码对外开放,接收数据,保存到C的某属性内,对外开放,对外开放MSCOMM32的使用状态,接收完成后,最好可以 RaiseEvent 出来,然后将C保存为一个“模块”,在窗体A或B中嵌入C即可,判断C的使用状态,调用C的初始化代码,接收C的事件,调用数据属性。
#5
如果你使用的mdi child窗口,那么你可以使用下面代码来使用各自的串口控件
form1,form2 上都放一个mscomm控件,都叫MSComm1,都放上下面代码
Private Sub Form_LostFocus()
mscomm1.portopen=false
end sub
Private Sub Form_GotFocus()
MSComm1.ComPort=1
mscomm1.portopen=te=rue
end sub
form1,form2 上都放一个mscomm控件,都叫MSComm1,都放上下面代码
Private Sub Form_LostFocus()
mscomm1.portopen=false
end sub
Private Sub Form_GotFocus()
MSComm1.ComPort=1
mscomm1.portopen=te=rue
end sub