女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] Windows CE現(xiàn)在在嵌入式系統(tǒng)應(yīng)用已經(jīng)很多了,以前使用EVC的開發(fā)多些,開發(fā)難度大周期長。VS2005退出后,CF.net2.0對于VB.NET支持很好,使將原來的基于windows平臺的Visua

 Windows CE現(xiàn)在在嵌入式系統(tǒng)應(yīng)用已經(jīng)很多了,以前使用EVC的開發(fā)多些,開發(fā)難度大周期長。VS2005退出后,CF.net2.0對于VB.NET支持很好,使將原來的基于windows平臺的Visual Basic維護(hù)程序移植到CE上面提供呢可能,本文將就Visual Basic維護(hù)程序移植到CE上面做一個(gè)試驗(yàn)性質(zhì)的開發(fā)。

Visual Basic因?yàn)槠浣缑骈_發(fā)快速,掌握難度低,在嵌入式系統(tǒng)的程序員中應(yīng)用很廣,比如說本人,以前經(jīng)常做些單片機(jī)的開發(fā),那么一些系統(tǒng)參數(shù)或規(guī)約的驗(yàn)證,就會隨手寫個(gè)Visual Basic程序驗(yàn)證下,以前是VB6.0,后來VB.net多些,VB的開發(fā)擴(kuò)展性好,做界面簡單快速,而且方便在調(diào)試中修改程序,在驗(yàn)證單片機(jī)的程序時(shí)是再方便不過了。

最早的人機(jī)界面、維護(hù)參數(shù)基本是通過串口通訊,在計(jì)算機(jī)或便攜筆記本上面顯示,設(shè)置。隨著嵌入式系統(tǒng)發(fā)展,用戶要求越來越高,現(xiàn)在好多的設(shè)備上面要有顯示參數(shù)和狀態(tài)的液晶,對于一些高檔設(shè)備,更是需要復(fù)雜的用戶界面,如果能將設(shè)備的維護(hù)和狀態(tài)顯示程序移植到基于Windows CE的系統(tǒng)平臺上面去,就會提供快速的軟件開發(fā),用戶界面會更加美觀,開發(fā)速度大幅提供,方便嵌入式系統(tǒng)工程師的開發(fā)工作,同時(shí)基于windows CE的PDA掌上電腦,方便攜帶,待機(jī)時(shí)間更加長,方便現(xiàn)場維護(hù)人員和分布式系統(tǒng)的設(shè)置和分析工作。

講原有的VB.net移植到winCE,比較簡單,如果沒有使用第三方的windows平臺的控件,可以很簡單的移植過去,窗體可以很簡單的復(fù)制過去,代碼基本是可以復(fù)用的,如果是VB6的程序,移植的難度會大些,窗體部分設(shè)計(jì)需要重新設(shè)置,VB.net的窗體界面和VB的區(qū)別很大,可以先按照老的程序的界面設(shè)置,在新的程序里面設(shè)置,代碼方面的移植難度不大,基本的語句還是一樣的,VB.NET支持界面上的元素可以全新創(chuàng)建,不用想VB那樣,從窗口的控件數(shù)組里面派生了,而且vb.net可以在運(yùn)行中定義事件的處理函數(shù),這個(gè)對VB是很大的改進(jìn),是自動根據(jù)規(guī)約或界面設(shè)置進(jìn)行處理變得方便快捷。

對于嵌入式系統(tǒng)來說和外界的通訊主要有幾個(gè)方面,串口(RS485、RS232),網(wǎng)絡(luò)。網(wǎng)絡(luò)方面的程序區(qū)別不是很大,串口方面,windows下面VB程序員一般是使用MSCOMM來進(jìn)行通訊,微軟在CF.NET2.0里面提供了新的串口開發(fā)支持SerialPort,比1.0和EVC更加快速。另外VB.NET支持多線程,使串口開發(fā)變得容易。

下面提供一個(gè)我自己實(shí)現(xiàn)的串口多線程類。

Imports System.IO.Ports

Imports System.Threading

‘232串口操作類

‘2006 6 20 V1.0 by 趙力釗

‘使用說明

‘使用前調(diào)用 Init 退出程序或關(guān)閉串口使用 Close

‘SendDate 發(fā)送數(shù)據(jù)到串口 返回發(fā)送成功與否

