色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>通信技術(shù)>

如何提高串口通信速度

2018年02月01日 16:12 網(wǎng)絡(luò)整理 作者: 用戶評論(0
關(guān)鍵字:串口通信(54516)

  串口通信簡介

  串口是計算機上一種非常通用設(shè)備通信的協(xié)議。大多數(shù)計算機包含兩個基于RS232的串口。串口同時也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口。同時,串口通信協(xié)議也可以用于獲取遠程采集設(shè)備的數(shù)據(jù)。

  串口通信結(jié)構(gòu)

  串口通信是指外設(shè)和計算機間,通過數(shù)據(jù)信號線 、地線、控制線等,按位進行傳輸數(shù)據(jù)的一種通訊方式。這種通信方式使用的數(shù)據(jù)線少,在遠距離通信中可以節(jié)約通信成本,但其傳輸速度比并行傳輸?shù)汀?/p>

  串口是計算機上一種非常通用的設(shè)備通信協(xié)議。大多數(shù)計算機(不包括筆記本電腦)包含兩個基于RS-232的串口。串口同時也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口。同時,串口通信協(xié)議也可以用于獲取遠程采集設(shè)備的數(shù)據(jù)。

  RS-232(ANSI/EIA-232標(biāo)準(zhǔn))是IBM-PC及其兼容機上的串行連接標(biāo)準(zhǔn)。可用于許多用途,比如連接鼠標(biāo)、打印機或者Modem,同時也可以接工業(yè)儀器儀表。用于驅(qū)動和連線的改進,實際應(yīng)用中RS-232的傳輸長度或者速度常常超過標(biāo)準(zhǔn)的值。RS-232只限于PC串口和設(shè)備間點對點的通信。RS-232串口通信最遠距離是50英尺。

  如何提高串口通信速度

  串口通信原理

  串口通信的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且能夠?qū)崿F(xiàn)遠距離通信。比如IEEE488定義并行通行狀態(tài)時,規(guī)定設(shè)備線總長不得超過20米,并且任意兩個設(shè)備間的長度不得超過2米;而對于串口而言,長度可達1200米。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。其他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。對于兩個進行通信的端口,這些參數(shù)必須匹配:

  1、波特率

  這是一個衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個數(shù)。例如300波特表示每秒鐘發(fā)送300個bit。當(dāng)我們提到時鐘周期時,我們就是指波特率例如如果協(xié)議需要4800波特率,那么時鐘是4800Hz。這意味著串口通信在數(shù)據(jù)線上的采樣率為4800Hz。通常電話線的波特率為14400,28800和36600。波特率可以遠遠大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設(shè)備的通信。

  2、數(shù)據(jù)位

  這是衡量通信中實際數(shù)據(jù)位的參數(shù)。當(dāng)計算機發(fā)送一個信息包,實際的數(shù)據(jù)不會是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個數(shù)據(jù)包使用7位數(shù)據(jù)。每個包是指一個字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗位。由于實際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語“包”指任何通信的情況。

  3、停止位

  用于表示單個包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設(shè)備有其自己的時鐘,很可能在通信中兩臺設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時也越慢。

  4、奇偶校驗位

  在串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當(dāng)然沒有校驗位也是可以的。對于偶和奇校驗的情況,串口會設(shè)置校驗位(數(shù)據(jù)位后面的一位),用一個值確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對于偶校驗,校驗位為0,保證邏輯高的位數(shù)是偶數(shù)個。如果是奇校驗,校驗位為1,這樣就有3個邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗。這樣使得接收設(shè)備能夠知道一個位的狀態(tài),有機會判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。

  串口通信的傳輸速率與傳輸距離

  1、波特率

  在串行通信中,用 “ 波特率 ” 來描述數(shù)據(jù)的傳輸速率。所謂波特率,即每秒鐘傳送的二進制位數(shù),其單位為 bps ( bits per second )。它是衡量串行數(shù)據(jù)速度快慢的重要指標(biāo)。有時也用 “ 位周期 ” 來表示傳輸速率,位周期是波特率的倒數(shù)。國際上規(guī)定了一個標(biāo)準(zhǔn)波特率系列: 110 、 300 、 600 、 1200 、 1800 、 2400 、4800 、 9600 、 14.4Kbps 、 19.2Kbps 、 28.8Kbps 、 33.6Kbps 、 56Kbps 。 例如: 9600bps ,指每秒傳送 9600 位,包含字符的數(shù)位和其它必須的數(shù)位,如奇偶校驗位等。 大多數(shù)串行接口電路的接收波特率和發(fā)送波特率可以分別設(shè)置,但接收方的接收波特率必須與發(fā)送方的發(fā)送波特率相同。通信線上所傳輸?shù)淖址麛?shù)據(jù)(代碼)是逐為位傳送的, 1 個字符由若干位組成,因此每秒鐘所傳輸?shù)淖址麛?shù)(字符速率)和波特率是兩種概念。在串行通信中,所說的傳輸速率是指波特率,而不是指字符速率,它們兩者的關(guān)系是:假如在異步串行通信中,傳送一個字符,包括 12 位(其中有一個起始位, 8 個數(shù)據(jù)位, 2 個停止位),其傳輸速率是 1200b/s ,每秒所能傳送的字符數(shù)是 1200/(1+8+1+2)=100 個。

  2、發(fā)送/接收時鐘

  在串行傳輸過程中,二進制數(shù)據(jù)序列是以數(shù)字信號波形的形式出現(xiàn)的,如何對這些數(shù)字波形定時發(fā)送出去或接收進來,以及如何對發(fā)/收雙方之間的數(shù)據(jù)傳輸進行同步控制的問題就引出了發(fā)送/接收時鐘的應(yīng)用。

  在發(fā)送數(shù)據(jù)時,發(fā)送器在發(fā)送時鐘(下降沿)作用下將發(fā)送移位寄存器的數(shù)據(jù)按串行移位輸出;在接收數(shù)據(jù)時,接收器在接收時鐘(上升鹽)作用下對來自通信線上串行數(shù)據(jù),按位串行移入移位寄存器。可見,發(fā)送/接收時鐘是對數(shù)字波形的每一位進行移位操作,因此,從這個意義上來講,發(fā)送/接收時鐘又可叫做移位始終脈沖。另外,從數(shù)據(jù)傳輸過程中,收方進行同步檢測的角度來看,接收時鐘成為收方保證正確接收數(shù)據(jù)的重要工具。為此,接收器采用比波特率更高頻率的時鐘來提高定位采樣的分辨能力和抗干擾能力。

  3、波特率因子

  在波特率指定后,輸入移位寄存器 / 輸出移位寄存器在接收時鐘 / 發(fā)送時鐘控制下,按指定的波特率速度進行移位。一般幾個時鐘脈沖移位一次。要求:接收時鐘/ 發(fā)送時鐘是波特率的 16 、 32 或 64 倍。波特率因子就是發(fā)送/接收 1 個數(shù)據(jù)( 1 個數(shù)據(jù)位)所需要的時鐘脈沖個數(shù),其單位是個/位。如波特率因子為 16 ,則16 個時鐘脈沖移位 1 次。 例:波特率 =9600bps ,波特率因子 =32 ,則接收時鐘和發(fā)送時鐘頻率 =9600 × 32=297200Hz 。

  4、傳輸距離

  串行通信中,數(shù)據(jù)位信號流在信號線上傳輸時,要引起畸變,畸變的大小與以下因素有關(guān):

  波特率 -- 信號線的特征(頻帶范圍)

  傳輸距離 -- 信號的性質(zhì)及大小(電平高低、電流大小) 當(dāng)畸變較大時,接收方出現(xiàn)誤碼。

  在規(guī)定的誤碼率下,當(dāng)波特率、信號線、信號的性質(zhì)及大小一定時,串行通信的傳輸距離就一定。為了加大傳輸距離,必須加MODEM。

  如何提高串口通信速度(舉例說明)

  硬件工程師開發(fā)了一塊單片機板,只要按通信協(xié)議上位機發(fā)數(shù)據(jù)給下位機,下位機立即回數(shù)據(jù),我用串口調(diào)試助手試過了,1分鐘約可以收發(fā)最大6000,可是我用VB的MSCOMM編程,計時,1分鐘約2400次,如何提高速度?要求是3600次以內(nèi)。除出代碼,計算機高速運行?

  你試的數(shù)據(jù)有多大啊?就一次一個字符那肯定快了。

  計算機高速運行,僅僅是消息處理的速度快了。

  速度也是受波特率限制的,你把波特率提高一點不就相對快很多了嗎?

  發(fā)5個字節(jié),收4個字節(jié),串口調(diào)試助手1分鐘最大約6000次,VB的MSCOMM編程2400次,

  是否API會快些?

  字節(jié)到緩沖區(qū),出去串口?直接用底層的API快些?

  大哥,不要玩我呀?只是個EXE,哪有源程序?而且好像很慢????

  字節(jié)到緩沖區(qū),到串口,不通過控件,直接從API走?

  那么波特率9600的話 就是能發(fā)6萬個字符 跑去亂七八糟的時間 如果單片機程序?qū)懙迷贍€,發(fā)3600個字符沒啥問題。

  所以你的問題應(yīng)該出現(xiàn)在串口助手編寫的有點對付不了這種高速發(fā)數(shù)的情況

  1、更改到更高的波特率

  2、 如果用VB的MSCOMM,可以:

  1)不要用查詢方式,而應(yīng)事件方式,使用OnComm事件,并且不要在里面使用界面處理代碼,如不要用類似這樣的代碼:Text1.Text = Text1.Text & Recv_Char

  2)因為每次都收4個字節(jié),所以可以設(shè)置Rthreshold=4,至少收到4個字符才觸發(fā)一次OnComm事件,節(jié)省三次事件調(diào)用時間。

  3)收到數(shù)據(jù)后,立即發(fā)送,利用對方發(fā)送時間內(nèi)做數(shù)據(jù)處理。

  1、應(yīng)該不是波特率的問題。要改波特率,必須和底層一起改。現(xiàn)在的情況是,串口助手可以滿足你的速率要求,而自己寫的程序比較慢。

  2、不要用 Timer 這類方式去查詢串口的接收狀態(tài)。用 OnComm 事件或循環(huán)查詢都可以。注意一下你接收到數(shù)據(jù)后再發(fā)命令是如何銜接的。

  3、對于串口這種低速接口,如果沒有特殊的連續(xù)設(shè)置改變,我認(rèn)為控件和 API 的差別不大。

  再次謝謝myjian,SupermanKing。現(xiàn)在是存在這個需求,目的是找最佳的方案去解決問題。因為我不熟驅(qū)動,所以采用編寫驅(qū)動的方案從時效上來說,可行性不強。

  看來得考慮下方案三:RING3方案,把目標(biāo)進程的ReadFile與WriteFile給HOOK了。。。。。。。

  其實有個簡單的方法,找個虛擬串口的源碼。運行此虛擬串口程序時建1個虛擬串口(如com10),把那個軟件的串口號由com1改為com10,你就可接到數(shù)據(jù)了,然后此虛擬程序再將數(shù)據(jù)轉(zhuǎn)發(fā)到com1去。

  反之則由com1接收,再轉(zhuǎn)發(fā)到com10。就是用虛擬串口程序做個轉(zhuǎn)發(fā),順便就監(jiān)聽了

  有個簡單的想法,HOOK軟的不如HOOK硬的簡單點:

  直接作個串口一拖二的線,其中一個口反接成對聯(lián)線,插到另一個串口上就可以監(jiān)視串口事件了。

  對于3線通訊的串口來說應(yīng)該是很簡單的.

