在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術串口通訊中數據發送的有關問題分析

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-02-04 11:27 ? 次閱讀

異步串口(UART)通訊是嵌入式設備中最常見的通訊方式之一。本文主要針對預裝Windows CE操作系統的英創主板,分析用戶層程序在使用UART進行發送時的幾個有關問題,供客戶在設計應用程序時參考。

問題1:數據是否發送出去了?

WriteFile函數是發送串口數據的基本API,具體函數形式及參數定義如下:

BOOLWriteFile(

HANDLE hFile,//CreateFile返回函數Handle

LPCVOID lpBuffer,//裝載發送數據的Buffer指針

DWORD nNumberOfBytesToWrite,//待發送數據的字節長度

LPDWORD lpNumberOfBytesWritten,//返回的實際發送的字節數

LPOVERLAPPED lpOverlapped// = NULL,CE未使用該參數

);

WriteFile的返回值為TRUE并不代表發送Buffer中的數據已全部發送出去了,需要檢查返回的實際字節長度lpNumberOfBytesWritten。所以推薦的調用方法為

// 發送緩沖區pTxBuff, 發送長度dwLen

DWORD dwNumberOfBytesWritten = 0;

BOOL bRet = WrietFile(hFile, pTxBuf, dwLen, &dwNumberOfBytesWritten, NULL);

if(bRet && (dwLen == dwNumberOfBytesWritten))

{

//發送緩沖區中的數據已成功送入UART硬件的發送端口,大多數情況數據已從

//物理端口發送出去,但此時可能還有若干字節還在UART的硬件TX FIFO中,等

//待硬件控制器順序發送。

//… 發送成功 …

}

else

{

//發送出錯處理。。。。

}

問題2:WriteFile函數的阻塞問題

CE串口驅動的執行數據發送時,為了保持代碼的高效率,沒有在驅動程序中層另外分配Buffer,把應用層需發送的數據先Copy到內部再發送,而是直接利用用戶層的pTxBuf。因此原則上說,當數據沒有發送完前,WriteFile函數是不會返回,處于阻塞掛起狀態的。進一步,可能存在某種原因,數據始終沒有發送完畢,則WriteFile將永遠阻塞而不會返回。不少應用程序并不希望這樣的永遠阻塞,而是希望WriteFile能在一定時間內返回,即使出錯,也讓應用程序有機會進行出錯處理。CE驅動為此專門設置了超時機制,其數據結構如下:

typedefstruct_COMMTIMEOUTS {

DWORD ReadIntervalTimeout; //與接收有關,本文不討論

DWORD ReadTotalTimeoutMultiplier; //與接收有關,本文不討論

DWORD ReadTotalTimeoutConstant; //與接收有關,本文不討論

DWORD WriteTotalTimeoutMultiplier; //發送超時倍數因子

DWORD WriteTotalTimeoutConstant; //發送超時固定常數值

} COMMTIMEOUTS,*LPCOMMTIMEOUTS;

實際在驅動中,發送超時的計算及使用方法如下:

DWORD dwTimeout =

CommTimeouts.WriteTotalTimeoutMultiplier*dwLen +

CommTimeouts.WriteTotalTimeoutConstant;

if( !dwTimeout )

dwTimeout = INFINITE;

//等待來自發送中斷線程的發送結束事件

ULONG WaitReturn = WaitForSingleObject(hTransmitEvent, dwTimeout);

上面的代碼中dwTimeout的單位為ms,在第一次打開串口驅動”COM#”時,超時數據結構中的WriteTotalTimeoutMultiplier和WriteTotalTimeoutConstant均為0,所以就有發送超時無窮的問題。為了讓dwTimeout為有限值,需要設置超時參數如下:

COMMTIMEOUTS CommTimeouts; //定義局部變量

GetCommTimeouts(hFile, &CommTimeouts); //讀取串口的超時參數

//假設應用程序設置的串口波特率為baud

CommTimeouts. WriteTotalTimeoutConstant = baud / BR9600 + 1;

CommTimeouts. WriteTotalTimeoutMultiplier =

CommTimeouts.WriteTotalTimeoutConstant * 2;

SetCommTimeouts(hFile, &CommTimeouts); //重新設置串口超時參數

