pc機常用的通訊方式有三種:序列、並行和網路介面。
目前大多數巨集碁筆記本保留有序列口,一般在筆記本的左邊,那個很多洞洞那個口就是串列埠,(也稱com口,序列介面)。
好啦,下面講講串列埠程式開發。記住在windows上面的程式設計一切都是基於windows作業系統的。
之前在寫串列埠採集資料的上位機時也頗為串列埠和usb裝置這個東西搞不清。現在把自己後來的經驗分享下,希望對後來的人有幫助,同時希望前輩們能夠多多指正。
vc(vs)裡面的串列埠控制項mscomm和串列埠api,這些都是針對串列埠的開發,都是針對串列埠的操作。windows這個作業系統本身為序列口、並行口和網路介面做好了很好的支援。也就是這些是傳統的cpu與外設的通訊介面,而windows是建立在這個晶元之上,給這個晶元靈魂,管理這個晶元的所有資源的,這樣說你就可以理解為什麼在這三個就沒有開發驅動的概念,而是直接使用api或者別人提供的控制項就能很好地進行資料採集了吧。
而usb,是有乙個usb介面晶元,從處理器出來的訊號先到達這個usb介面晶元,然後經過這個晶元把他轉成差分訊號,這樣就達到了訊號抗干擾能力提高,傳輸速率提高。
usb介面晶元主要分為3類:
1、需要外接處理器的usb介面晶元。
2、整合了微處理器的usb介面晶元
3、usb橋接晶元。
前兩種都是需要自己開發驅動程式的,與之對應的usb裝置都有韌體(即固化的軟體,燒錄好的rom)。
在這裡我講講第三種,第三類不用自己開發驅動程式,利用虛擬串列埠的驅動程式,這個usb對客戶端(即你的應用程式)就是串列埠的形式呈現了,這樣你就可以使用串列埠控制項或win 串列埠相關的api進行usb介面的開發了。也就是這個再物理鏈路上是usb介面的形式——查分訊號傳輸,具有高的傳輸速率、強的抗干擾能力1等usb通訊應有的優點,在功能層面來看則以串列埠的形式存在,windows對串列埠的開發又進行了很好的支援。但因為這個最終還是要經過乙個虛擬串列埠的程式,所以你可以聯想到它跟第一和第二種的傳輸速率還是有區別的,會慢很多。
usb跟處理器之間可以是並行和序列連線。這樣你就可以知道其實pc(處理器)就是序列、並行和網路介面。
而後來為了實現差分訊號,為了實現高速率,就要下很多功夫了,最後實現了usb技術。
那麼你會納悶了,平時的usb轉串列埠線又是什麼情況呢?這個就是你的裝置是串列埠的裝置,而你的電腦沒有串列埠,或串列埠的針腳不對時,你才用得上那個,在此時你可以猜到那個轉串列埠線用的usb介面晶元是第三種usb橋接晶元了吧。但如果你的裝置是usb裝置,那不好意思,很多時候你是用不上那條線了,你就要基於驅動程式的api和windows的api進行你的客戶端(應用程式)開發了,這樣你就可以實現通過你的windows應用程式和你的usb裝置互動~~參照:
在windows下開發,一切都是基於windows,所以有一種說法,給微軟打工的人群是很龐大的(直接或間接地,微軟養活了很多人,很多人都跟著它走~~)
如果想走windows那一套,就多逛逛windows的技術支援**:
關於串列埠和usb轉串列埠
硬體上考慮,串列埠還是要隔離,否則引發的風險是產品不能承受的,現在市場上的max232,質量沒有什麼保證,有過一批勉強用了一年多,還是有些出了問題。usb轉出來的串列埠一樣也要隔離,而且需要注意的是usb是很容易受到干擾的,市場上還是沒有usb端短,串列埠線長的轉換器件,需要可靠性的客戶還是推薦使用...
USB學習 虛擬串列埠
今天看到usb虛擬串列埠的例子,有一段這樣的語句 usb的配置通過三個函式完成 usb interrupts config set usbclock 和usb init 第乙個函式用於設定 usb 喚醒中斷和 usb 低優先順序資料處理中斷,set usbclock 函式用於 配置 usb 時鐘,也...
usb轉串列埠的串列埠名自動查詢和匹配
因為從事的測試領域涉及到很多嵌入式的產品,所以經常需要用串列埠去控制裝置,目前最多的是usb轉串列埠的方式,但是串列埠名隨著插入的usb口會發生變化,每次用時需要到裝置管理器中查詢,給程式化的測試工作帶來諸多不便。過去我們設計測試service的時候,這些串列埠資訊是通過配置檔案的形式儲存的。近日做...