LabviewRS232串口通信数据格式问题解析
1.最近在開發一款Labview串口通信軟件,功能是實現PC與sony攝像機云臺的數據通信。主要是通過PC發送16進制指令控制云臺的轉動,方便做一些測試。
遇到的問題:一開始沒注意格式問題,只是純粹的將16進制數據放入VISA WRITE函數的寫入緩沖區。但是忽略了一個問題,就是Labview軟件中的程序無論是接收還是發送數據都是字符串的格式,所以遇到其他格式通信的時候需要做相關轉換操作。
在論壇找了很多資料,都沒找到合適的解決方案。最終找到這個,“在VISA Write的寫入緩沖區字符串常量上右鍵>>十六進制顯示”。(之前在一個WORD文檔里面找到的也是這個方案,只是資料說的不夠直白,當時沒反應過來:
?
?“如果這些數據是靜態的,也就說在程序設計階段要傳輸的數據就已經確定了,在這種情況下,首先設置VISA Write的write buffer的顯示屬性為Hex Display,然后直接輸入要發送的16進制字符串就可以了。串口設備的控制命令通常是由一個或多個16進制字符組成的,當我們需要對其進行控制時經常會采用這種方法發送控制命令。”
)
上面這段文字中的顯示屬性其實就是寫入緩沖區的字符串常量右鍵之后的“16進制顯示”選項,只不過因為我用的是中文版軟件,一時沒反應過來。
2.使用LabVIEW發送數據
還有一個問題是使用LabVIEW發送數據的問題
①如果下位機接收的是字符串數據類型的話,直接用VISA寫入對應的字符串就行了,現在的儀器一般都是接收字符串的,所以可以直接使用VISA發送而不需要轉換。
②如果下位機接收的是數值型數據的話,就需要轉換一下,其中數值型又是十進制和十六進制二種用得比較多,這二種數據間相互轉換一下就行了,其實是一樣的。
由于在LabVIEW中字符串直接有十六進制的顯示方式,所以發送十六進制的數據比較方便,比如要發送十六進制數值類型的“0xAF”,那么在VISA Write的寫入緩沖區字符串常量上右鍵>>十六進制顯示,直接輸入“AF”即可,那么下位機接收到的就是正確的數據(十六進制數值類型)了。
總結
以上是生活随笔為你收集整理的LabviewRS232串口通信数据格式问题解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: labview与下位机通信的格式问题处理
- 下一篇: labview如何进行串口通讯(转)