基于嵌入式技術(shù)的溫度測量系統設計
本系統用到了串口通信中間件和數據隊列中間件,即只需要將中間件程序添加到系統項目表中去,調用中間件的接口函數即可實(shí)現串口的通信,如:調用URAT0Init(9600)實(shí)現串口的初始化,其中,波特率可直接進(jìn)行調整;調用URAT0Putch(temp4)實(shí)現將temp4中存儲的數據通過(guò)串口發(fā)送出去。當要將應用程序移植到其他系統上時(shí),只要對這兩個(gè)函數及其他相關(guān)函數進(jìn)行適當修改,而無(wú)需改變應用程序。
上位機的通信程序運用了MSComm 控件,它是Microsoft公司提供的,簡(jiǎn)化Windows下串行通信編程的ActiveX控件,該控件提供了兩種處理通信問(wèn)題的方法,本系統采用了事件驅動(dòng)法。當串口發(fā)生事件或錯誤時(shí),MSComm控件會(huì )產(chǎn)生OnComm事件,用戶(hù)程序可以捕獲該事件進(jìn)行相應處理。在編程過(guò)程中,就可以在OnComm事件處理函數中加入相應的處理代碼。
利用MSComm控件實(shí)現計算機通信的關(guān)鍵是正確設置MSComm控件的屬性和方法。以下是用VB編寫(xiě)的部分設置程序:
Private Sub Form_Load()
Me.Show
MSComm1.CommPort = 1 //選擇串口com1
MSComm1.Settings = 9600,n,8,1 //設置MSComm的連接屬性
MSComm1.RThreshold = 2 //定義閥值為2
MSComm1.InBufferSize = 2
i = 0
Picture1.Visible = False
On Error Resume Next
End Sub
連接屬性BBBB,P,D,S中,BBBB 為波特率,P為奇偶校驗,D為數據位數,S為停止位數。閥值定為2,則在接收緩沖區中的字節數超過(guò)“2”時(shí),就轉入OnComm()事件處理程序執行。
3. 嵌入式系統軟件
采用了嵌入式操作系統uC/OS-II,它是專(zhuān)門(mén)為計算機的嵌入式應用而設計的。 uC/OS-II是基于優(yōu)先級的占先式多任務(wù)實(shí)時(shí)內核。由于在多任務(wù)實(shí)時(shí)操作系統中,應用程序是以任務(wù)形式運行的,操作系統的一個(gè)重要的作用就是任務(wù)的調度,所以要在操作系統下實(shí)現應用程序的執行,就必須建立任務(wù),在任務(wù)中實(shí)現測溫和串行通信等操作。建立任務(wù)如下:
#include config.h
#define TASK_STK_SIZE 64 //定義任務(wù)棧的大小為64字節
OS_STK TaskStartStk[TASK_STK_SIZE]; //定義任務(wù)棧
void TaskStart(void *data); //聲明任務(wù)
int main (void)
{
OSInit(); //操作系統初始化
OSTaskCreate(TaskStart, (void *)0, TaskStartStk[TASK_STK_SIZE - 1], 0); // 建任務(wù)
OSStart(); //啟動(dòng)操作系統
return 0;
}
評論