‘判斷ComStatus 是否為2 數(shù)據(jù)是否準(zhǔn)備好 準(zhǔn)備好 調(diào)用 ReadData 傳空的BYTE數(shù)組(可以Redim的),返回?cái)?shù)據(jù)長度

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 ‘硬件設(shè)置

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

‘輸入函數(shù) setting 串口設(shè)置如 9600,n,8,1 Type 握手協(xié)議 0 沒有握手協(xié)議 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 = IO.Ports.Parity.None

Case "e"

m_SerialPort.Parity = IO.Ports.Parity.Even

Case "E"

m_SerialPort.Parity = IO.Ports.Parity.Even

Case "o"

m_SerialPort.Parity = IO.Ports.Parity.Odd

Case "O"

m_SerialPort.Parity = IO.Ports.Parity.Odd

End Select

m_SerialPort.DataBits = DataBits

Select Case StopBits

Case 0

m_SerialPort.StopBits = IO.Ports.StopBits.None

Case 1

m_SerialPort.StopBits = IO.Ports.StopBits.One

Case 2

m_SerialPort.StopBits = IO.Ports.StopBits.Two

End Select

Select Case ComType

Case 0

m_SerialPort.Handshake = IO.Ports.Handshake.None

[!--empirenews.page--]

Case 1

m_SerialPort.Handshake = IO.Ports.Handshake.RequestToSend

Case 2

m_SerialPort.Handshake = IO.Ports.Handshake.RequestToSendXOnXOff

Case 3

m_SerialPort.Handshake = IO.Ports.Handshake.XOnXOff

End Select

m_SerialPort.PortName = "COM" + CStr(ComPort)

m_SerialPort.ReadTimeout = 500

m_SerialPort.WriteTimeout = 500

If m_SerialPort.IsOpen = True Then

m_SerialPort.Close()

End If

m_SerialPort.Open()

If m_SerialPort.IsOpen = True Then

bRxStatus = COMOK

ReDim bDate(2)

ReadData(bDate)

bRxLock = False

readThread.Start()

Else

bRxStatus = COMERROR

End If

‘ readThread.Join()

End Sub

Public Function ComStatus() As Byte

ComStatus = bRxStatus

End Function

Function ReadData(ByRef bDate() As Byte) As Integer

Dim bLen As Integer

bLen = m_SerialPort.BytesToRead

If bLen > 0 Then

ReDim bDate(bLen)

m_SerialPort.Read(bDate, 0, bLen)

ReadData = bLen

Else

ReadData = 0

End If

bRxStatus = COMFREE

End Function

Public Function SendDate(ByVal bDateBuff() As Byte, ByVal iLen As Integer) As Boolean

If bRxLock = False Then

m_SerialPort.Write(bDateBuff, 0, iLen)

bRxLock = True

bRxStatus = READLOCK

SendDate = True

Else

SendDate = False

End If

End Function

Public Shared Sub Read()

While (1)

Thread.Sleep(50)

Try

If m_SerialPort.BytesToRead <> iRxLen Then

iRxLen = m_SerialPort.BytesToRead

iRxTime = 0

bRxStatus = READLOCK

Else

If iRxLen > 0 Then

‘收到數(shù)據(jù)

bRxStatus = READOK

bRxLock = False

Else

iRxTime = iRxTime + 1

If iRxTime > 10 Then

bRxStatus = READOUTTIME

End If

bRxLock = False

End If

End If

Catch ex As TimeoutException

‘ Do nothing

End Try

End While

End Sub

Public Sub Close()

readThread.Abort()

m_SerialPort.Close()

End Sub

End Class

定義窗口變量

Dim ComPort As New RS232TXClass

啟動后調(diào)用

ComPort.Init("9600,n,8,1", 0, 1)

在主窗口中,通過一個(gè)定時(shí)器事件,查看串口情況

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Dim bDate() As Byte

Dim iLen As Integer

ReDim bDate(2)

If ComPort.ComStatus = 2 Then

iLen = ComPort.ReadData(bDate)

If iLen > 2 Then

ShowRevDate(bDate, iLen)

End If

End If

End Sub

下面實(shí)現(xiàn)一個(gè)windows的路燈維護(hù)程序移植到windows CE上面去的一些簡單示例。

這是原來VB上面的一個(gè)界面。

這個(gè)是我移植到VB.net for Mobile的版本,因?yàn)樵贛obile上面多窗口切換很麻煩,就作成分頁的顯示了。

