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

正文內(nèi)容

基于vb多點溫度采集系統(tǒng)上位機軟件設(shè)計1_免費下載(參考版)

2024-11-11 21:37本頁面
  

【正文】 打印功能模塊設(shè)計 打印模塊可以實現(xiàn)歷史溫度曲線的打印,并且在曲線上記錄打印時間,該功能的實現(xiàn)通過 CommonDialog 控件 實現(xiàn)的,該控件具有強大的功能,可以實現(xiàn)文件的打開和保存、設(shè)置顏色、字體、使用打印機和幫助等 Windows 功能,通過對該控件的設(shè)置,可以輕松完成打印功能。當(dāng)鼠標按下時,首先記錄鼠標按下的坐標,并選用一個名為 m_i_Mouse_Statue 的 Boolean 型的標識符,標示已經(jīng)按下鼠標,使預(yù)先繪制好的一個 Shape 的 Visible 屬性調(diào)整為 Ture,同時使 Shape的原點坐標為鼠標按下時的坐標,當(dāng)拖拽時, Shape 的長寬通過計算,隨著鼠標改變,這樣就實現(xiàn)了一個可以改變大小的 Shape。當(dāng)鼠標移動時,觸發(fā) MouseMove 事件,首 先程序采集出鼠標所指位置,設(shè)置 Label 的坐標為該位置,然后通過該位置所指示的橫縱坐標讀取溫度值,再把溫度值寫到 Label 里面,實現(xiàn)跟隨鼠標顯示溫度數(shù)值。接下來調(diào)用畫線函數(shù),把當(dāng)前存儲的各個測溫點臨時溫度數(shù)據(jù)作為參數(shù)傳給劃線子程序,繪制曲線程序與繪制實時曲線程序?qū)崿F(xiàn)方法基本相同,這里不再描述。 歷史數(shù)據(jù)讀取函數(shù):歷史數(shù)據(jù)起始時間開始,依次讀取每一小時的溫度,存儲到臨時保存區(qū),如果 有跨越 24 點的標識符,則在讀取的時候需要在兩天的文件夾內(nèi)讀取溫度信息。接下來以歷史數(shù)據(jù)開始讀取時間和時間間隔作為變量,通過畫背景模塊進行歷史曲線的背景繪制。 時間設(shè)定函數(shù)首先判斷設(shè)定的時間間隔是否處于 6 分鐘 —— 24 小時之內(nèi),整個時間坐標軸的范圍是 6 分鐘 —— 24 小時,大于或者小于這個范圍則要求操作者重新設(shè)定。程序首先獲得當(dāng)前時間,以當(dāng)前時間前一小時作為歷史數(shù)據(jù)的讀取開始時間,然后通過主窗體上時間間隔設(shè)置文本框讀取已設(shè)時間間隔,此處用變量記錄歷史數(shù)據(jù)開始時間和設(shè)定的時間間隔。程序流程如 圖 所示: 沈陽理工大學(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)使用者按下此按鈕時,程序進行歷史數(shù)據(jù)的曲線顯示。 m_sTemp(iLoop),存儲數(shù)據(jù)格式為:采集溫度的時間 +第一路采集的溫度 +?? +第 N路采集的溫度。 m_sTemp(iLoop) amp。 存儲溫度數(shù)據(jù)用 Print 語句實現(xiàn): Print 1, Time amp。例如: 的文本文件表示 18:00:00至 18:59:59 這一個小時采集的數(shù)據(jù)存儲在該文本文檔里面。 本文采用的是以 txt 文本方式存儲, txt 文本方式存儲的好處在于不需要任何工 具軟件,直接通過 Windows 自帶的文本編輯器就可以瀏覽歷史溫度,并且比數(shù)據(jù)庫更容易管理。 開始 設(shè)定曲線繪制寬度 循環(huán)開始測溫點 1 到 N 設(shè)置曲線顏色 起始繪制坐標 循環(huán)開始溫度數(shù)據(jù) 1 到 N 從 N1 個數(shù)據(jù)坐標到 N個數(shù)據(jù)坐標繪制曲線 結(jié)束 循環(huán)結(jié)束 循環(huán)結(jié)束 沈陽理工大學(xué)學(xué)士學(xué)位論文 27 通過曲線和 MSFlexGrid 文本方式和顯示當(dāng)前溫度值,直截了當(dāng),不需要操作說明書就可以直接使用。要在單元中顯示多行文本,你需要增大單元的寬度( ColWidth 屬性)或行高度( RowHeight 屬性)。 Text 屬性引用了當(dāng)前單元中的文本。 Row 和 Col 屬性指定 MSFlexGrid 控件的當(dāng)前單元。當(dāng)與 Data 控件綁定時, MSFlexGrid 控件只顯示只讀數(shù)據(jù)。MSFlexGrid 控件顯示和操作表格數(shù)據(jù)。 詳細循環(huán)流程如下圖 所示: 沈陽理工大學(xué)學(xué)士學(xué)位論文 26 圖 實時數(shù)據(jù)曲線顯示流程 數(shù)字方式顯示當(dāng)前溫度值:程序同時還提供以文本方式實時顯示溫度值。橫坐標時間刻度每繪制一次,減 10 秒,這樣曲線就從右至左繪制了出來。第一個溫度點時首先設(shè)定畫線寬度為 2,然后讀取該溫度曲線的顏色,設(shè)定該溫度點第一個電壓值轉(zhuǎn)換后對應(yīng)的的起始坐標位置,接下來是第二層循環(huán),第二層循環(huán)是以該溫度點總計數(shù)據(jù)的長度作為循環(huán)次數(shù),繪制直線次數(shù)為該點溫度存儲的數(shù)據(jù)長度數(shù)。程序 使用兩層循環(huán)嵌套達到繪制曲線的目的。 實時數(shù)據(jù)顯示模塊設(shè)計 實時數(shù)據(jù)顯示模塊是相對程序設(shè)計中比較重要的一部分,實時數(shù)據(jù)顯示是給操作者最直觀的數(shù)據(jù),實時數(shù)據(jù)顯示完善與否直接影響軟件的操作。由于 溫度 值字符串是前面有 ” s” 的,所以從第二個字符開始取數(shù),取總共字符串 長度減一個字符,并進行保存。文 章中使用這個函數(shù),把字符串左側(cè)第一個字符取出來,進行判斷是否是 ” s” ,如果是的話,說明串口采集上來的數(shù)據(jù)正確,接下來還需要判斷一下該字符串的長度是否大于 3,因為程序要求必須采集上來的 溫度 值精度為至少 3 位,例如 ,因此還需要對采集上來的數(shù)據(jù)進行判沈陽理工大學(xué)學(xué)士學(xué)位論文 25 斷,如果滿足條件,則繼續(xù)進行處理。首先程序判斷串口采集出來的數(shù)據(jù)第一個字符是否是 “ s” ,此處用到一個函數(shù)是Left(string, length)。 OnComm 事件程序的流程圖如圖 所示 : 沈陽理工大學(xué)學(xué)士學(xué)位論文 24 圖 OnComm 事件程序的流程圖 數(shù)據(jù)處理模塊設(shè)計 數(shù)據(jù)處 理主要由兩部分組成,一部分是處理串口通訊返回的信息,進行數(shù)據(jù)的規(guī)整化處理,另一部分是對采集上來的溫度值進行顯示和存儲。 通過 Debug 模式的創(chuàng)建,可以在沒有硬件的情況下進行軟件編輯,加快了工程進度,并且還能容易的找出問題的所在之處。 數(shù)據(jù)采集流程如圖 所示: 沈陽理工大學(xué)學(xué)士學(xué)位論文 23 圖 數(shù)據(jù)采集流程圖 在 Debug模式下與在正常模式下的區(qū)別在于 Debug模式并沒有真正發(fā)送地址和通道的實際操作,屏蔽掉了一條語句: = vSend,該語句在正常模式下實現(xiàn)把 vSend 里面的數(shù)值也就是地址和通道通過串口發(fā)送給下位機,在這里并沒有真正發(fā)送,所以當(dāng)沒有下位機的情況下,也可以進行調(diào)試,語句不出錯。 為了防止在延時的時候有其他事件發(fā)生,例如存儲模塊進行存儲,則必須轉(zhuǎn)讓控制權(quán)給系統(tǒng),這樣系統(tǒng)才能響應(yīng)其他事件,否則延時過程會導(dǎo)致 CPU 占用率100%等其他不可預(yù)料的問題發(fā)生。期間還需要使用一個函數(shù): DoEvents。 GetTickCount 的函數(shù)功能: GetTickCount 返回從操作系統(tǒng)啟動到現(xiàn)在所經(jīng)過 的毫秒數(shù)。 延時 50ms 的實現(xiàn):在 VB 當(dāng)中,并沒有延時程序,所以必須通過程序來實現(xiàn),實現(xiàn)的方法是通過 GetTickCount 函數(shù)來實現(xiàn)。 下位機的設(shè)置是當(dāng)上位機發(fā)送地址和通道給下位機時,下位機把就把對應(yīng)該地址和通道的 溫度 值讀取出來保存,當(dāng)上位機需要讀取時,上位機發(fā)送 命令,下位機就把儲存的 溫度 值發(fā)送給上位機。 數(shù)據(jù)采集模塊設(shè)計 數(shù)據(jù)采集模塊主要由名稱為 Timer_Sample 的一個 Timer 控件實現(xiàn)數(shù)據(jù)采集,由于是多路溫度采集,首先設(shè)置一個變量,從 1 一直到總溫度點數(shù)逐一遞增,該變量影響地址和通道數(shù),當(dāng)該變量為 1 時,進行第 1 通道 的溫度采集,采集之后并把該變量加 1,地址和通道做出響應(yīng)的變化,進行下次采集操作。在保存的文本文件第一行信息是總共的采樣點數(shù),接下來是從第一個采樣點一直到最后一個采樣點的具體信息。在刪除文件之后,重新建立一個名稱為 的文本文 件,用來保存新采樣點信息。 如圖 所示: 圖 編輯采樣點信息窗體 本程序在處理保存溫度點信息采 用的是一個名稱為 的文本文件,其中包含有總共的采樣點數(shù)和每個采樣點信息,采樣點信息包括采樣點的地址,通道,最高最低溫度等信息。當(dāng)測溫點數(shù)量發(fā)生變化并且按下改變數(shù)量按鈕時,程序首先按照新設(shè)定的測溫點數(shù)建立一組新的測溫點,然后把新測溫點的信息依次保存到臨時建立的測溫點數(shù)組內(nèi)。 本程序通過一個窗體進行編輯采樣點信息,窗體有兩個主要程序,第一個是改變測溫 點數(shù)按鈕對應(yīng)的程序,另一個是保存按鈕對應(yīng)的程序。背景設(shè)置好后的效果圖如圖 所沈陽理工大學(xué)學(xué)士學(xué)位論文 20 示: 圖 主界面背景運行效果圖 子程序模塊設(shè)計 參數(shù)設(shè)置模塊設(shè)計 參數(shù)設(shè)置模塊設(shè)計的完善與否直接影響后期程序編寫,本文首先針對每一個測溫點所包 含的數(shù)據(jù)設(shè)置成自定義的一個類,創(chuàng)建一個名為 ClsSamplePoint 類模塊,以紀錄每一個采樣的信息 ,以及存儲臨時采樣數(shù)據(jù)。期中用到函數(shù) DateAdd(interval, number, date), DateAdd 函數(shù)的功能是返回包含一個日期的 Variant (Date),這一日期還加上了一段時間間隔。 在打印溫度刻度值和時間刻度值接下來在 PictureBox 上面打印出溫度坐標,溫度坐標打印的時候需要考慮最低的溫度和最高的溫度一定要選擇所有測溫點中能達到最低和最高的溫度作為整個 PictureBox 的最低和最高溫度坐標,其間用循環(huán)函數(shù)進行判斷,取出最低溫度和最高溫度,進行打印。本文畫線是先從左到右畫豎線,默認程序只畫 7 條豎線,把 PictureBox 分成 6 等份,然后從上到下畫橫線,在畫橫線的時候需要考慮畫多少條橫線,通過函數(shù)計算:(最高溫度值 最低溫度值 ) /10,并且如果結(jié)果大于 20 的話,則設(shè)置橫線的條數(shù)是 20,如果小于 10 的話,則設(shè)置橫線的條數(shù)為 10。主要用到的函數(shù)有 ,用來畫直線, ,用來打印刻度值。通過 VB 提供的 Label 控件,當(dāng)數(shù)據(jù)達到端口和發(fā)送完畢之后在控制管理界面中會出現(xiàn)正在接收和 發(fā)送成功的標志。 CommEvReceive 事件,利用它可以簡單有效的檢測數(shù)據(jù)什么時候到達端口。他有 17 個事件,其中任意一個發(fā)生的時候 ,應(yīng)用程序自動設(shè)置一個 CommEvent 屬性,跳到 OnComm 子程序。 MSComm 有一個相關(guān)的事件 OnComm,他對一個端口的不同事件作出反應(yīng)。有兩種形式,設(shè)為沈陽理工大學(xué)學(xué)士學(xué)位論文 19 ComInputModeText(默認值 )時,按字符串形式接收:設(shè)為 ComlnputModeBinary 時,當(dāng)作字節(jié)數(shù)組中的二進制數(shù)據(jù)來接收。 Output:屬性被用來向發(fā)送緩沖區(qū)發(fā)出命令和數(shù)據(jù),屬性均在設(shè)計時無效,在運行時為只讀。 本系統(tǒng)設(shè)置為: = 1’ 使用中斷方式接收數(shù)據(jù) = 1’ 使用事件驅(qū)動方式發(fā)送數(shù)據(jù) Input:屬性接收從接收緩沖區(qū)獲取的數(shù)據(jù),然后刪除己接收的接收緩沖區(qū)中的數(shù)據(jù)流。然而,如果緩沖區(qū)太小,就要冒緩沖區(qū)溢出的風(fēng)險。為了管理這些緩沖區(qū),還必須對 MSComm控件以下屬性進行設(shè)置: InBufferSize 和 OutBufferSize:設(shè)置并返回接收和發(fā)送緩沖區(qū)的大小,以字符為單位,屬性指定了為接收和發(fā)送緩沖區(qū)分配的內(nèi)存數(shù)量,缺省規(guī)定 1024 字節(jié)和 512 字節(jié)。 PortOpen:設(shè)置并返回端口狀態(tài) (打開為 True 和關(guān)閉 False):當(dāng)系統(tǒng)啟動時,PortOpen 自動設(shè)置為 True,即 =True 當(dāng)系統(tǒng)退出時, PortOpen 自動設(shè)置為 False,即 = False。在使用 Input 前,用戶可以選擇檢查 InBufferCount 屬性來確定緩沖區(qū)中是否己有需要數(shù)目的字符。如果 InputLen屬性設(shè)置為 0,那么在使用 InputLen 屬性時, MSComm 控件將讀出接收緩沖區(qū)中的所有內(nèi)容。由于采用累加和對數(shù)據(jù)進行校驗,故奇偶校驗位值設(shè)置為 N0 數(shù)據(jù)位數(shù)指定了代表一個數(shù)據(jù)塊的比特數(shù),采用 8 位數(shù)據(jù)位,停止位指出了何時才能接收到一個數(shù)據(jù)塊。 沈陽理工大學(xué)學(xué)士學(xué)位論文 18 Settings 以字符串形式設(shè)置或返回波特率、校驗位、數(shù)據(jù)位、以及 停止位,波特率可以在 480019200 之間選取,系統(tǒng)默認值設(shè)為 9600bit/s。因為 PC 機一般只有兩個通訊端口,所以屬性值在溫室控制界面中只能選擇設(shè)置為 1 到 2 之間的整數(shù)。 下面簡單介紹本系統(tǒng)通信控件 MSComm 屬性的設(shè)置。事件驅(qū)動法是每當(dāng)有新字符到達或端口狀態(tài)改變,或發(fā)生錯誤時, MSComm 控件將觸發(fā) OnComm 事件,而應(yīng) 用程序在捕獲該事件后,通過檢查 MSComm 控件的 CommEvent 屬性可以獲知所發(fā)生的事件或錯誤,從而采取相應(yīng)的操作。 MSComm 控件提供了兩種通訊模式:查詢法和事件驅(qū)動法。在通信過程中,當(dāng)發(fā)送數(shù)據(jù)、收到數(shù)據(jù)或產(chǎn)生傳輸錯誤時,觸發(fā) MSComm 控件的 OnComm 事件 ,然后可以通過判斷 CommEvent 屬性值獲得事件類型,再根據(jù)事件類型進行相應(yīng)數(shù)據(jù)處理。該控件是 提供的標準通信控件,它提供了進行 RS232 數(shù)據(jù)通信的所有協(xié)議,具有豐富的與串行通訊密切相關(guān)的屬性及事件,可對串口進行各種操作,能使用戶方便的訪問 WINDOWS串行通信驅(qū)動程序的大 多數(shù)特性,包括輸入、輸出緩沖區(qū)的大小及使用起來非常方便。 窗體的設(shè)計:用戶直觀看到的就
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1