freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

在線溫度監(jiān)控系統(tǒng)上位機(jī)軟件設(shè)計(jì)畢業(yè)設(shè)計(jì)論文-資料下載頁

2025-06-24 17:37本頁面
  

【正文】 //通信端口設(shè)置 if (!SetCommState(hComm, amp。dcb)) { // 設(shè)置通信端口的狀態(tài) MessageBox (0, 通信端口設(shè)置錯(cuò)誤!!!,Set Error,MB_OK)。 CloseHandle(hComm)。 return。 }}2) 接發(fā)數(shù)據(jù)。當(dāng)有通信事件產(chǎn)生時(shí),可使用函數(shù) ReadFile()和西安工程大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 26WriteFile()直接對(duì)串口緩沖區(qū)進(jìn)行讀寫操作。其中 JpBuffer 指向讀寫緩沖區(qū),nNumberOfBytes 為要讀寫的字節(jié)數(shù),lpNumberOfBytes 為實(shí)際讀寫的字節(jié)數(shù),lpOverlapped 指定同步或異步操作。在實(shí)際使用中,當(dāng)有數(shù)據(jù)到達(dá)通信端口時(shí),應(yīng)主動(dòng)將數(shù)據(jù)接收下來。將數(shù)據(jù)由串口讀進(jìn)計(jì)算機(jī)的方法是使用 ReadFile()函數(shù),要得知被送到串口輸入緩沖區(qū)的字節(jié)數(shù),必須使用 ClearCommError()函數(shù),來獲得當(dāng)前串行端口狀態(tài),這些狀態(tài)中包括了輸入緩沖區(qū)中數(shù)據(jù)的字節(jié)數(shù),只要將這兩個(gè)函數(shù)放在定時(shí)器內(nèi)即可達(dá)到不斷讀取數(shù)據(jù)的目的。在發(fā)送數(shù)據(jù)時(shí),只要在發(fā)送數(shù)據(jù)的 mSend_Data 控件中,輸入要發(fā)送的信息,然后按回車鍵即能發(fā)送。雙擊傳送資料按鈕,給其加入如下程序代碼:void __fastcall TForm1::Button3Click(TObject *Sender){ String Temp。 char *SendData。 int ln。 unsigned long lrc,BS。 if (hComm==0) return。 //檢查 Handle 值 Temp = mSendText。//取得發(fā)送的字符串 SendData = ()。 //字符串轉(zhuǎn)換 //取得發(fā)送的字符串?dāng)?shù) BS = ()。 //BS = StrLen(SendData)。 //也可以使用此種方式取得字符串長度 //實(shí)際的發(fā)送動(dòng)作 WriteFile(hComm,SendData,BS, amp。lrc,NULL)。 // 送出數(shù)據(jù)} 在接收資料按鈕下加入如下程序代碼: void __fastcall TForm1::Button4Click(TObject *Sender){ String Temp。 char inbuff[1024]。 DWORD nBytesRead, dwEvent, dwError。西安工程大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 27 COMSTAT cs。 //取得狀態(tài) ClearCommError(hComm,amp。dwError,amp。cs)。 // 數(shù)據(jù)是否大于我們所準(zhǔn)備的緩沖區(qū) if ( sizeof(inbuff)) { PurgeComm(hComm, PURGE_RXCLEAR)。 // 清除通信端口數(shù)據(jù) return。 } ReadFile(hComm, inbuff,amp。nBytesRead,NULL)。 // 接收通信端口的數(shù)據(jù) //數(shù)組中的字符串結(jié)尾處補(bǔ)上零字符 inbuff[]= 39。\039。 // 將數(shù)據(jù)顯示于 Memo1 上 mReceiveText = inbuff。}3) 關(guān)閉串口。串口是非共享資源,所以打開串口后,一定要關(guān)閉串口。關(guān)閉串口函數(shù)的原型是 BOOL CloseHandle(HANDLE hObject) ;其中 hObject 參數(shù)為 CreatFile()返回的端口句柄。返回值為非 0 時(shí),表示調(diào)用成功。雙擊結(jié)束通訊按鈕,為其加入如下程序代碼:void __fastcall TForm1::Button2Click(TObject *Sender){ if (hComm!=INVALID_HANDLE_VALUE) CloseHandle(hComm)。 exit(EXIT_SUCCESS)。}4) 另外還要聲明文件句柄變量,在單元文件聲明部分添加如下一條語句:HANDLE hComm;此模塊界面的具體設(shè)計(jì):串口用于接收溫度數(shù)據(jù),因此,串口調(diào)通至關(guān)重要。該模塊用到的組件主要有一個(gè) RadioGroup 組件,兩個(gè) Label 組件,四個(gè)西安工程大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 28Button 組件,兩個(gè) Memo 組件。 調(diào)節(jié)串口界面如下圖 4—7 所示。 圖 4—7 串行模塊界面臺(tái)式計(jì)算機(jī)一般有兩個(gè)串口,而選擇通訊簿用于選擇用哪個(gè)串口。點(diǎn)擊開始通訊按鈕,則系統(tǒng)開始接收下位機(jī)傳來的數(shù)據(jù)。點(diǎn)擊結(jié)束通訊按鈕,則停止接收數(shù)據(jù)。由于我做的只是上位機(jī),為了調(diào)試方便,我做了自發(fā)自收的設(shè)計(jì),即一個(gè)Memo 用于顯示輸入的數(shù)據(jù),而另一個(gè)則用于顯示接收的數(shù)據(jù)。這樣一來很容易看出串口是否調(diào)試好,如果串口調(diào)通,那么傳送的資料將會(huì)顯示在接收的資料欄里。但要注意的是,如果輸入一次內(nèi)容,但連續(xù)按兩次發(fā)送鍵,再按一次接收鍵,則會(huì)在接收資料里顯示兩遍接收到的內(nèi)容,即出現(xiàn)如圖 48 所示情況。西安工程大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 29 圖 48 串口調(diào)試 數(shù)據(jù)表設(shè)計(jì)數(shù)據(jù)表是數(shù)據(jù)的集合,具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲(chǔ)介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個(gè)應(yīng)用程序共享。數(shù)據(jù)庫存放數(shù)據(jù)是按數(shù)據(jù)所提供的數(shù)據(jù)模式存放的,具有集成與共享的的特點(diǎn)。在本次畢設(shè)中,為了使數(shù)據(jù)觀察起來更方便,我建立了數(shù)據(jù)表,數(shù)據(jù)表主要是用于存放通過 RS232 串口接收來的數(shù)據(jù)。數(shù)據(jù)成組出現(xiàn),每組有三個(gè)數(shù)據(jù),分別為溫度、時(shí)間和結(jié)點(diǎn)。接收進(jìn)來后分別將溫度和時(shí)間數(shù)據(jù)顯示到數(shù)據(jù)表上的時(shí)間和溫度欄。以下是數(shù)據(jù)表的建立方法。首先在開始菜單中,C++ 的下拉菜單下,打開 Database,然后通過菜單命令 File|new|Table,這是則會(huì)出現(xiàn) Creat Table 對(duì)話框,點(diǎn)擊 OK,將會(huì)出現(xiàn) Creat Paradox7 Table:(Untiled)對(duì)話框,此對(duì)話框如圖 49 所示,在該對(duì)話框的右上角有 Table properties 選項(xiàng)欄,在 Table properties 的下拉菜單中選擇中 Secondary Indexes,如此一來,就可以在 Field roster 中創(chuàng)建滿足自己所需要的索引。然后是保存過程,保存文件的名稱應(yīng)該是頭文件為“.db”的,這一點(diǎn)很重要。 圖 49 Creat Paradox7 Table建立完后,還需建立一個(gè)別名,這樣才能使窗體上的感知數(shù)據(jù)組件連接到數(shù)據(jù)。在開始中打開 BDE Administrator,通過菜單命令 Object|New 打開 New 西安工程大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 30Database Alias 對(duì)話框,在此對(duì)話框中的 Database Driver Name 項(xiàng)中選擇MSACCESS,將發(fā)現(xiàn)在 Database 窗口中增加了一個(gè)新節(jié)點(diǎn),修改別名為TemperatureData,選中該名稱,單擊右鍵,選 Apply 命令,在出現(xiàn)的對(duì)話框中選 OK,便完成了這項(xiàng)工作。創(chuàng)建后的對(duì)話框如圖 410 所示。 圖 410 建立別名最后還需要通過能夠感知數(shù)據(jù)的 DBGrid 組件才能連接到它。在C++ 的窗體中,添加一個(gè) TDBGrid 組件、一個(gè)數(shù)據(jù)源組件TDataSource、一個(gè) Table、和一個(gè) StatusBar 組件。名稱取默認(rèn)值(TableStatusBar1)。將 Table1 的 DatabaseName 屬性設(shè)置為BCDEMOS,TableName 屬性設(shè)置為 , Active 屬性設(shè)置為true,DataSource1 的 DataSet 屬性設(shè)置為 Table1, DBGrid1 的 Align 屬性設(shè)置為alBottom,DataSource 屬性設(shè)置為 。數(shù)據(jù)庫存儲(chǔ)的溫度數(shù)據(jù)如下圖 411 所示。西安工程大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 31 圖 411 數(shù)據(jù)表顯示 上位機(jī)溫度曲線設(shè)計(jì)在溫度顯示模塊中,所用到的組件并不多。因?yàn)橐髮⒉杉瘉淼臏囟群蜁r(shí)間顯示在坐標(biāo)曲線上,時(shí)間在 X 軸上,溫度在 Y 軸上,因此要用到 C++builder中的 SimuCurves 組件,并且還需要一個(gè) Button 組件。因?yàn)槭嵌帱c(diǎn)溫度度采集,所以設(shè)置了六個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)下面都配有指示燈和打開按鈕,打開哪個(gè)按鈕,哪個(gè)指示燈就亮,且變?yōu)榫G色,而顯示的溫度曲線也就是該節(jié)點(diǎn)的溫度曲線。不同節(jié)點(diǎn)的溫度曲線顏色也不同,在節(jié)點(diǎn)下面用 Lable 組件將每個(gè)節(jié)點(diǎn)的曲線顏色進(jìn)行標(biāo)注,這樣就可以通過顏色來辨別是哪個(gè)節(jié)點(diǎn)的溫度曲線。下面對(duì)組件分別進(jìn)行介紹。組件介紹:Button 組件是使用率最高的組件,用于提供一個(gè)給系統(tǒng)用戶操作用的按鈕,在組件面板中的位置及外觀如圖 4—12 所示。 圖 412 Button 組件外觀而其常用屬性設(shè)置如表 41 所示。表 41 Button 常用屬性常用屬性 說明西安工程大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 32Name 對(duì)象名稱,對(duì)象擺放完成后給予,是第一個(gè)必要設(shè)置的屬性Caption 出現(xiàn)在按鈕上的文字標(biāo)題用法:Name 屬性中,可以默認(rèn)原來的名字,也可以根據(jù)需要,設(shè)置成其它名字。調(diào)整好外觀及相關(guān)屬性后,由于按鈕的目的是讓用戶按下,并進(jìn)而執(zhí)行某些功能,還需要在按鈕組件的 Click 實(shí)踐中寫入程序代碼,執(zhí)行一些系統(tǒng)地動(dòng)作。以下用到的 Button 按鈕用法相同。Curves 用于繪制曲線。Curves 組件還必須要設(shè)置的屬性如下圖 413 所示。 圖 413 SimunCurves 設(shè)置屬性AxisClor:用于設(shè)置坐標(biāo)軸及坐標(biāo)網(wǎng)格的顏色;AxisScaleXZ:用于設(shè)置刻度單位, X 為 1,則每格為 1,Y 為 10,則每格代表 10;AxisType:用于設(shè)置是否有網(wǎng)格,如果設(shè)置成 Grid,則表示有網(wǎng)格;AxisUnitXZ:用于設(shè)置坐標(biāo)比例;AxisColor:用于設(shè)置坐標(biāo)軸及網(wǎng)格顏色;GraphKind:調(diào)整坐標(biāo)系類別,比如設(shè)置成 pgXY,則為 XY 坐標(biāo)系,pgXZ,則為 XZ 坐標(biāo)系,還有 pgCenter 和 pgNone 等屬性;SignColor:用于設(shè)置曲線顏色;BackColor:用于設(shè)置 Curves 組件背景顏色;TextColor:用于設(shè)置坐標(biāo)刻度顏色。西安工程大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 33在這一模塊中,我的設(shè)計(jì)思路如下:用到的坐標(biāo)系為 XY 坐標(biāo)系。為了方便看出不同時(shí)間所對(duì)應(yīng)的溫度數(shù)值,我將其 AxisType 屬性設(shè)置成 Grid,即有網(wǎng)格的形式。從外觀上考慮,我將 SimuCurves 的背景顏色設(shè)為白色,坐標(biāo)軸刻度設(shè)置成黑色,而繪制曲線的顏色為紅色;由于溫度一般在 100 度以上,所以將AxisScaleY 屬性設(shè)置成 10,這樣一來,Y 軸每格表示 10℃,而對(duì)于時(shí)間,也需將 AxisScaleX 屬性設(shè)置成 10。AxisUnitXZ 屬性都需設(shè)置成 1。又因?yàn)槭菧囟葧r(shí)間曲線顯示,所以要給橫縱坐標(biāo)加上標(biāo)注,這就需要在程序中加入如下指令,將橫坐標(biāo)單位設(shè)置為時(shí)間“t” ,縱坐標(biāo)設(shè)置為溫度單位 “℃”,這樣一來,一旦打開開始按鈕,單位就會(huì)自動(dòng)顯示在坐標(biāo)軸上。Form1Curves1SetXLabel(X[t])。 Form1Curves1SetYLabel(Y[℃])。 Form1Curves1SetTitle(12,垂直面軌跡圖)。溫度模塊界外觀如下圖 414。 如圖 414 溫度繪制曲線下位機(jī)采集來的數(shù)據(jù)是隨機(jī)的,并且每次采集來的數(shù)據(jù)個(gè)數(shù)是不確定的,如果用數(shù)組先后存放不同節(jié)點(diǎn)不同時(shí)間段的溫度,那就很難確定數(shù)組的長度,西安工程大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 34如果將數(shù)組定義的足夠大,那么當(dāng)采集來的數(shù)據(jù)較少時(shí),就會(huì)浪費(fèi)大量的內(nèi)存空間;如果對(duì)記錄個(gè)數(shù)估計(jì)不足,將數(shù)組定義的比較小,那么又無法適應(yīng)采集來的數(shù)據(jù)較多的情況。因此,在溫度曲線顯示這一模塊的程序設(shè)計(jì)中,就需要一個(gè)動(dòng)態(tài)分配存儲(chǔ)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1