收录日期:2020/10/27 23:42:17 时间:2016/07/25 02:29:29 标签:VB.NET
我用VB.NET在WINCE上编程,在第一个窗体中使用串口控件与WINCE系统的按键进行通信,获得按键值,进行命令解释,根据不同的命令值打开不同的窗体。
另一个窗体也有串口控件,也是用来监视按键。我想在第一个窗体关闭时也要关闭该窗体的串口,打开第二个界面时,把第二个界面的串口打开。串口号都为4。
代码如下:
调用的窗体
    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Dim ReadCount As Integer
        ReadCount = Me.SerialPort1.BytesToRead
        If ReadCount <> 3 Then
            Exit Sub
        End If
        ReDim InByte(SerialPort1.BytesToRead - 1)
        Me.SerialPort1.Read(InByte, 0, SerialPort1.BytesToRead)
        Me.Invoke(New Exp(AddressOf CommandExplain))
    End Sub

Private Sub CommandExplain()
        Select Case InByte(1)
            Case &H3B   '打开电压
                SerialPort1.Close()
                frmVoltage.Show()
                Me.Close()
            Case &H3A   '打开电流
                lblCurrent.ForeColor = Color.Red
                frmMainCurrent.Show()
            Case &H39   '打开频率
                lblPower.ForeColor = Color.Red
                frmMainPower.Show()
            Case &H38   '打开谐波畸变率
                lblTHDU.ForeColor = Color.Red
                frmMainHarmonicWave.Show()
            Case &H37   '打开相位角
                lblPhasorDiagram.ForeColor = Color.Red

            Case &H36   '打开故障信息

        End Select
    End Sub
    Private Sub frmMain_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        myPenClost_1.Dispose()
        myPenclost_2.Dispose()
        myPenSelect_1.Dispose()
        myPenSelect_2.Dispose()
        myPenAnJian.Dispose()
        myGraph.Dispose()
    End Sub
被调用的窗体
   Private Sub frmVoltage_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If SerialPort1.IsOpen = False Then
            Me.SerialPort1.Open()
        End If
    End Sub
问题就出现在:Me.SerialPort1.Open()
请大家帮忙解决。
串口对象定义到模块里。就可以大家都共用了。
或是在某个类中定义shared的共享访问变量也可以了。
感谢您这么快给我回帖,但是我使用的是串口控件,并且每个窗口都有,而不是在某个模块中定义的。
放下vb6的想法吧
控件是什么。不过是具有设计时可见这个属性的一些类。
在任意类中。定义如下
public shared seral as new SerialPort()
就可以了
添加事件:
AddHandler seral.DataReceived , Addressof MyOnComm

public shared sub MyOnComm(参数看帮助)
end sub
我在public class frmmain窗体类中添加不上啊
请您具体一点。谢谢。

Public Class Form2

    Private Sub Form2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
        '窗体的Click事件
        GlobalThings.serial.WriteLine("yeah")
    End Sub
End Class

Public Class GlobalThings
    Public Shared WithEvents serial As New IO.Ports.SerialPort()
    Public Shared builder As New System.Text.StringBuilder
    Private Shared Sub serial_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serial.DataReceived
        builder.Append(serial.ReadExisting())
    End Sub
End Class


同理,所有地方都可以这样类似form2的click的方式访问
GlobalThings.serial
关注此题的讨论.
可以在每个窗体中都定义一个 SerialPort,每次窗体关闭的时候,将串口关闭,以便别的窗口调用即可。

提示ADODB.Connection (0x800A0E7A)错误 evc中能够使用activemovie控件嘛 firefox中,如果给xml文件添加一个节点,并给它赋值 100分求Janus Web Controls正式破解版 好礼相送,先到先得! 存储过程 请问如何能得到应用程序的发布版本号?(注意不是程序集的版本) 为什么人的左脑控制右侧?右脑控制左侧?有交换机在里面? 请高手看看我这个登陆代码是不是对的,感谢 救命吖。。请问谁会做这个题吖?会的加我Q156774003 基础问题,来捡分啊!!!!!! 请问在深圳的谁办理过调户或要准备申请的. insert 触发器 迟来的回复,对不起朋友们了:) 创业该如何选择?一个创业或兼职的事业良机 如何打印宽高比不标准的字体? 公司局域网通过HTTP代理上网.可以通过什么软件来运行WOW这样的游戏么?UP有分 大家都是怎样来处理这种问题的!!!顶者有分 请 指教~ 谁能提供一个MO可用的简单点的电子地图 各位大哥给点建议 这个程序到底哪里出错了阿 求助 高手请赐教,小弟急求。。。。。。 CPU是否发热过量???? 邪门!!! 求助DELPHI高手帮帮忙吖 高手请赐教,小弟急求。。。。。。 高手请赐教,小弟急求。。。。。。 MYSQL新手问题! 请帮我看一下我的代码?程序运行时为什么会死掉,先谢谢了!!