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