需要注意的是,因?yàn)镸obile上面的輸入法啟動后會遮蓋一部分窗口,為了輸入方面最后把需要輸入的地方放到上面去,以免影響輸入。這里我把兩個(gè)顯示性Label放到了后面。

VB.NET的繪圖和VB不是很一樣,更加接近C++的繪圖方式,但是只要不一些概念弄清楚,你會發(fā)現(xiàn)這種繪圖方式使用更加方便,更加方便你對于GDI+的理解。

VB.NET中可以使用 Dim bm As New Bitmap(238, 214) 直接建立一個(gè)位圖,然后把繪制好的位圖覆蓋回去。

繪制文字的時(shí)候,需要字體和畫刷,象下面這樣:

ShowTextBrush = New SolidBrush(Color.Blue)

mFont = New Font(FontFamily.GenericSansSerif, 8, FontStyle.Regular)

g.DrawString("HELLO", mFont, ShowTextBrush, 12, 82)

繪制線的時(shí)候,需要畫筆。

Pen1 = New Pen(Color.Red)

g.DrawLine(Pen1, OldX, OldY, NewX, NewY)

填充圖形的時(shí)候,需要畫刷

tempbrush = New SolidBrush(Color.FromArgb(192, 192, 255))

g.FillRectangle(tempbrush, 0, 0, 238, 214)

繪制扇形和弧形,VB.NET沒有提供,但是我從網(wǎng)上找到了實(shí)現(xiàn)方法,用聯(lián)系線和連續(xù)填充實(shí)現(xiàn)弧形和棒圖的繪制。函數(shù)如下

‘=====================================================

‘繪制弧形

‘ graphicsObject - Graphics 對象

‘ pen - 畫筆

‘ x,y - 弧的圓心

‘ width - 寬度 (X直徑)

‘ height - 高度 (Y直徑)

‘ startAngle - 起始角度

‘ sweepAngle - 結(jié)束角度

Private Sub drawPie(ByVal graphicsObject As Graphics, ByVal pen As Pen, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal startAngle As Single, ByVal sweepAngle As Single)

Dim xAngle(12) As Single

Dim yAngle(12) As Single[!--empirenews.page--]

Dim angleIncrement As Single

angleIncrement = (sweepAngle - startAngle) / 10

Dim angle As Single

angle = startAngle

Dim i As Integer

For i = 0 To 10

xAngle(i) = x + (Math.Cos(angle * (Math.PI / 180)) * (width / 2))

yAngle(i) = y + (Math.Sin(angle * (Math.PI / 180)) * (height / 2))

angle += angleIncrement

Next i

xAngle(11) = x + (Math.Cos(sweepAngle * (Math.PI / 180)) * (width / 2))

yAngle(11) = y + (Math.Sin(sweepAngle * (Math.PI / 180)) * (height / 2))

Dim anglePoints(12) As Point

anglePoints(0) = New Point(x, y)

For i = 0 To 11

anglePoints(i + 1) = New Point(CInt(xAngle(i)), CInt(yAngle(i)))

Next

graphicsObject.DrawPolygon(pen, anglePoints)

End Sub

‘=====================================================

‘填充弧形

‘ graphicsObject - Graphics 對象

‘ solidBrush - 畫刷

‘ x,y - 弧的圓心

‘ width - 寬度 (X直徑)

‘ height - 高度 (Y直徑)

‘ startAngle - 起始角度

‘ sweepAngle - 結(jié)束角度

Sub fillPie(ByVal graphicsObject As Graphics, ByVal solidBrush As SolidBrush, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal startAngle As Single, ByVal sweepAngle As Single)

Dim xAngle(12) As Single

Dim yAngle(12) As Single

Dim angleIncrement As Single

angleIncrement = (sweepAngle - startAngle) / 10

Dim angle As Single

angle = startAngle

Dim i As Integer

For i = 0 To 10

xAngle(i) = x + (Math.Cos(angle * (Math.PI / 180)) * (width / 2))

yAngle(i) = y + (Math.Sin(angle * (Math.PI / 180)) * (height / 2))

angle += angleIncrement

Next i

xAngle(11) = x + (Math.Cos(sweepAngle * (Math.PI / 180)) * (width / 2))

yAngle(11) = y + (Math.Sin(sweepAngle * (Math.PI / 180)) * (height / 2))

Dim anglePoints(12) As Point

anglePoints(0) = New Point(x, y)

For i = 0 To 11