非常好我支持^.^

(1) 25%

不好我反對

(3) 75%

( 發(fā)表人:陳翠 )

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 一道本在线伊人蕉无码 | 亚洲精品无码午夜福利在线观看 | 在线 亚洲 日韩 欧洲视频 | 国产毛片女人高潮叫声 | 亚洲 日韩 欧美 国产专区 | 丝袜美女被啪啪不带套漫画 | 国产精品久久久久久熟妇吹潮软件 | 国产精品免费观看视频播放 | xxx免费观看 | 特级aa 毛片免费观看 | 欧美亚洲日韩国产在线在线 | 性一交一无一伦一精一品 | 99久在线国内在线播放免费观看 | 伦理片飘花免费影院 | 国产产乱码一二三区别免费 | 亚洲AV无码影院在线播放 | 久青草国产观看在线视频 | 牛牛自拍国产免费视频 | 99成人在线 | 天天躁人人躁人人躁狂躁 | 精品国产乱码久久久久久夜深人妻 | 午夜理伦片免费 | 夜色女人香 | 午夜福利体验试看120秒 | 又黄又湿免费高清视频 | 69精品人妻一区二区三区蜜桃 | 网址在线观看你懂我意思吧免费的 | 国产精品美女WWW爽爽爽视频 | 欧美成人免费一区二区三区不卡 | 伊人狠狠丁香婷婷综合尤物 | 亚州笫一色惰网站 | 精品国产九九 | 亚洲AV无码一区二区三区牛牛 | 国内精品乱码卡一卡2卡三卡新区 | 无毒成人社区 | 99 久久99久久精品免观看 | 色宅男看片午夜大片免费看 | 一二三四在线视频社区 | 18禁国产精品久久久久久麻豆 | 色橹橹欧美在线观看视频高清 | 伊人网站在线 |