#串口通信超时处理_【学院推荐】划重点!LabVIEW中串口参数需注意的几点
串口可以說是我們最容易見到,也最容易接觸到的一種總線,臺式機上一般都有二個,而現在很多下位機、儀器等很多都還是使用串口通信的。
1,串口擴展的問題
先說一下串口的擴展問題,一般的臺式機或工控機上都至少有二個串口,一般都是夠用的,但是現在市場上已經很難找到帶串口的筆記本了,而有時候在外出調試時需要在筆記本中使用到串口的,這時一般是使用USB-RS232的轉接線,價格從十幾到一百多都有,很多朋友反應在使用價格低的轉接線時會出現亂七八糟的問題,而貴一點的線就很少聽說有其它問題的,所以大家在使用便宜的USB-RS232轉接線時要特別注意線的質量,遇到一些奇怪的問題時先考慮換一根好一點的線。PCI-RS232擴展卡也同理,便宜的卡也容易出問題,盡量買好一點的,以免因小失大。PCI-RS232一般至少能擴展2個串口,有些BT一點的可以擴展到8-16個,一堆線和接頭。轉接線和擴展卡一般是要裝驅動的。
2,串口功能的確認
在使用串口之前,最好先確認一下串口是否正常,特別是使用轉換接或擴展卡的。檢查的方法很簡單,就是將串口的2、3腳短接起來,腳是發送數據,2腳接收數據,就是這個串口自發自收。電腦上的串口軟件一般是用串口調試助手,很出名的,也好用。
3,串口線的檢查
檢查好串口后,一般也要注意一下使用的串口線,標準的串口線是9根線都是用上的,但有一些是只使用了三根線的:2、3、5。第3個腳管是發送,第2個管腳接收,另一個5是地線,這里叫它簡化的串口線,簡化的串口線能用上的地方,標準的串口線也肯定能用上,因為標準線的9根線已經包括了簡化串口線中的3根線,但標準串口線能用上的地方,簡化串口線就不一定能用上,所以在使用串口線之間一定要確定好串口線的類型,一般買的串口線都是標準線,但自制的串口線因為應用場合不同就要先確定一下。串口線還有一個地方需要注意一下的,就是2、3腳的接法,標準接法中是2、3腳交叉的,即這邊的2接另一邊的3,這邊的3接另一邊的2,扭了一下,所以叫交叉線,因為正常使用時,這邊第二腳是發送數據,另一邊第三腳是接收數據,所以要將這二個管腳連接起來,這樣才能正常使用。但是有些情況下,2、3是直連的,即這邊的第2腳連接另一邊的第2腳,第3腳連接第3腳,這種叫直連線,這種線一般是用于延長串口的,比如需要將工控機的串口接頭引到機柜表面上時,就使用這種線,這樣機柜表面的串口線的定義還是跟電腦接出來的一樣,外面的那一根串口線再使用交叉線。從電腦主板上將串口引到主機后面板上的線就是這樣的直連線。購買串口線的時候一般也會問你買直連的還是交叉的,要區別對待。串口線還有一個要稍微注意一下的就是DB頭,因為電腦上接出來的一般是公頭(針),要跟電腦接的話要母頭(孔),一般儀器的串口也是公頭,所以二邊都是母頭的串口線比較常見。串口的接頭一般是DB9的,也有DB25的,但比較少用,有些比較BT的儀器廠家居然用RJ11(水晶頭那種)作為串口頭,讓人不爽總之,使用串口前一定要先確定好硬件沒問題,不然很浪費時間的。
4,串口參數設置
在LabVIEW中使用串口時,有幾個參數比較重要,需要先說明一下的。一個是串口初始化這個節點的“終止符”和“禁用終止符?”這二個輸入端,這二個輸入端是相互作用的,“終止符”默認值為10,它的十六進制是“0x0A”,這是一個ASCII碼,是一個換行符,可以從LabVIEW中的字符串的不同顯示形式看出來,如下圖:
圖2.串口消息終止非符
左邊是字符串的正常顯示,中間是十六進制顯示,右邊是“代碼顯示”,這三個字符串的值都是一樣的。終止符是10,表示在接收數據時,遇到ASCII碼為10的字符(即換行符)時就停止接收數據,后面會有例子進行說明。而“禁用終止符?”的默認值是FALSE,即啟用終止符,啟用終止符會有什么效果呢?終止符的意思就是當程序接收到這個字符時,就認為已經到了所有數據的未端了,從而停止接收,不管后面還有沒有數據。終止符是10,表示在接收數據時,遇到ASCII碼為10的字符(即換行符)時就停止接收數據。?
可以做一個很簡單的試驗,先短接串口2、3腳,然后將終止符設置為“0x33”,0x33是字符“3”的ASCII碼,然后發送字符串“123456”,可以看到接收回來的數據中只有“12”,即“3”被認為是字符串的未端了,它后面的數據就不再接收了。很多朋友就是因為!這里設置錯誤,導致接收數據時有時候只收到一半就沒有了,特別是在連續接收數據時,但又不是每次都只能收到一半,有時候也能接收齊全的,就是因為發送的數據中可能包含了終止符而使串口認為到了最后一個字符了。一般是將這個終止符禁用掉,即將“禁用終止符?”這一端輸入為TRUE即可。另外還有一個比較重要的設置,就是VISA READ的“讀取字節數”這個輸入,由于在串口通信中,如果指定讀取100個串口緩沖區的字節數,如果當前緩沖區的數據量不足100個時,程序會一直停在VISA READ這個節點上,如果在超時的時間(默認是10秒)內還沒有湊足/100個數據的話,程序就會報“Time out”的錯誤,如果超時時間設置得太長,有可能導致程序很長時間停止在VISA READ這個節點上。解決的辦法是使用“Bytes at Port”這個串口的屬性節點,在VISA>>Serial>>advance下,也可以在VISA資源線上右鍵>>創建>>屬性節點>>串口設置>>Bytes at Port,如下圖:
這個屬性節點讀取當前串口緩沖區有字節數,然后將它的輸出連接到VISA READ的“讀取字節數”這個輸入端上即可,這樣當前緩沖區中有多少個字節就讀回多少個,不會有任何等待。
5,在LabVIEW中使用串口
目前串口的應用一般有二種類型的(以我接觸到的來分類,不嚴格),一種是儀器控制類型的,一般是上位機發送一個指令,然后下位機作出響應,返回數據給上位機,上位機再讀取出來,完成一次通信,即一問一答;另一類是被動接收形的,即下位機會一直發送數據上來。這二種類型的串口通信在處理上會不太一樣。
圖4.DC-DC Buck 電路
圖5. Irms 值的參考是在交流紋波比較小和磁芯損耗忽略的狀況下
磁芯材料和相應的參數
掃碼進入LabVIEW專屬技術交流群
獲取更多學習資料
? 相關課程推薦:
《龍哥手把手教你學LabVIEW視覺設計》https://mp.weixin.qq.com/s/IVvrzHu9rwoEfBA7IKXbAg
總結
以上是生活随笔為你收集整理的#串口通信超时处理_【学院推荐】划重点!LabVIEW中串口参数需注意的几点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lisp函数大全 微盘_LISP函数(分
- 下一篇: virsh 关机_KVM virsh常用