anglePoints(i + 1) = New Point(CInt(xAngle(i)), CInt(yAngle(i)))

Next

graphicsObject.FillPolygon(solidBrush, anglePoints)

End Sub

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

上海2024年10月29日 /美通社/ -- 隨著新生代父母育兒觀念變革,消費(fèi)者對于嬰幼兒產(chǎn)品的品質(zhì)需求日益提升,從質(zhì)量合規(guī)性和安全性要求升級擴(kuò)展到對于產(chǎn)品的舒適性、健康功能性等更多細(xì)分維度。以學(xué)步鞋為例,近兩年在強(qiáng)勁的...

關(guān)鍵字: 電子 ARTICLE CHINA MOBILE

加利福尼亞庫爾弗城2024年7月16日 /美通社/ --?Snail, Inc. (納斯達(dá)克股票代碼: SNAL) (以下簡稱"蝸牛游戲"或"公司")是一家領(lǐng)先的全球獨(dú)立開發(fā)商和發(fā)行商,專注于互動數(shù)字娛樂,今日宣布方舟:...

關(guān)鍵字: iOS 安卓系統(tǒng) 移植 移動平臺

新版本將支持Mobileum的端到端產(chǎn)品組合,并增強(qiáng)其機(jī)器學(xué)習(xí)功能,幫助CSP應(yīng)對快速發(fā)展的技術(shù)格局 加利福尼亞州庫比蒂諾2023年2月21日 /美通社/ -- 全球領(lǐng)先的...

關(guān)鍵字: MOBILE IP AI 集成

上海2023年2月16日 /美通社/ -- 近日,諾華中國宣布與中國紅十字基金會正式啟動"中國地中海貧血救助項(xiàng)目"廣西地區(qū)專項(xiàng)援助,將在當(dāng)?shù)囟ㄏ蛸Y助困難家庭地中海貧血患兒,同時(shí)通過相關(guān)醫(yī)生培...

關(guān)鍵字: BSP 控制 移植 大眾

最佳漫游引導(dǎo)和最具創(chuàng)新的反短信欺詐保護(hù)的未來數(shù)字獎(jiǎng) 加利福尼亞州庫比蒂諾2023年2月6日 /美通社/ -- 全球領(lǐng)先的電信分析解決方案提供商Mobileum Inc.(&...

關(guān)鍵字: MOBILE IP NI 電信

北京2022年12月7日 /美通社/ -- 2022年12月3日,由高博醫(yī)學(xué)(血液?。V東研究中心南方春富(兒童)血液病研究院、南方醫(yī)科大學(xué)南方醫(yī)院共同主辦的高博醫(yī)學(xué)論壇·華南造血干細(xì)胞移植論壇通過線下線上...

關(guān)鍵字: 移植 HD PID 血細(xì)胞

捐款近4000萬 上海2022年12月7日 /美通社/ -- 2022年12月7日下午,中芯國際"芯肝寶貝計(jì)劃"十年紀(jì)念暨2022年度捐贈儀式在上海仁濟(jì)醫(yī)院舉行。十年來,該項(xiàng)目捐贈善款總額近4000...

關(guān)鍵字: 中芯國際 移植

北京2022年11月14日 /美通社/ -- 2022年10月,高博醫(yī)學(xué)(血液?。┍本┭芯恐行谋本└卟┎┤梳t(yī)院造血干細(xì)胞移植科迎來了五周歲"生日"。在吳彤主任帶領(lǐng)下,移植科于2017年從無到有,歷經(jīng)五...

關(guān)鍵字: 移植 OS MT CD

(全球TMT2022年11月11日訊)電信分析解決方案提供商Mobileum Inc.最近在葡萄牙波爾圖舉辦的WeMeet Europe大會閉幕。WeMeet是Mobileum每年舉辦的全球大會系列,召集行業(yè)領(lǐng)導(dǎo)者探索...

關(guān)鍵字: MOBILE MT 電信 ACTIVE

上海2022年11月6日 /美通社/ -- 在第五屆中國國際進(jìn)口博覽會期間,武田制藥攜5款創(chuàng)新產(chǎn)品亮相武田罕見遺傳與血液疾病領(lǐng)域?qū)霭l(fā)布會。用于移植后抗巨細(xì)胞病毒(CMV)感染或疾病治療[1]的馬立巴韋[2]迎來&quo...

關(guān)鍵字: 移植 BSP CD FDA
關(guān)閉