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

正文內(nèi)容

多個(gè)串口設(shè)備數(shù)據(jù)的連續(xù)采集-免費(fèi)閱讀

  

【正文】 } 至此已經(jīng)面向?qū)ο笤O(shè)計(jì)方法完成了 HC100智能測(cè)控儀、 JW2A扭矩儀、LU902M位式調(diào)節(jié)儀數(shù)據(jù)采集程序的設(shè)計(jì),讀者把代碼進(jìn)行簡(jiǎn)單的組合,就可以同時(shí)對(duì)多個(gè)不同種類的設(shè)備進(jìn)行數(shù)據(jù)采集,并每秒刷新一次參數(shù)值。 = new byte[] { }。 ) //讀數(shù)命令已完成 { = true。//設(shè)備地址 ()。 bRecv[7] == 0x4B) return true。 } return mand。 = 。 //轉(zhuǎn)速 (JW2A回復(fù) :扭矩 + nj + ,轉(zhuǎn)速 + zs)。 ) //讀數(shù)命令已完成 { nextCmd = (A)。 //JW2A要先發(fā) A命令 (nextCmd)。 = true。 m = m / 8388608。 //返回的浮點(diǎn)數(shù),應(yīng)為:( 1+小數(shù)位) * 2^(指數(shù)) *(符號(hào)位) s = data[0] amp。 break。 = new byte[] { 0x00 }。 38 工控程序設(shè)計(jì) switch (mandName) { case A: //尋址指令(激活設(shè)備) = mandName。 ()。 } } 35 工控程序設(shè)計(jì) 下面的代碼說明了 CHC100類在 UI模塊中的應(yīng)用。 } 34 工控程序設(shè)計(jì) return false。 = 11。amp。 //等待 20毫秒后再檢查數(shù)據(jù)是否達(dá)到規(guī)定長(zhǎng)度 } if (n 3) continue。 first = (byte)()。 } byte first。 } 28 工控程序設(shè)計(jì) public void setCommand(CCommand cmd) { (this)。 //線程同步:在進(jìn)行 get操作時(shí),不準(zhǔn)進(jìn)行 set操作 = 。 //始終保持有一個(gè)命令 = true。 public delegate void DataReceivedHandler(CActiveCOMHelper sender)。如此循環(huán),就可以不斷讓 CActiveCOMHelper對(duì)象執(zhí)行命令。//命令名字 public byte[] cmdContent。 } } 下面的測(cè)試程序調(diào)用 CRC16方法,計(jì)算出長(zhǎng)度為兩個(gè)字節(jié)的循環(huán)冗余校驗(yàn)碼,并附加在字節(jié)數(shù)組末尾: byte[] b ={0x41,0x42,0x43,0,0}。 1u。 //16位 CRC寄存器 uint LSB。 for (int i = offset。 } } 下面的測(cè)試程序調(diào)用 CheckSum_1方法,計(jì)算出長(zhǎng)度為 1個(gè)字節(jié)的累加和校驗(yàn)碼,并附加在字節(jié)數(shù)組末尾: byte[] b ={0x41,0x42,0x43,0}。 //存放累加和的低 8位和高 8位 for (int i = offset。 下面的 C代碼將累加和校驗(yàn)碼生成功能封裝到 CCheck類的方法中,其中CheckSum_1方法計(jì)算單字節(jié)累加和校驗(yàn)碼, CheckSum_2方法計(jì)算雙字節(jié)累加和校驗(yàn)碼 class CCheck { //函數(shù)功能: //計(jì)算字節(jié)數(shù)組 b中從 offset位置開始的 count個(gè)元素的單字節(jié)累加和校驗(yàn)碼 //參數(shù): //b:要計(jì)算累加和的字節(jié)數(shù)組 //offset:要計(jì)算累加和的元素的起始位置 //count:要計(jì)算累加和的連續(xù)元素個(gè)數(shù) //返回值:累加和的低 8位(單個(gè)字節(jié)) 16 工控程序設(shè)計(jì) public static byte CheckSum_1(byte[] b, int offset, int count) { uint sum = 0。 4)如果 LSB為 0,重復(fù)第三步;若 LSB為 1, CRC寄存器與多項(xiàng)式碼相異或。 (1)累加和校驗(yàn) 累加和校驗(yàn)的過程是,發(fā)送端將數(shù)據(jù)的每個(gè)字節(jié)累加求和,然后截取最低字節(jié)(或最低兩字節(jié))作為校驗(yàn)碼發(fā)送給接收端,接收端收到數(shù)據(jù)后,用同樣的方法計(jì)算累加和,并與發(fā)送過來的校驗(yàn)碼進(jìn)行比較,從而檢驗(yàn)發(fā)送的數(shù)據(jù)是否有誤。 1)尋址指令 當(dāng)上位機(jī)要對(duì)某 LU902M儀表進(jìn)行通訊操作時(shí),應(yīng)先對(duì)其發(fā)尋址指令。 11 工控程序設(shè)計(jì) JW2A扭矩儀的數(shù)據(jù)采用 IEEE浮點(diǎn)數(shù)形式表示,需要作浮點(diǎn)數(shù)字節(jié)數(shù)組到浮點(diǎn)數(shù)的轉(zhuǎn)換。 10 工控程序設(shè)計(jì) 表 JW2A的扭矩參數(shù) 數(shù)據(jù)名稱 數(shù)據(jù)類型 數(shù)據(jù)長(zhǎng)度( byte) 系數(shù) 無符號(hào)整數(shù) 2 量程 浮點(diǎn)數(shù) 4 齒數(shù) 無符號(hào)整數(shù) 2 采樣周期 無符號(hào)整數(shù) 2 扭矩報(bào)警值 浮點(diǎn)數(shù) 4 轉(zhuǎn)速報(bào)警值 無符號(hào)整數(shù) 2 小電機(jī)轉(zhuǎn)速 無符號(hào)整數(shù) 2 定時(shí)打印時(shí)間 無符號(hào)整數(shù) 2 轉(zhuǎn)速模擬輸出范圍 無符號(hào)整數(shù) 2 標(biāo)定溫度 無符號(hào)整數(shù) 1 使用溫度 無符號(hào)整數(shù) 1 14:寫模擬通道量程。上位機(jī)應(yīng)按上述讀扭矩參數(shù)的順序依次將 24個(gè)字節(jié)寫回去。儀器受到命令后準(zhǔn)備接受 10個(gè)零點(diǎn),共 60個(gè)字節(jié)的數(shù)據(jù)。儀器收到命令后向上位機(jī)依次傳送 0至 7通道的 A/D采樣結(jié)果。 5:內(nèi) /外轉(zhuǎn)速顯示轉(zhuǎn)換。每個(gè)參數(shù)的傳送順序都是從內(nèi)存的低地址到高地址 1:存儲(chǔ)操作。儀器只被地址觸發(fā),即上位機(jī)只有向儀器發(fā) 0AH,并且奇偶位為 1時(shí),才能得到儀器的響應(yīng)。 4 工控程序設(shè)計(jì) 相關(guān) 知識(shí) 1 煤礦鉆機(jī)性能檢測(cè)設(shè)備的數(shù)據(jù)通信協(xié)議 (1) HC100智能測(cè)控儀 HC100智能測(cè)控儀可以使用 RS23 RS485接口與計(jì)算機(jī)通訊 , 數(shù)據(jù)格式為 1個(gè)起始位 , 8個(gè)數(shù)據(jù)位 , 無奇偶校驗(yàn) , 1個(gè)停止位 , 共 11位 。 設(shè)備的所有數(shù)字變換成 ASCII碼進(jìn)行傳輸:例如:儀表編號(hào) Addr=01, 測(cè)量值 =, 則數(shù)據(jù)千位為 31H、 百位為 32H、 十位為 33H、 小數(shù)點(diǎn)為 2EH, 個(gè)位為 34H, 符號(hào)位 2BH為正 , 2DH為負(fù) 。儀器被本機(jī)地址觸發(fā)后,向上位機(jī)傳回本機(jī)地址,然后等待上位機(jī)發(fā)來的命令。在測(cè)量狀態(tài)收到此命令,將啟動(dòng)存儲(chǔ)操作;在存儲(chǔ)狀態(tài)收到此命令,將退出存儲(chǔ)狀態(tài)。在顯示內(nèi)轉(zhuǎn)速時(shí)收到此命令,將顯示外轉(zhuǎn)速;在顯示外轉(zhuǎn)速時(shí)收到此命令,將顯示內(nèi)轉(zhuǎn)速。每通道 2字節(jié),高位在前。上位機(jī)應(yīng)按上述讀零點(diǎn)的順序依次將 60個(gè)字節(jié)寫回去。注意:寫扭矩參數(shù)不能少于 24字節(jié)。儀器收到命令后準(zhǔn)備接收 8個(gè)通道的量程表。如果用 DCBA表示浮點(diǎn)數(shù), D為高位, A為低位,每個(gè)字母表示一個(gè)字節(jié),那么 DCBA依次為 SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM,其中 S代表符號(hào), 1位, 1表示負(fù), 0表示正, X代表指數(shù), 8位, 0到 255轉(zhuǎn)換為 127到 128, M代表尾數(shù), 23位,注意尾數(shù)總共 24位,最高位等于 1是隱含的。尋址指令為單字節(jié)指令,第 18位為地址,第 9位(校驗(yàn)位)為 “ 1‖(非尋址指令為 “ 0‖)。 (2)異或和校驗(yàn) 異或和校驗(yàn)的過程是,發(fā)送端取出發(fā)送數(shù)據(jù)的第 1個(gè)字節(jié),與后續(xù)每個(gè)字節(jié)依次按位異或,然后將計(jì)算結(jié)果( 1個(gè)字節(jié))作為校驗(yàn)碼發(fā)送給接收端,接收端收到數(shù)據(jù)后,用同樣的方法計(jì)算異或和,并與發(fā)送過來的校驗(yàn)碼進(jìn)行比較,從而檢驗(yàn)發(fā)送的數(shù)據(jù)是否有誤。 5)重復(fù)第 3與第 4步直到 8次移位全部完成。 for (int i = offset。 i offset + count。 //保留一個(gè)字節(jié)位置存儲(chǔ)校驗(yàn)碼 byte sum = (b, 0, 1)。 i offset + count。 //最低有效位 byte[] tmp = new byte[2]。 //―u‖表示該常量是無符號(hào)整型 CrcReg = 1。 //保留兩個(gè)字節(jié)位置存儲(chǔ)校驗(yàn)碼 byte[] crc = CCheck. CRC16 (b, 0, – 2 ,0x8005)。//命令的內(nèi)容 public Parity parity = 。這樣分工的好處是,處于上層的 UI模塊沒有必要知道如何和串口通信、如何創(chuàng)建線程等等復(fù)雜瑣碎的具體操作,而只要知道該發(fā)什么命令,以及如何處理收到的結(jié)果。 public event DataReceivedHandler DataReceived。 //該命令開始時(shí)處于完成狀態(tài) } public void start() { Thread t = new Thread(new ThreadStart(threadFun))。 = 。 //線程同步:在進(jìn)行 set操作時(shí),不準(zhǔn)進(jìn)行 get操作 = cmd。 byte[] bRecv, bSend。 //阻塞方式讀取數(shù)據(jù) 30 工控程序設(shè)計(jì) bRecv = new byte[]。 //等待 3次后數(shù)據(jù)還未到達(dá) (bRecv, 1, 1)。 ) ()。 = new byte[] { 0x04, 0x30, 0x31, 0x52, 0x30, 0x30, 0x05 }。 } public float AsciiToFloat(byte[] b) {
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1