最近在研究串列埠通訊,通過自己這幾天的研究,頗有些心得,當然這個時候還是想到和大家一起分享我的實現過程。首先我要說明的是我是用
vb.net
實現的。如果是有關
vb.net
的語法問題不懂得這裡我不做解釋。
計算機與外設或計算機之間的通訊通常有兩種方式:並行通訊和序列通訊。並行通訊指資料的各位同時傳送。並行方式傳輸資料速度快,但占用的通訊線多,傳輸資料的可靠性隨距離的增加而下降,只適用於近距離的資料傳送。序列通訊是指在單根資料線上將資料一位一位地依次傳送。傳送過程中,每傳送完乙個資料,再傳送第二個,依此類推。接受資料時,每次從單根資料線上一位一位地依次接受,再把它們拼成乙個完整的資料。在遠距離資料通訊中,一般採用序列通訊方式,它具有占用通訊線少、成本低等優點。
usb是英文 universal serialbus 的縮寫,翻譯成中文的含義是「通用序列匯流排」。 從技術上看,usb是一種序列匯流排系統,它的最大特性是支援即插即用和熱插拔功能。在windows2000的作業系統中,任何一款標準的usb裝置可以在任何時間、任何狀態下與計算機連線,並且能夠馬上開始工作。
usb誕生於2023年,是由康柏、ibm、intel和microsoft共同推出的,旨在統一外設介面,如印表機、外接modem、掃瞄器、滑鼠等的介面,以便於使用者進行便捷的安裝和使用,逐步取代以往的串列埠、並口和ps/2介面。
大家看到這裡可能會覺得
usb介面完勝原始串列埠了。但是我們為什麼還要學習串列埠程式設計呢。
usb介面和原始串列埠(三個eia標準)的對比:
目前在it領域,usb介面可謂春風得意。人們在市場上可以看到,每一款計算機主機板都帶有不少於2個usb介面,usb印表機、usb數據機、usb滑鼠、usb音箱、usb儲存器等產品越來越多,usb介面已經佔據了序列通訊技術的壟斷地位。
但是,在工業領域,使用usb介面的產品則甚為少見。在工業領域,人們更要求產品的可靠性和穩定性,目前,eia標準下的序列通訊技術完全可以滿足人們對工業裝置傳輸的各種效能要求,而且,這些產品**非常低廉。相比之下,usb**較高,並且其即插即用的功能在工業通訊中沒有優勢。因為工業裝置一般連線好以後很少進行重複插拔,usb特性的優越性不能很好地被體現出來,也就得不到工業界的普遍認可。因此,在工業領域,
eia標準依然佔據統治地位。
序列介面是一種可以將接受來自cpu的並行資料字元轉換為連續的序列資料流傳送出去,同時可將接受的序列資料流轉換為並行的資料字元供給cpu的器件。一般完成這種功能的電路,我們稱為序列介面電路。
串列埠通訊是指外設和計算機間,通過資料訊號線、地線、控制線等,按位進行傳輸資料的一種通訊方式。這種通訊方式使用的資料線少,在遠距離通訊中可以節約通訊成本,但其傳輸速度比並行傳輸低。
串列埠是計算機上一種非常通用的裝置通訊協議。大多數計算機(不包括膝上型電腦)包含兩個基於rs-232的串列埠(
com1
和com2
)。串列埠同時也是儀器儀表裝置通用的通訊協議;很多gpib相容的裝置也帶有rs-232口。同時,串列埠通訊協議也可以用於獲取遠端採集裝置的資料。
串列埠通訊(serialcommunications)的概念非常簡單,串列埠按位(bit)傳送和接收位元組(第一段也有涉及)。儘管比按位元組(byte)的並行通訊慢,但是串列埠可以在使用一根線傳送資料的同時用另一根線接收資料。它很簡單並且能夠實現遠距離通訊。比如ieee488定義並行通行狀態時,規定裝置線總長不得超過20公尺,並且任意兩個裝置間的長度不得超過2公尺;而對於串列埠而言,長度可達1200公尺。典型地,串列埠用於ascii碼字元的傳輸。通訊使用3根線完成,分別是地線、傳送、接收。由於串列埠通訊是非同步的,埠能夠在一根線上傳送資料同時在另一根線上接收資料。其他線用於握手,但不是必須的。串列埠通訊最重要的引數是波特率、資料位、停止位和奇偶校驗(這幾個重要的引數在我的文章中沒有)。對於兩個進行通訊的埠,這些引數
必須匹配,否則無法通訊。
如果你正在被串列埠通訊而苦惱多日,不妨回來我們一起回味一下這篇文章。
串列埠通訊簡單例項
前幾天製作了乙個基於win32控制台的串列埠通訊接收端的程式。今天利用mfc製作了乙個類似超級終端的應用程式。包含了傳送端和接收端。介面如下圖 關鍵 如下 button connect響應函式,開啟串列埠,配置串列埠引數,設定事件掩碼,建立接收端執行緒。void cmfc commdlg onbut...
Python系列課程 人工智慧篇簡單入門
1 基礎篇 基於python的機器學習 戳我,立即學習 現在大熱 為未來電腦科學發展方向的機器學習了解多少呢?下面推薦的這個內容比較適合小白,如果數學 模型理論基礎不紮實也沒關係,可以掌握python程式語言基本可以輕鬆學習 例如利用python程式語言實現線性分類器 支援向量機 樸素貝葉斯等經典機...
簡單了解程序間通訊
from multiprocessing import process,queue import os,time def write q print 啟動寫子程序 s os.getpid for chr in a b c d q.put chr time.sleep 1 print 結束寫子程序 s...