上述代碼大致設置了一個2倍發送時間長度的超時時間,其中選取BR9600為單位時間,是因為9600bps波特率基本對應一個字節的發送時間為1ms。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • WINDOWS
    +關注

    關注

    4

    文章

    3608

    瀏覽量

    90980
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6097

    瀏覽量

    36147
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Labview串口通訊,使用SerialPort

    發送與接收功能,在循環里面做兩個事件,一個是發送按鈕事件,用于調用接口發送數據,另外一個是接收數據事件,用于接收回調
    發表于 03-08 18:38

    串口通訊隔離器的定義與作用

      在現代工業自動化、通信系統和嵌入式設備串口通訊(Serial Communication)是一種常見的數據傳輸方式。由于其簡單、可靠且成本低廉,
    的頭像 發表于 02-06 16:01 ?1022次閱讀

    龍芯中科榮獲2024年度信息技術應用創新工作委員會卓越貢獻成員單位

    近日,中國電子工業標準化技術協會信息技術應用創新工作委員會(以下簡稱“信工委會”)在北京召開2024年度工作總結座談會暨信“大比武”總結大會。中國工程院院士、信
    的頭像 發表于 01-23 10:50 ?583次閱讀

    芯盛智能榮獲2024年信息技術應用創新工作委員會卓越貢獻成員單位

    日前,中國電子工業標準化技術協會信息技術應用創新工作委員會(以下簡稱 “信工委會”)2024 年度總結座談會于北京隆重舉行。此次會議對在信工作
    的頭像 發表于 01-20 09:56 ?539次閱讀

    串口在物聯網的應用

    物聯網(IoT)是指通過互聯網將各種設備連接起來,實現信息交換和通信的技術。這些設備包括傳感器、執行器、智能設備等,它們可以收集數據發送命令或執行任務。
    的頭像 發表于 12-27 09:54 ?1053次閱讀

    飛騰助力首屆教育信息技術應用創新大賽圓滿落幕

    近日,由中國教育技術協會主辦,教育部教育管理信息中心教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信工委會支持,北京航空航天
    的頭像 發表于 12-24 09:57 ?467次閱讀

    有方科技參編的信息技術團體標準發布

    能力評價》團體標準由中國計算機行業協會正式發布實施,明確了信息技術產品供應鏈成熟度共性指標企業背景、技術掌控、供給能力評價一級指標框架以及評價指標項描述,為制定元器件、軟件等基礎評估標準,部件、整機等產品的供應鏈成熟度評價指標
    的頭像 發表于 12-23 10:44 ?540次閱讀

    龍芯中科助力2024首屆教育信息技術應用創新大賽成功舉辦

    近日,2024首屆教育信息技術應用創新大賽在北京航空航天大學成功舉辦。本次大賽由中國教育技術協會主辦,教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信
    的頭像 發表于 12-19 17:02 ?526次閱讀

    建材信息榮獲“2024年度軟件和信息技術服務競爭力百強企業”

    10月24-26日,由中國電子信息行業聯合會主辦的第二十六屆中國國際軟件博覽會(簡稱軟博會)在天津召開。在期間所舉辦的2024年軟件和信息技術服務業成果發布會上,建材信息獲評“202
    的頭像 發表于 10-30 16:10 ?448次閱讀
    <b class='flag-5'>中</b>建材<b class='flag-5'>信息</b>榮獲“2024年度軟件和<b class='flag-5'>信息技術</b>服務競爭力百強企業”

    中科達榮獲2024年軟件和信息技術服務優秀企業

    及前百家企業”名單。中科達憑借非凡的技術實力與持續的創新能力,成功入選“2024年度軟件和信息技術服務競爭力百強企業”以及“2024年軟件和信息技術服務優秀企業”。
    的頭像 發表于 10-30 11:44 ?860次閱讀

    加速鯤鵬落地!拓維信息遷移工具榮獲鯤鵬原生開發技術認證

    認證。圖/拓維·數據庫適配中間件取得鯤鵬原生開發N認證在數字化時代的大潮,信戰略作為國家推動信息技術應用創新、保障信息安全與自主可控的關
    的頭像 發表于 09-10 08:03 ?728次閱讀
    加速鯤鵬落地!拓維<b class='flag-5'>信息</b>信<b class='flag-5'>創</b>遷移工具榮獲鯤鵬原生開發<b class='flag-5'>技術</b>認證

    軟國際信服務助力大連信產業發展

    為進一步激發大連本地信產業生態的活力與潛力,搭建一個高效、開放的交流平臺。由大連軟件行業協會攜手大連市信息技術應用創新綜合服務中心主辦,軟國際協辦的,2024年大連市信息技術應用創
    的頭像 發表于 08-27 16:49 ?1215次閱讀

    LABVIEW串口通訊

    labview實現串口通訊
    發表于 08-19 14:37 ?8次下載

    ESP32串口接收和發送數據,會有延遲是怎么回事?

    測試環境:串口波特率600bps,串口接收256字節數據。 在調試串口時,發現發送多于120字節時,串口
    發表于 06-26 08:07

    BIG WALNUT大核桃全面響應國家“信”號召,傾力“智”造國產芯片+國產加密安全系統通訊產品

    信息化高速發展的今天,信息技術的自主可控和信息安全已經成為國家發展的重要基石。國家信戰略的提出,旨在推動國產信息產業的崛起,實現
    的頭像 發表于 06-18 17:42 ?754次閱讀
    主站蜘蛛池模板: 久久美女精品国产精品亚洲 | 日本三级带日本三级带黄首页 | 五月婷婷丁香色 | 黄色三级视频在线观看 | 国产亚洲小视频 | 情久久| 濑亚美莉vs黑人欧美视频 | 日韩欧美亚洲综合一区二区 | 乡村乱人伦短小说 | 可以直接看的黄址 | 九九re6精品视频在线观看 | 国产特级 | 77788色淫免费网站视频 | 久久久精品久久久久久久久久久 | 我想看一级播放片一级的 | 午夜刺激爽爽视频免费观看 | 69精品在线观看 | 日韩精品卡4卡5卡6卡7卡 | 亚洲欧美圣爱天天综合 | 日韩免费观看的一级毛片 | 天天艹在线 | 人人做人人爽人人爱秋霞影视 | 手机在线看片福利盒子 | 午夜视| 正在播放久久 | 欧美一级高清免费a | 午夜在线观看cao | 欧美xxxx色视频在线观看免费 | 业余性自由色xxxx视频 | 天天摸日日干 | 亚洲综合精品香蕉久久网97 | 播放个毛片看看 | 免费一级特黄视频 | 色老头综合| 色橹橹 | 最新亚洲一区二区三区四区 | 午夜无码国产理论在线 | 天天干天天爽天天操 | 亚洲精品久久久久久久蜜桃 | 丁香花的视频免费观看 | 亚洲va久久久噜噜噜久久天堂 |