SerialPort控件的詳細(xì)用法-_第1頁
SerialPort控件的詳細(xì)用法-_第2頁
SerialPort控件的詳細(xì)用法-_第3頁
SerialPort控件的詳細(xì)用法-_第4頁
SerialPort控件的詳細(xì)用法-_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、serialport控件的詳細(xì)用法1、簡介隨著USB的流行,串口通訊已經(jīng)應(yīng)用到日常生活的很多方面了,USB是一種高速的串口通訊協(xié)議,USB接口非常復(fù)雜,通常被用在需要傳輸大量數(shù)據(jù)數(shù)據(jù)的地方,如U盤、相機(jī)、打印機(jī)等。除了USB這種較為奢侈的串口外,在工控和嵌入式行業(yè),大量被使用的是另一種古老的串口協(xié)議,RS-232串口。RS-232是一種非常簡潔的低速串口通訊接口,它可以同時(shí)進(jìn)行數(shù)據(jù)接收和發(fā)送的工作。2、.NET 2.0對(duì)串口的支持通過創(chuàng)建一個(gè)新的SerialPort 對(duì)象,我們就可以在.NET程序中控制串口通訊的全過程。3、使用SerialPort 設(shè)置串口屬性進(jìn)行串口通訊時(shí),需要設(shè)置一些相關(guān)

2、參數(shù),可以通過設(shè)置SerialPort 類的屬性來進(jìn)行。串口屬性主要包括.PortName 串口名稱,COM1, COM2等。.BaudRate 波特率,也就是串口通訊的速度,進(jìn)行串口通訊的雙方其波特率需要相同,如果用PC連接其他非PC系統(tǒng),一般地,波特率由非PC系統(tǒng)決定。Parity 奇偶校驗(yàn)??梢赃x取枚舉Parity中的值.DataBits 數(shù)據(jù)位.StopBits 停止位,可以選取枚舉StopBits中的值.Handshake 握手方式,也就是數(shù)據(jù)流控制方式,可以選取枚舉Handshake中的值4、打開與關(guān)閉串口在創(chuàng)建一個(gè)SerialPort 對(duì)象,設(shè)置串口屬性后,可以通過Open(方法

3、打開串口。數(shù)據(jù)讀寫完成后,可以通過Close(方法關(guān)閉串口。根據(jù)經(jīng)驗(yàn),對(duì)于有些系統(tǒng),在打開串口后,還需要將RtsEnable設(shè)置為True,這樣才能讀寫數(shù)據(jù),否則不能正常讀寫數(shù)據(jù)。5、讀寫行數(shù)據(jù)雙方通訊時(shí),一般都需要定義通訊協(xié)議,即使最簡單的通過串口發(fā)送文本聊天的程序。通常是在當(dāng)一方按下回車時(shí),將其所數(shù)據(jù)的文本連同換行符發(fā)給另一方。在這個(gè)通訊事例中,協(xié)議楨是通過換行符界定的,每一楨數(shù)據(jù)都被換行符隔開,這樣就很容易識(shí)別出通訊雙發(fā)發(fā)送的信息。在以上的例子中,可以用WriteLine(來發(fā)送數(shù)據(jù),用ReadLine(來讀取數(shù)據(jù)。WriteLine 發(fā)送完數(shù)據(jù)后,會(huì)將換行符作為數(shù)據(jù)也發(fā)送給對(duì)方。Rea

4、dLine(讀取數(shù)據(jù)時(shí),直至遇到一個(gè)換行符,然后返回一個(gè)字符串代表一行信息。換行符可以通過SerialPort 的屬性NewLine來設(shè)置。一般地,Windows將CrLn作為換行符,而在Linux下,換行符則只用一個(gè)Ln表示。ReadLine(方法是阻塞的,直至遇到一個(gè)換行符后返回。在讀取數(shù)據(jù)時(shí),如果一直沒有遇到換行符,那么在等待ReadTimeout時(shí)間后,拋出一個(gè)TimeoutException。默認(rèn)情況下, ReadTimeout為InfiniteTimeout。這樣,ReadLine一直處于阻塞狀態(tài),直至有新一行數(shù)據(jù)到達(dá)。WriteLine(方法也是阻塞的,如果另一方不能及時(shí)接收數(shù)據(jù)

5、,就會(huì)引起TimeoutException 異常。由于ReadLine(和WriteLine(方法都是阻塞式的,在程序使用SerialPort 進(jìn)行串口通訊時(shí),一般應(yīng)該把讀寫操作交由其他線程處理,避免因?yàn)樽枞鴮?dǎo)致程序不響應(yīng)。6、讀寫字節(jié)或字符數(shù)據(jù)對(duì)于字節(jié)或字符數(shù)據(jù),用Read(方法來讀數(shù)據(jù),該方法需要一個(gè)字節(jié)或字符數(shù)組作為參數(shù)來保存讀取的數(shù)據(jù),結(jié)果返回實(shí)際讀取的字節(jié)或字符數(shù)。寫數(shù)據(jù)使用Write(方法,該方法可以將字節(jié)數(shù)組、字符數(shù)據(jù)或字符串發(fā)送給另一方。如果通訊雙方交換的數(shù)據(jù)位字節(jié)流數(shù)據(jù),要構(gòu)建一個(gè)使用的串口通訊程序,那么雙方應(yīng)該定義數(shù)據(jù)楨格式。通常數(shù)據(jù)楨由楨頭和楨尾來界定。發(fā)送數(shù)據(jù)比較簡單

6、,只需要將構(gòu)造好的數(shù)據(jù)用Write(方法發(fā)送出去即可。接收數(shù)據(jù)則比較復(fù)雜,通訊是以字節(jié)流的形式到達(dá)的,通過調(diào)用一次Read(方法并不能確保所讀取的數(shù)據(jù)就是完整一楨。因此需要將每次讀取的數(shù)據(jù)整合在一起,對(duì)整合后的數(shù)據(jù)進(jìn)行分析,按照定義的楨格式,通過楨頭和楨尾,將楨信息從字節(jié)流中抽取出來,這樣才能獲取有意義的信息。除了利用Read(方法來讀數(shù)據(jù),還可以使用ReadExisting(方法來讀取數(shù)據(jù)。該方法讀取當(dāng)前所能讀到的數(shù)據(jù),以字符串的形式返回。7、事件SerialPort 提供了DataReceived事件。當(dāng)有數(shù)據(jù)進(jìn)入時(shí),該事件被觸發(fā)。該事件的觸發(fā)由操作系統(tǒng)決定,當(dāng)有數(shù)據(jù)到達(dá)時(shí),該事件在輔助線程中被觸發(fā)。輔助線程的優(yōu)先級(jí)比較低,因此并不能確保每個(gè)字節(jié)的數(shù)據(jù)到達(dá)時(shí),該事件都被觸發(fā)。8、其他用跳線使串口的第2、3針連接,可以在本地計(jì)算機(jī)上實(shí)現(xiàn)串口通信,所以,通過串口的第2、3針的連接可以對(duì)程序進(jìn)行檢測(cè)。 .BytesToRead 該屬性返回能夠讀到的字節(jié)數(shù)。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論