LabVIEW串口通信浮點小數(shù)轉(zhuǎn)四個字節(jié)和數(shù)據(jù)打包_第1頁
LabVIEW串口通信浮點小數(shù)轉(zhuǎn)四個字節(jié)和數(shù)據(jù)打包_第2頁
LabVIEW串口通信浮點小數(shù)轉(zhuǎn)四個字節(jié)和數(shù)據(jù)打包_第3頁
LabVIEW串口通信浮點小數(shù)轉(zhuǎn)四個字節(jié)和數(shù)據(jù)打包_第4頁
LabVIEW串口通信浮點小數(shù)轉(zhuǎn)四個字節(jié)和數(shù)據(jù)打包_第5頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

LabVIEW串口通信浮點小數(shù)轉(zhuǎn)四個字節(jié)和數(shù)據(jù)打包LabVIEW編程的虛擬儀器,作為PC與單片機的上位機,十分直觀方便。LabVIEW中控制串口使用VISA十分方便。串口通信都是發(fā)送的一個一個字節(jié),字節(jié)中包含需要的信息,有些需要多個字節(jié)的組合才能傳遞一個完整的信息。一般的數(shù)據(jù)通信都是通過數(shù)據(jù)包來傳遞信息的,現(xiàn)在我們要用LabVIEW向單片機發(fā)送單精度浮點小數(shù)?,F(xiàn)在遇到一些問題:串口發(fā)送的都是字節(jié),怎樣把浮點小數(shù)轉(zhuǎn)換成字節(jié)?LabVIEW中VISA串口的寫入傳送的字符串,如果直接發(fā)字符串,單片機得到是字符的ASCII碼,單片機無法解析成需要的浮點小數(shù)。如何把字符串轉(zhuǎn)換成相應(yīng)的字節(jié)?數(shù)據(jù)一直向串口傳輸,為便于單片機解析出想要的數(shù)據(jù),如何進行打包?問題1:浮點小數(shù)在計算機中的存儲遵循ieee754協(xié)議,實際上一般情況下,各種儀器發(fā)送的數(shù)據(jù)都是按照ieee754協(xié)議轉(zhuǎn)換成的字節(jié)數(shù)據(jù)包。我們傳遞浮點小數(shù),可以按照ieee754協(xié)議轉(zhuǎn)換成字節(jié)數(shù)組。例如單精度浮點小數(shù)8.25轉(zhuǎn)換成字節(jié)數(shù)組用十六進制表示為41040000,為四個字節(jié)。那么如何通過LabVIEW實現(xiàn)呢,我這兒有個程序利用強制轉(zhuǎn)換來實現(xiàn),不知是哪位大神寫的,反正是十分方便、有效,確實很NB。因為關(guān)于強制轉(zhuǎn)換,LabVIEW幫助和網(wǎng)上根本查不到資料,尤其是其上端的連線--類型,根本不知道連接什么量。程序框圖主要利用強制轉(zhuǎn)換和數(shù)據(jù)拆分來實現(xiàn)ieee754協(xié)議轉(zhuǎn)換為四個字符串。II單精度數(shù)字SGL(單精度浮點型)類型,經(jīng)過強制轉(zhuǎn)換,變成I32(II單精度數(shù)字SGL(單精度浮點型)類型,經(jīng)過強制轉(zhuǎn)換,變成I32(32位長整形)類型,再經(jīng)過兩次拆分,得到四個U8(無符號字節(jié),8位整型)類型的數(shù)據(jù),再經(jīng)過數(shù)值至十六進制字符串轉(zhuǎn)換,字符寬度為2,得到十六進制整型字符串,再將4個字符連接起來。8.25轉(zhuǎn)換得到41040000。前面板如下:雙口孚有串問題2:問題1解決了,把單精度浮點小數(shù)轉(zhuǎn)換為四個字節(jié),并連接起來。但是當我們將它們發(fā)送到串口,在串口調(diào)試助手上用十六進制顯示,發(fā)現(xiàn)原來我們發(fā)送的是它們的ASCII碼。我們原意是一個浮點數(shù),發(fā)送4個字節(jié),但是卻發(fā)送了8個字節(jié)。因為計算機把這8個字符當成字符來發(fā),自然是8個字節(jié),而不是4個字節(jié)。41040000。我在CSDN.NET上看到一篇文章,講得是如何實現(xiàn)上述過程。正常顯示的字符串,強制轉(zhuǎn)換為十六進制顯示。

1HexDisplay£tring41040000¥■1寸口Ac沒有看錯,就是一串亂碼。但是我們要的就是十六進制顯示,這是我們得到的就是四個字節(jié),發(fā)送到串口的就是41040000,串口調(diào)試助手十六進制顯示的就是41040000。問題3:我們通過解決問題1,得到字符串,可以通過連接字符串的方式,數(shù)據(jù)包一幀的幀頭和幀尾連接起來。幀頭為AC96,幀尾為0D,連接起來后它們是正常的字符串,還需要轉(zhuǎn)換到十六進制顯示的格式,方便串口傳輸??傮w流程如下:1-li^vDicphlaiJCtrinHBL25AC^6410400000D程序框圖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論