移植VB维护程序到mobile下
Windows CE现在在嵌入式系统应用已经很多了,以前使用EVC的开发多些,开发难度大周期长。VS2005退出后,CF.net2.0对于VB.NET支持很好,使将原来的基于windows平台的Visual Basic维护程序移植到CE上面提供呢可能,本文将就Visual Basic维护程序移植到CE上面做一个试验性质的开发。
Visual Basic因为其界面开发快速,掌握难度低,在嵌入式系统的程序员中应用很广,比如说本人,以前经常做些单片机的开发,那么一些系统参数或规约的验证,就会随手写个Visual Basic程序验证下,以前是VB6.0,后来VB.net多些,VB的开发扩展性好,做界面简单快速,而且方便在调试中修改程序,在验证单片机的程序时是再方便不过了。
最早的人机界面、维护参数基本是通过串口通讯,在计算机或便携笔记本上面显示,设置。随着嵌入式系统发展,用户要求越来越高,现在好多的设备上面要有显示参数和状态的液晶,对于一些高档设备,更是需要复杂的用户界面,如果能将设备的维护和状态显示程序移植到基于Windows CE的系统平台上面去,就会提供快速的软件开发,用户界面会更加美观,开发速度大幅提供,方便嵌入式系统工程师的开发工作,同时基于windows CE的PDA掌上电脑,方便携带,待机时间更加长,方便现场维护人员和分布式系统的设置和分析工作。
讲原有的VB.net移植到winCE,比较简单,如果没有使用第三方的windows平台的控件,可以很简单的移植过去,窗体可以很简单的复制过去,代码基本是可以复用的,如果是VB6的程序,移植的难度会大些,窗体部分设计需要重新设置,VB.net的窗体界面和VB的区别很大,可以先按照老的程序的界面设置,在新的程序里面设置,代码方面的移植难度不大,基本的语句还是一样的,VB.NET支持界面上的元素可以全新创建,不用想VB那样,从窗口的控件数组里面派生了,而且vb.net可以在运行中定义事件的处理函数,这个对VB是很大的改进,是自动根据规约或界面设置进行处理变得方便快捷。
对于嵌入式系统来说和外界的通讯主要有几个方面,串口(RS485、RS232),网络。网络方面的程序区别不是很大,串口方面,windows下面VB程序员一般是使用MSCOMM来进行通讯,微软在CF.NET2.0里面提供了新的串口开发支持SerialPort,比1.0和EVC更加快速。另外VB.NET支持多线程,使串口开发变得容易。
下面提供一个我自己实现的串口多线程类。
Imports System.IO.Ports
Imports System.Threading
'232串口操作类
'2006 6 20 V1.0 by 赵力钊
'使用说明
'使用前调用 Init 退出程序或关闭串口使用 Close
'SendDate 发送数据到串口 返回发送成功与否
'判断ComStatus 是否为2 数据是否准备好 准备好 调用 ReadData 传空的BYTE数组(可以Redim的),返回数据长度
Public Class RS232TXClass
Shared m_SerialPort As New SerialPort
Shared readThread As Thread = New Thread(AddressOf Read)
Public ComSetting As String '9600,n,8,1
Public ComPort As Integer
Public ComType As Integer '硬件设置
Dim strBaudRate As String
Dim Parity As String
Dim Handshake As Integer
Dim DataBits As Integer
Dim PortName As String
Dim StopBits As Integer
Shared _continue As Boolean
Shared bRxLock As Boolean
Shared iRxLen As Integer
Shared iRxTime As Integer
Shared bRxStatus As Byte
Const READOK = 2
Const READOUTTIME = 4
Const READLOCK = 8
Const COMOK = 1
Const COMERROR = 0
Const COMFREE = 16
'输入函数 setting 串口设置如 9600,n,8,1 Type 握手协议 0 没有握手协议 Port 串口号
Public Sub Init(ByVal Setting As String, ByVal Type As Integer, ByVal Port As Integer)
ComSetting = Setting
ComPort = Port
ComType = Type
ComInit()
End Sub
Sub ComInit()
Dim iStart As Integer
Dim iTemp As Integer
Dim bDate() As Byte
m_SerialPort = New System.IO.Ports.SerialPort()
iStart = InStr(1, ComSetting, ,)
strBaudRate = Mid(ComSetting, 1, iStart - 1)
iTemp = InStr(iStart + 1, ComSetting, ,)
Parity = Mid(ComSetting, iStart + 1, iTemp - iStart - 1)
iStart = iTemp + 1
iTemp = InStr(iStart, ComSetting, ,)
DataBits = CInt(Mid(ComSetting, iStart, iTemp - iStart))
iStart = iTemp + 1
StopBits = CInt(Mid(ComSetting, iStart, Len(ComSetting) - iStart + 1))
m_SerialPort.BaudRate = strBaudRate
Select Case Parity
Case n
m_SerialPort.Parity = IO.Ports.Parity.None
Case N
m_SerialPort.Parity
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)