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

正文內(nèi)容

基于vb多點溫度采集系統(tǒng)上位機(jī)軟件設(shè)計1_免費(fèi)下載-資料下載頁

2024-11-07 21:37本頁面

【導(dǎo)讀】中心實現(xiàn)上位機(jī)管理軟件開發(fā)。下位機(jī)溫度數(shù)據(jù),完成溫度檢測;同時可以通過對數(shù)據(jù)庫的訪問,查看歷史檢測數(shù)據(jù),進(jìn)行糧情分析和糧庫管理等一系列操作。通過將上傳的數(shù)據(jù)存入后臺的Access數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)的保存。并且,可以將雜亂無章的數(shù)據(jù)整理成報表輸出?;蛘呤且愿庇^的圖例形式顯示出來。本系統(tǒng)上位機(jī)軟件功能齊全,系統(tǒng)實用性強(qiáng),成本低,數(shù)據(jù)傳輸效率高,容量大,它不僅可以應(yīng)用于糧庫的監(jiān)控管理,而且也可推廣到其他監(jiān)控領(lǐng)域,因此具。有廣泛的應(yīng)用前景。

  

【正文】 通道的 溫度 值讀取出來保存,當(dāng)上位機(jī)需要讀取時,上位機(jī)發(fā)送 命令,下位機(jī)就把儲存的 溫度 值發(fā)送給上位機(jī)。上位機(jī)進(jìn)行判斷是否超時,整個過程中應(yīng)該在 50ms 以內(nèi)完成, 50ms 之后上位機(jī)進(jìn)行采集數(shù)據(jù)操作,并且對采集出來的數(shù)據(jù)進(jìn)行判斷,下位機(jī)正常的反饋值應(yīng)該是一個大于 5 個字符位的 溫度 值,如果 溫度 值有錯誤,或者超時沒有采集出來 溫度 值,則手動設(shè)置采集出來的數(shù)據(jù)為 0,并以紅色標(biāo)記,表示數(shù)據(jù)有錯誤,需要檢查硬件設(shè)備,如果 溫度 值沒有錯誤,符合要求,則把采集上來的 溫度 值復(fù)制到 m_s_SaveTemp 中進(jìn)行存儲。 延時 50ms 的實現(xiàn):在 VB 當(dāng)中,并沒有延時程序,所以必須通過程序來實現(xiàn),實現(xiàn)的方法是通過 GetTickCount 函數(shù)來實現(xiàn)。 GetTickCount 函數(shù)包含在 庫里面,在程序加載的時候需要在模塊中聲明。 GetTickCount 的函數(shù)功能: GetTickCount 返回從操作系統(tǒng)啟動到現(xiàn)在所經(jīng)過 的毫秒數(shù)。通過這個函數(shù),先建立一個變量,儲存程序開始的時間,然后用當(dāng)前時間減去程序開始時間,如果結(jié)果少于超時時間,則繼續(xù)循環(huán),直到差值大于超時時間,這樣就完成了延時的功能,延時的時間就是設(shè)定超時的時間。期間還需要使用一個函數(shù): DoEvents。 DoEvents 函數(shù)功能是 轉(zhuǎn)讓控制權(quán),以便讓操作系統(tǒng)處理其它的事件。 為了防止在延時的時候有其他事件發(fā)生,例如存儲模塊進(jìn)行存儲,則必須轉(zhuǎn)讓控制權(quán)給系統(tǒng),這樣系統(tǒng)才能響應(yīng)其他事件,否則延時過程會導(dǎo)致 CPU 占用率100%等其他不可預(yù)料的問題發(fā)生。 數(shù)據(jù)采集為了方便調(diào)試,設(shè)置 了一個 Debug 模式,通過 Debug 模式總開關(guān)可以設(shè)置虛擬采數(shù)過程,不需要實際硬件連接從而達(dá)到調(diào)試程序的目的。 數(shù)據(jù)采集流程如圖 所示: 沈陽理工大學(xué)學(xué)士學(xué)位論文 23 圖 數(shù)據(jù)采集流程圖 在 Debug模式下與在正常模式下的區(qū)別在于 Debug模式并沒有真正發(fā)送地址和通道的實際操作,屏蔽掉了一條語句: = vSend,該語句在正常模式下實現(xiàn)把 vSend 里面的數(shù)值也就是地址和通道通過串口發(fā)送給下位機(jī),在這里并沒有真正發(fā)送,所以當(dāng)沒有下位機(jī)的情況下,也可以進(jìn)行調(diào)試,語句不出錯。在接收電壓數(shù)據(jù)的操作過程 中也同時屏蔽掉了一條語句: vReciveBuffer = ,并沒有真正把數(shù)據(jù)采集上來,而是選擇一個固定的數(shù)當(dāng)作采集上來的電壓值,從而才能繼續(xù)接下來的操作。 通過 Debug 模式的創(chuàng)建,可以在沒有硬件的情況下進(jìn)行軟件編輯,加快了工程進(jìn)度,并且還能容易的找出問題的所在之處。 為了達(dá)到實時數(shù)據(jù)采集目的,實時數(shù)據(jù)采集處理程序采用 MSComm 事件驅(qū)動方式。 OnComm 事件程序的流程圖如圖 所示 : 沈陽理工大學(xué)學(xué)士學(xué)位論文 24 圖 OnComm 事件程序的流程圖 數(shù)據(jù)處理模塊設(shè)計 數(shù)據(jù)處 理主要由兩部分組成,一部分是處理串口通訊返回的信息,進(jìn)行數(shù)據(jù)的規(guī)整化處理,另一部分是對采集上來的溫度值進(jìn)行顯示和存儲。 對采集出來的數(shù)據(jù)進(jìn)行處理:在數(shù)據(jù)采集模塊采集上來的數(shù)據(jù)中,格式并不是標(biāo)準(zhǔn)的電壓值,而是一段字符串,形式是: ***的一段字符串,這段字符串前面有一個 “ s” ,后面跟的才是需要的實際 溫度 值,所以針對這個問題,必須對采集出來的數(shù)據(jù)進(jìn)行處理。首先程序判斷串口采集出來的數(shù)據(jù)第一個字符是否是 “ s” ,此處用到一個函數(shù)是Left(string, length)。 Left 函數(shù)是從字符串的左側(cè)起取第幾個字符。文 章中使用這個函數(shù),把字符串左側(cè)第一個字符取出來,進(jìn)行判斷是否是 ” s” ,如果是的話,說明串口采集上來的數(shù)據(jù)正確,接下來還需要判斷一下該字符串的長度是否大于 3,因為程序要求必須采集上來的 溫度 值精度為至少 3 位,例如 ,因此還需要對采集上來的數(shù)據(jù)進(jìn)行判沈陽理工大學(xué)學(xué)士學(xué)位論文 25 斷,如果滿足條件,則繼續(xù)進(jìn)行處理。字符串處理所用到的函數(shù)是 Mid(string, start[, length]),該函數(shù)的作用是從字符串的左起第幾個字符開始,取 N 個字符,并返回取出的字符串。由于 溫度 值字符串是前面有 ” s” 的,所以從第二個字符開始取數(shù),取總共字符串 長度減一個字符,并進(jìn)行保存。這樣之后的字符串就是標(biāo)準(zhǔn)的 溫度 值的字符串。 實時數(shù)據(jù)顯示模塊設(shè)計 實時數(shù)據(jù)顯示模塊是相對程序設(shè)計中比較重要的一部分,實時數(shù)據(jù)顯示是給操作者最直觀的數(shù)據(jù),實時數(shù)據(jù)顯示完善與否直接影響軟件的操作。本文采用曲線和文本的雙重顯示方式進(jìn)行實時數(shù)據(jù)顯示,具體實現(xiàn)方法如下: 實時繪制溫度數(shù)據(jù)曲線:實時繪制曲線是在程序主界面里的一個 PictureBox實現(xiàn)的,首先 PictureBox 的 AutoRedraw 屬性設(shè)置為 Ture,使得當(dāng)窗體移動或者改變大小的時候已經(jīng)繪制的曲線不丟失。程序 使用兩層循環(huán)嵌套達(dá)到繪制曲線的目的。第一層循環(huán)是以總共的溫度點數(shù)作為循環(huán)次數(shù),從第一個溫度點一直循環(huán)到最后一個溫度點,依次繪制曲線。第一個溫度點時首先設(shè)定畫線寬度為 2,然后讀取該溫度曲線的顏色,設(shè)定該溫度點第一個電壓值轉(zhuǎn)換后對應(yīng)的的起始坐標(biāo)位置,接下來是第二層循環(huán),第二層循環(huán)是以該溫度點總計數(shù)據(jù)的長度作為循環(huán)次數(shù),繪制直線次數(shù)為該點溫度存儲的數(shù)據(jù)長度數(shù)。每次繪制直線的起始坐標(biāo)為上一次溫度數(shù)據(jù)對應(yīng)的坐標(biāo),末坐標(biāo)為當(dāng)前測溫點的數(shù)據(jù)對應(yīng)的坐標(biāo)。橫坐標(biāo)時間刻度每繪制一次,減 10 秒,這樣曲線就從右至左繪制了出來。每次 繪制都是重新從第一個溫度值一直繪制到當(dāng)前溫度值,覆蓋原來的溫度曲線。 詳細(xì)循環(huán)流程如下圖 所示: 沈陽理工大學(xué)學(xué)士學(xué)位論文 26 圖 實時數(shù)據(jù)曲線顯示流程 數(shù)字方式顯示當(dāng)前溫度值:程序同時還提供以文本方式實時顯示溫度值。 溫度 顯示就是把當(dāng)前采集后的 溫度 值顯示到文本框內(nèi),實現(xiàn) 溫度 值顯示,溫度值顯示則需要先對txt 文件存儲數(shù)據(jù)進(jìn)行轉(zhuǎn)移到 msflexgrid 控件 里 ,然后再顯示在 MSFlexGrid 文本框內(nèi)。MSFlexGrid 控件顯示和操作表格數(shù)據(jù)。其對包含字符串和圖片的表格 提供了靈活的排序、插入數(shù)據(jù)和格式編排功能。當(dāng)與 Data 控件綁定時, MSFlexGrid 控件只顯示只讀數(shù)據(jù)。 你可以在 MSFlexGrid 中的任何單元放置文本、圖片或這二者。 Row 和 Col 屬性指定 MSFlexGrid 控件的當(dāng)前單元。你可以在代碼中指定當(dāng)前單元,也可以在運(yùn)行時使用鼠標(biāo)或鍵盤改變當(dāng)前單元。 Text 屬性引用了當(dāng)前單元中的文本。 如果單元中的文本太長以致不能在單元中一行顯示,將 WordWrap 屬性置為True 將在單元中分多行顯示文本。要在單元中顯示多行文本,你需要增大單元的寬度( ColWidth 屬性)或行高度( RowHeight 屬性)。使用 Cols 和 Rows 屬性確定 MSFlexGrid 控件中的行數(shù)和列數(shù)。 開始 設(shè)定曲線繪制寬度 循環(huán)開始測溫點 1 到 N 設(shè)置曲線顏色 起始繪制坐標(biāo) 循環(huán)開始溫度數(shù)據(jù) 1 到 N 從 N1 個數(shù)據(jù)坐標(biāo)到 N個數(shù)據(jù)坐標(biāo)繪制曲線 結(jié)束 循環(huán)結(jié)束 循環(huán)結(jié)束 沈陽理工大學(xué)學(xué)士學(xué)位論文 27 通過曲線和 MSFlexGrid 文本方式和顯示當(dāng)前溫度值,直截了當(dāng),不需要操作說明書就可以直接使用。 數(shù)據(jù)存儲模塊設(shè)計 數(shù)據(jù)存儲在本多點測溫系統(tǒng)管理軟件中也占據(jù)著重要的位置,完善的數(shù)據(jù)存儲對將來歷史查詢和報表打印都有極大的影響,本文數(shù)據(jù)存儲模塊仍然是使用名稱為Timer_save 的一個 Timer 控件實現(xiàn)的。 本文采用的是以 txt 文本方式存儲, txt 文本方式存儲的好處在于不需要任何工 具軟件,直接通過 Windows 自帶的文本編輯器就可以瀏覽歷史溫度,并且比數(shù)據(jù)庫更容易管理。數(shù)據(jù)存儲在程序所在目錄下 \data\年分 \月份 \日期 \下面,以 T 字母開頭 (意為Time)后跟小時為名稱的 txt 文本文件里面。例如: 的文本文件表示 18:00:00至 18:59:59 這一個小時采集的數(shù)據(jù)存儲在該文本文檔里面。具體實現(xiàn)方法如下: 首先通過程序判斷前一時刻的小時是否與現(xiàn)在的小時相等,如果相等則表示同一小時內(nèi)有儲數(shù)據(jù),則繼續(xù)在該文本文檔中保存數(shù)據(jù),如果不相等則繼續(xù)進(jìn)行判斷是否有相同的日期,如果日期相同則在同一日期文件夾下面建立以當(dāng)前小時為名稱的文本文檔,進(jìn)行數(shù)據(jù)存儲,如果日期不同,則繼續(xù)判斷是否有相同的月份,有則在其下面建立日期文件夾,存儲數(shù)據(jù),無則先建立月份文件夾,再建立日期文件夾,進(jìn)行數(shù)據(jù)存儲。 存儲溫度數(shù)據(jù)用 Print 語句實現(xiàn): Print 1, Time amp。 Chr(9) amp。 m_sTemp(iLoop) amp。 Chr(9) amp。 m_sTemp(iLoop),存儲數(shù)據(jù)格式為:采集溫度的時間 +第一路采集的溫度 +?? +第 N路采集的溫度。為了美觀,每個數(shù)據(jù)之間用 Chr(9)做間隔,達(dá)到對齊的目的。程序流程如 圖 所示: 沈陽理工大學(xué)學(xué)士學(xué)位論文 28 前 一 小 時 與 當(dāng) 前小 時 是 否 相 等 ?是 否 有 日 期 相同 的 文 件 夾 ?是 否 有 月 份 相同 的 文 件 夾 ?寫 入 數(shù) 據(jù)保 存 文 件YN建 立 小 時文 本 文 件YN建 立 日 期文 件 夾開 始結(jié) 束建 立 月 份文 件 夾YN 圖 數(shù)據(jù)存儲流程圖 歷史數(shù)據(jù)顯示模塊設(shè)計 為了讓使用者簡單直接的查看歷史數(shù)據(jù),本系統(tǒng)設(shè)計在主窗體上面包含一個查詢歷史數(shù)據(jù)的按鈕,當(dāng)使用者按下此按鈕時,程序進(jìn)行歷史數(shù)據(jù)的曲線顯示。歷史數(shù)據(jù)顯示主要分為兩個部分,第一部分是設(shè)定需要查看的歷史 數(shù)據(jù)的開始時間和要查看歷史數(shù)據(jù)的持續(xù)時間,當(dāng)時間設(shè)置改變時,需要重新調(diào)用此部分;第二部分是根據(jù)設(shè)定歷史數(shù)據(jù)開始讀取時間進(jìn)行讀取的函數(shù)部分。程序首先獲得當(dāng)前時間,以當(dāng)前時間前一小時作為歷史數(shù)據(jù)的讀取開始時間,然后通過主窗體上時間間隔設(shè)置文本框讀取已設(shè)時間間隔,此處用變量記錄歷史數(shù)據(jù)開始時間和設(shè)定的時間間隔。接下來調(diào)用時間設(shè)定函數(shù)。 時間設(shè)定函數(shù)首先判斷設(shè)定的時間間隔是否處于 6 分鐘 —— 24 小時之內(nèi),整個時間坐標(biāo)軸的范圍是 6 分鐘 —— 24 小時,大于或者小于這個范圍則要求操作者重新設(shè)定。如果時間間隔在這一范圍之內(nèi),用 歷史數(shù)據(jù)開始時間 +時間間隔與開始時間進(jìn)行比較,如沈陽理工大學(xué)學(xué)士學(xué)位論文 29 果開始時間大于結(jié)束時間,說明整個數(shù)據(jù)時間段跨越了 24 點,則在讀取歷史溫度數(shù)據(jù)的時候需要在兩天的文件中讀取,這里建立了一個名稱為 m_Over_One_Day 的 Boolean型的標(biāo)識符,通過它的 Ture 和 Flase 屬性標(biāo)識是否跨越了 24 點。接下來以歷史數(shù)據(jù)開始讀取時間和時間間隔作為變量,通過畫背景模塊進(jìn)行歷史曲線的背景繪制。在繪制完曲線背景和溫度時間坐標(biāo)之后,進(jìn)行歷史數(shù)據(jù)讀取。 歷史數(shù)據(jù)讀取函數(shù):歷史數(shù)據(jù)起始時間開始,依次讀取每一小時的溫度,存儲到臨時保存區(qū),如果 有跨越 24 點的標(biāo)識符,則在讀取的時候需要在兩天的文件夾內(nèi)讀取溫度信息。把每個測溫點的信息依次讀取出來,讀取之后依次保存。接下來調(diào)用畫線函數(shù),把當(dāng)前存儲的各個測溫點臨時溫度數(shù)據(jù)作為參數(shù)傳給劃線子程序,繪制曲線程序與繪制實時曲線程序?qū)崿F(xiàn)方法基本相同,這里不再描述。 鼠標(biāo)指示溫度曲線時,顯示當(dāng)前所指溫度值的數(shù)值功能:在顯示歷史曲線的時候,需要實現(xiàn)當(dāng)鼠標(biāo)指向曲線時,鼠標(biāo)右下角有一隨鼠標(biāo)一起移動的 Label,在這個 Label里面顯示,此段函數(shù)通過 MouseMove 函數(shù)實現(xiàn)。當(dāng)鼠標(biāo)移動時,觸發(fā) MouseMove 事件,首 先程序采集出鼠標(biāo)所指位置,設(shè)置 Label 的坐標(biāo)為該位置,然后通過該位置所指示的橫縱坐標(biāo)讀取溫度值,再把溫度值寫到 Label 里面,實現(xiàn)跟隨鼠標(biāo)顯示溫度數(shù)值。 拖拽鼠標(biāo)時,實現(xiàn)調(diào)整歷史數(shù)據(jù)查詢開始時間和持續(xù)時間功能:在歷史數(shù)據(jù)顯示的時候,默認(rèn)歷史數(shù)據(jù)開始時間是當(dāng)前時刻前一小時的時刻,持續(xù)時間是一個小時,如果操作者想查看半小時之內(nèi)的圖像,就可以通過鼠標(biāo)拖拽的功能實現(xiàn)。當(dāng)鼠標(biāo)按下時,首先記錄鼠標(biāo)按下的坐標(biāo),并選用一個名為 m_i_Mouse_Statue 的 Boolean 型的標(biāo)識符,標(biāo)示已經(jīng)按下鼠標(biāo),使預(yù)先繪制好的一個 Shape 的 Visible 屬性調(diào)整為 Ture,同時使 Shape的原點坐標(biāo)為鼠標(biāo)按下時的坐標(biāo),當(dāng)拖拽時, Shape 的長寬通過計算,隨著鼠標(biāo)改變,這樣就實現(xiàn)了一個可以改變大小的 Shape。當(dāng)鼠標(biāo)抬起時,記錄鼠標(biāo)抬起位置的坐標(biāo),通過鼠標(biāo)按下的坐標(biāo)值和鼠標(biāo)抬起的坐標(biāo)值換算出時間間隔,把鼠標(biāo)按下時間和時間間隔作為參數(shù)重新調(diào)用繪制背景模塊,調(diào)用繪制歷史曲線模塊進(jìn)行新歷史曲線的繪制。 打印功能模塊設(shè)計 打印模塊可以實現(xiàn)歷史溫度曲線的打印,并且在曲線上記錄打印時間,該功能的實現(xiàn)通過 CommonDialog 控件 實現(xiàn)的,該控件具有強(qiáng)大的功能,可以實現(xiàn)文件的打開和保存、設(shè)置顏色、字體、使用打印機(jī)和幫助等 Windows 功能,通過對該控件的設(shè)置,可以輕松完成打印功能。首先通過程序設(shè)置打印的份數(shù)為一份; Orientation 打印紙的方向,沈陽理工大學(xué)學(xué)士學(xué)位論文 30 橫向縱向,本文設(shè)置打印方向為橫向打??; ColorMode 以黑白或者彩色形式打印圖像,本文設(shè)置為
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1