From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



序列埠通訊入門



主要軟體: Driver Software>>NI-Serial
主要軟體版本: 1.7
主要軟體修正版本: N/A
次要軟體: N/A
硬體: Serial

問題:
如何學習序列埠通訊?

解答:
本文介紹序列埠通信的基本概念。

1,常用術語和概念
對於序列埠通信的常用術語和概念請參見KnowledgeBase 1M9E1L6Q: Serial Communications General Concepts

2,確認硬體操作的回路測試
有三種方式確認序列埠的操作:LabVIEW,超級終端和LabWindows/CVI。這三種方式進行回路測試是把序列埠的發送和接受引腳短接。第一步描述短接引腳的過程。LabVIEW的處理寫在下面,而超級終端和LabWindows/CVI的過程在本文後面的鏈結裏。對於LabVIEW建議使用如下步驟:
a,連接一根電纜到序列埠。最常用的RS-232電纜是9針或者25針(DB-9或者DB-25)。在電纜端把2、3引腳短接。這會把電腦發送資料的線連接到接收資料的線。一旦短接,BD-9的上一排變成【1 2=3 4 5】。
對於RS-485埠,電壓是差分的。因此,你必須短接TXD+和RXD+、TXD-和RXD-(對於DB-9電纜,連接pin4到pin8和pin5到pin9;對於模組化介面,連接pin2到pin6和pin3到pin7;對於Combicon接頭,連接pin1到pin5和pin2到pin4。)確保你的軟體配置為4線模式。
注意:參考附錄A“Windows用戶的序列埠軟硬體手冊”(鏈結見下),獲得不同連接器的更多資訊。
b,對於超級終端或者LabWindows/CVI,請參考文章的末尾。
c,對於LabVIEW,打開名為“Serial Communication.vi”的例副程式。對於LabVIEW不同版本,你可以在不同的位置找到這個例副程式:
• LabVIEW 6.1,Help->Find Examples->Hardware Input and Output->Serial->Serial Communication VI.
• LabVIEW 6.0,Help->Examples->Search Examples->I/O Interfaces Examples->Serial Communication Examples->Serial Communication VI.
• LabVIEW 5.1,Help->Search Examples->I/O Interfaces Examples->Serial Communication Examples->Serial Communication VI.
• LabVIEW 5.0,Help->Search Examples->I/O Interfaces Examples->Serial Communication Examples->Serial Communication VI.
• 如果你使用LabVIEW 4.0或者更低的版本,請查找Developer Zone中的例子,Loopback Test for Serial Port。
現在,使用例子中的vi,把字串寫入“Write String”的文本框中,然後在Read String文本框中讀回這些字元。在你運行VI之前,確保你選擇了正確地COM埠或者資源名稱。
d,如果工作正常,字串被讀回,表明序列埠的硬體工作正常。許多序列埠通訊的問題發生在讀寫調用的定時或者序列埠的配置上。

3,常見的問題
許多問題是軟體問題,而不是硬體問題。使用例副程式作為查找錯誤起點,使用LabVIEW帶的例副程式(在Help->Search Examples中或者使用本章後面提供鏈結的例子程式資料庫)。
a,埠參考:在LabVIEW中,埠從0開始編號。因此LabVIEW中埠0就是PC上的COM1。
• PC:0=COM1,1=COM2,等等。
• Mac:0=Modem,1=Printer,等等。
• Sun:0=ttya,1=ttyb,等等。

b,程式中定時,掛起:許多次對埠的讀操作中序列埠Read VI導致停止運行並且等待或者掛起。這常常發生在一個讀操作並且指定讀取一定數量的位元組。序列埠Read VI讀取制定數量的位元組,如果在序列埠接收buffer中沒有足夠的字元,它會等待到序列埠收到更多的位元組。如果沒有更多的位元組寫到buffer中完成讀取操作,程式就會不確定的掛起和等待。這可以通過使用Serial Read with Timeout VI(位於Help->Search Examples->Serial Communication)消除。另一種方法是使用Bytes At Serial Port VI檢查埠,知道buffer中還有多少位元組。把結果連接到read的輸入,作為讀取的位元組數,這樣可以保證讀操作完成。請看LabVIEW的序列埠通信例子作為一個很好的學習序列埠的起點。

