vb6中两个页面的两个MSComm控件,共用电脑一个串口ComPort,怎么控制?

时间:2022-08-29 22:23:27
具体情况是:在页面A中有一个串口通信控件MSComm1,设置的串口号ComPort是1;在页面B中有一个串口通信控件MSComm2,设置的串口号ComPort也是1。现在是想如果串口1在A页面中打开了MSComm1.PortOpen = True,希望在B页面中设置MSComm2.ComPort=1,就可以直接通过串口1收发数据了。不知道这种能不能实现?

5 个解决方案

#1


如果你的硬件上只是有一个串口,那就没必要用两个控件来处理的呀,即使是跨窗口操作,也可以直接通过窗口对象名来实现控件属性的调用的呀,如在Form2中可以这样设置Form1中的MSComm控件属性:
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 事件可用。

#4


制作一个控件或者窗体,假如叫C,将MSCOMM32放进去,写好对应的接收数据代码,设置MSCOMM32属性代码对外开放,接收数据,保存到C的某属性内,对外开放,对外开放MSCOMM32的使用状态,接收完成后,最好可以 RaiseEvent 出来,然后将C保存为一个“模块”,在窗体A或B中嵌入C即可,判断C的使用状态,调用C的初始化代码,接收C的事件,调用数据属性。

vb6中两个页面的两个MSComm控件,共用电脑一个串口ComPort,怎么控制?

#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



#1


如果你的硬件上只是有一个串口,那就没必要用两个控件来处理的呀,即使是跨窗口操作,也可以直接通过窗口对象名来实现控件属性的调用的呀,如在Form2中可以这样设置Form1中的MSComm控件属性:
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 事件可用。

#4


制作一个控件或者窗体,假如叫C,将MSCOMM32放进去,写好对应的接收数据代码,设置MSCOMM32属性代码对外开放,接收数据,保存到C的某属性内,对外开放,对外开放MSCOMM32的使用状态,接收完成后,最好可以 RaiseEvent 出来,然后将C保存为一个“模块”,在窗体A或B中嵌入C即可,判断C的使用状态,调用C的初始化代码,接收C的事件,调用数据属性。

vb6中两个页面的两个MSComm控件,共用电脑一个串口ComPort,怎么控制?

#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