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

正文內(nèi)容

2串口設備數(shù)據(jù)的接收和處理-文庫吧

2025-02-16 18:23 本頁面


【正文】 法從接收緩沖區(qū)中讀取一個字節(jié)時,如果下位機發(fā)送過來的數(shù)據(jù)沒有在 ReadTimeout規(guī)定的時間內(nèi)到達,則會引發(fā)TimeoutException,應用程序可以捕獲該異常,并作相應處理。下面的測試程序說明了超時異常處理的方法: SerialPort sp。 private void btnStart_Click (object sender, EventArgs e) { byte firstByte。 ()。 //清空接收緩沖區(qū),準備接收數(shù)據(jù) = 10000。 //10秒內(nèi)沒有收到回復數(shù)據(jù),將捕獲到異常 try { firstByte = (byte)()。 //同步讀?。ǔ绦蛟诖吮蛔枞? = (X2)。 //顯示在文本框 t1中 } catch (TimeoutException ex) //捕獲到接收超時異常 { = 。 //在 t1中顯示異常信息 } } 10 工控程序設計 學習情景 串口設備數(shù)據(jù)的接收和處理 圖 接收超時異常測試 如上圖所示,在點擊“開始”按鈕后,程序被阻塞,此時窗口對鼠標和鍵盤的輸入都不響應。為了有足夠操作時間, SerialPort對象 sp的 ReadTimeout屬性為 10000毫秒( 10秒)。在 10秒時間內(nèi),測試者可以通過串口測試程序發(fā)送一個或多個字節(jié)過來,此時程序結束阻塞狀態(tài)繼續(xù)運行,并在文本框中顯示接收到的第 1個字節(jié);如果 10秒內(nèi)沒有數(shù)據(jù)到達,則引發(fā) TimeoutException。 若上位機程序要一直等待,可以把 ReadTimeout屬性的值設置為1,但在實際應用中一般不這樣做。 11 工控程序設計 學習情景 串口設備數(shù)據(jù)的接收和處理 5 HSDZC電能綜合測試儀的數(shù)據(jù)格式 HSDZC電能綜合測試儀在鉆機性能測試系統(tǒng)中用于輸入功率、輸出功率以及功率因素(參見引言介紹)。該設備提供兩種電腦測量方式,在儀表提示“測量方式”時,可以分別按“顯示 1” 和“顯示 2” 進入。 在測量方式 1的情況下測試儀每秒通過 RS232接口發(fā)送 1組數(shù)據(jù),長度 46字節(jié)。信號格式:開始 4字節(jié)均為 FFH,后續(xù)每三個字節(jié)構成一個浮點數(shù)值,分別表示 I U I U I U3,以及功率因數(shù)、視在功率、效率、輸入功率、無功功率、負載率、輸出功率、轉速,共 14個數(shù)據(jù)。 在測量方式 2的情況下測試儀也是每秒通過 RS232接口發(fā)送 1組數(shù)據(jù),長度 30字節(jié)。信號格式:開始 3字節(jié)均為 12H、 34H、 56H,后續(xù)每三個字節(jié)構成一個浮點數(shù)值,分別表示 I U P I U P IU P3,共 9個數(shù)據(jù)。 上位機在和 HSDZC電能綜合測試儀進行通信時,不需要向設備寫入數(shù)據(jù),而是被動地讀取設備發(fā)送過來的數(shù)據(jù)。下面的相關知識將進一步介紹對已接收到數(shù)據(jù)的存儲和處理方法。 12 工控程序設計 學習情景 串口設備數(shù)據(jù)的接收和處理 構成浮點數(shù)值的 3個字節(jié)含義是:第 1字節(jié) (B1)為尾數(shù)低位,第 2字節(jié) (B2)為尾數(shù)高位,第 3字節(jié) (B3)為階碼指數(shù)。其中階碼指數(shù)各位的含義如表: 表 階碼指數(shù)字節(jié)中各位的含義 D7 D6 D5D0 數(shù)值符號: 0為正,1為負 階碼符號: 0為正,1為負 階碼數(shù)值 13 工控程序設計 學習情景 串口設備數(shù)據(jù)的接收和處理 尾數(shù) B的值在 0到 1之間,計算公式是: 下面的 HexToFloat函數(shù)描述了將 3個字節(jié)轉換為浮點數(shù)的算法: private float HexToFloat(byte B1, byte B2, byte B3) { float f, B, n。 //B:尾數(shù) n:階碼指數(shù) B = (B2 * 256 + B1) / 65536F。 if ((B3 0x80) != 0) //如果 D7為 1,等價于 if(B3=128) { B = B。 B3 = (byte)(B3 0x7F)。 //等價于 B3=(byte)(B3128) if ((B3 0x40) != 0) //如果 D6為 1 { B3 = (byte)(B3 0xBF)。 n = B3。 } else n = B3。 f = B * (float)(2, n)。 //B乘以 2的 n次方 return f。 } 6553 6 12562 BBB ???14 工控程序設計 學習情景 串口設備數(shù)據(jù)的接收和處理 6 數(shù)據(jù)幀片段的緩存方法 (1)使用集合類存儲接收數(shù)據(jù) 在通信過程中,數(shù)據(jù)幀表示由多個字節(jié)構成的,具有一定格式,表示完整語意的一組數(shù)據(jù)。例如,在和 HSDZC電能綜合測試儀進行通信時,如果測試儀工作在測量方式 1,則一幀數(shù)據(jù)的長度為 46個字節(jié)(包含起始標志和 14個數(shù)值)。 在系統(tǒng)實際運行中,下位機向上位機發(fā)送數(shù)據(jù)時,可能會將數(shù)據(jù)幀分為幾個片段依次發(fā)送,或者在一次接收到的數(shù)據(jù)中包含了不止一幀數(shù)據(jù)。上位機必須提供一個字節(jié)的集合來對接收到的數(shù)據(jù)進行緩存(暫存),在確認接收完畢一幀數(shù)據(jù)后,再進行進一步的分析和處理。 .NET Framework List類來實現(xiàn)集合元素管理。List類支持泛型,在存取 byte類型的集合元素時無需進行“裝箱”和“拆箱”操作,比使用 ArrayList效率高。 15 工控程序設計 學習情景 串口設備數(shù)據(jù)的接收和處理 List類提供了豐富的方法來對集合中的元素進行操作,表 了 List類的常用方法,表中的示例建立在如下定義的基礎上: byte b。 byte[] ba。 Listbyte li = new Listbyte()。 //創(chuàng)建 List類的實例 li,元素類型為 byte 表 List類的常用方法 方法的接口定義 功能說明 示 例 public void Add(T item)。 在集合末尾添加元素item (b)。 16 工控程序設計 學習情景 串口設備數(shù)據(jù)的接收和處理 public void AddRange( IEnumerableT collection)。 在集合末尾添加另一個集合collection (ba)。 public void Insert(int index, T item)。 在 index位置插入元素 item (0,b) public void InsertRange(int in
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1