c,程式中的定時,不完全傳輸:另一個常見問題是讀操作完成,但是實際上沒有完全收到預期的、完整的資訊字串。這也許會在你開始讀但是寫操作還沒完成時發生。這種情況可以使用一個順序結構或者使用資料流程的依賴性解決。資料流程的依賴可以通過在初始化寫後連線到寫操作(通常是error cluster)實現。

d,儀器終止字元:當核對總和設備通信時,序列埠通信非常方便,因為序列埠能夠完全按程式中制定的輸出。這意味著你必須知道和編寫程式指定碼序,包括停止字元,這樣才能保證儀器正常工作。通常出現的問題是沒有使用儀器所規定的停止字元,或者在指令字串中寫了多餘的空格或者其他字元。在LabVIEW中最新的和設備通信的標準是虛擬儀器軟體架構(VISA)。VISA是控制VXI、GPIB、RS-232和其他類型儀器的統一介面庫。如果你有序列埠I/O通信的問題,VISA可以幫助你消除結束字元的錯誤,同時能使你的代碼在將來具有可重用性和設備可互換性。

4,虛擬儀器軟體架構(VISA)
VISA是在所有LabVIEW平臺下一個控制VXI、GPIB、RS-232和其他類型儀器的統一介面庫。VISA是VXIPlug&Play聯盟制定一個標準,聯盟包括超過35家業界最大的儀器公司。VISA標準統一了工業界軟體,使之具有可解釋和可重用性,而不管時間和設備I/O的變化。NI-VISA驅動可以從網站上下載(參見文章後面的鏈結)。如果對VISA有問題,可以看後面VISA支持的網頁。

5,列印報告和錯誤-37
Windows的LabVIEW 5.1及其以上版本包括報告生成的vis,使用戶坑一向印表機發送文本。使用報告生成的vi,Help->Search Examples->Advanced->Report Generation。對於使用序列埠通信列印或者更早版本LabVIEW,請參見後面的鏈結。

如果印表機連接到並列埠,例如LPT1(或者LPT2,等等),你能夠使用Serial Port Write.vi。對於更多的資訊,請參見LabVIEW文檔的Serial Port VIs那一章。

如果印表機是網路印表機,你不能使用serial Port Write VI;你必須使用其他方式列印,比如:

a,使用編寫子Vi的方式列印一個字串,在子VI的VI Setup中選擇“Print VI When VI Completes Execution" 。

b,使用System Exec VI調用Notepad.exe可以編程的方式列印一個字串。VI的輸入是Notepad.exe /p c:\junk.txt,junk.txt是一個文字檔案,放置需要列印文本。

c,對於Error-37,請根據後面的鏈結檢查LabVIEW.ini文件。

6,LabVIEW中的Modem通信
LabVIEW中的Modem通信被NI系統聯盟中的成員公司充分支持。

7,開發者交互論壇
NI的開發者交互論壇是一個強大的論壇,提供全文搜索、email訂閱和其他服務。它的優勢在於可以通過在論壇流覽、搜索和發文提問和許多科學家和工程師共用知識和資訊。

8,COM埠資料的高級故障解決
對於精確分析序列埠通信bits以對比編程差別(比如LabVIEW和超級終端)的高級用戶,能夠使用一個程式叫做Portmon。Portmon是Sysinternals提供的一個軟體,它的網站提供你windos 9x和WindowsNI/2k環境下的高級工具、技術資訊和原始碼。

相關連結:
Product Manuals: Serial Hardware and Software for Windows User Manual
Developer Zone Example: Loopback Test for Serial Port
Developer Exchange Discussion Forums
Support: Serial Products Support
Support: Verifying a Serial Port, HyperTerminal Test
Support: Verifying a Serial Port, LabWindows/CVI Test
Drivers and Updates
KnowledgeBase 1M9E1L6Q: Serial Communications General Concepts
KnowledgeBase 0ISAJ838: I Receive Error -37 When Writing to the Parallel Port (LPT1) in LabVIEW
Support: Instrument Drivers (IVI, VISA) Support
Sysinternals Website

附加檔案:





報告日期: 07/01/2005
最後更新: 05/07/2008
文件偏號: 1M9D8H6Q