国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    3702

    瀏覽量

    94057
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6107

    瀏覽量

    37078
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    單片機串口通訊串行同步通信與串行異步通信

    的進行傳送。串行通信的數據是逐位傳輸的,發送發送的每一位都具有固定的時間間隔,這就要求接收方也要按照發送方同樣的時間間隔來接收每一位。不僅如此,接收方還必須能夠確定一個
    發表于 01-15 08:06

    卡塔爾通訊信息技術部與Ooredoo電信公司一行來訪達實智能開展培訓

    2026年1月7日至8日,卡塔爾通訊信息技術部(MCIT)以及卡塔爾Ooredoo電信公司一行來訪達實智能開展培訓。達實智能董事長劉磅、副總裁易鴻、海灣區域經理海樂姆(阿拉伯籍)等陪同接待。
    的頭像 發表于 01-09 16:03 ?727次閱讀

    每次用串口調試助手發送01之后,就會都到6個數據,為什么?

    單片機通訊發送01點亮一個燈,再次發送熄滅。程序不需要單片機發送數據給電腦,可是每次用
    發表于 12-15 06:52

    龍芯中科成功舉辦2025信息技術應用創新產教融合交流會

    11月30日,在教育部教育管理信息中心、山東省電化教育館的支持和指導下,龍芯中科聯合浪潮集團、濟南幼兒師范高等專科學校(以下簡稱“濟南幼高專”),成功舉辦信息技術應用創新產教融合交流會,并同步舉行信息技術應用創新實踐基地啟用儀式
    的頭像 發表于 12-08 14:53 ?782次閱讀

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

    2025年11月13日-15日,由中國教育技術協會主辦、浙江大學與中國教育技術協會網絡安全專業委員會聯合承辦,中國電子工業標準化技術協會信息技術應用創新工作委員會、浙江高校信
    的頭像 發表于 11-21 16:23 ?791次閱讀

    使用nrf54L15的NORDIC藍牙芯片,通過串口發送一幀數據包時,會出現分包發送分析

    使用nrf54L15的NORDIC藍牙芯片,通過串口發送一幀數據包時,會出現分包發送分析,是什么原因呢
    發表于 11-17 15:52

    寶馬南京信息技術有限公司開業

    今日,寶馬(南京)信息技術有限公司在南京正式“掛牌運行”。這家華晨寶馬全資子公司由領悅數字信息技術有限公司南京分公司“迭代”而來,代表著一次里程碑式的“進化”。這次升級不僅加速了寶馬在華數字化轉型進程,更通過深化本土創新,為“未來智慧出行”的發展譜寫了核心“代碼”。
    的頭像 發表于 10-29 15:17 ?625次閱讀

    【道生物聯TKB-623評估板試用】TKB-623評估板雙機通訊測試_程序開發

    \\\\r\\\\n: 設置完成,開啟串口發送AT指令,就可以看到類似途中AT_OK的返回了。 能看到AT_OK,說明和電腦的通訊正常了。 三、配對測試 在兩個串口工具
    發表于 10-18 23:54

    易華錄入選國家級信息技術應用創新典型解決方案

    全國1040家單位的1324個參選方案成功突圍,入選國家級信息技術應用創新典型解決方案。這一榮譽標志著易華錄在存儲領域的技術實力與創新成果獲得國家權威認可,為信息技術應用創新樹立了嶄
    的頭像 發表于 08-07 15:35 ?1620次閱讀

    佛瑞亞如何通過信息技術推動業務增長

    在數字化、信息化的浪潮下,信息技術已經不僅是后臺工具,更成為驅動企業發展的關鍵力量。本期Women Inspiring Mobility,我們采訪了佛瑞亞中國區信息技術總監馬瑛,了解她和團隊如何將
    的頭像 發表于 07-29 14:00 ?907次閱讀

    飛騰主板為信產業發展提高硬實力

    信息技術飛速發展的當下,信產業已成為我國實現科技自立自強、保障國家信息安全的關鍵領域。信,即信息技術應用創新,其核心目標是實現
    的頭像 發表于 07-22 18:20 ?711次閱讀

    DEKRA德凱成為沙特通信和信息技術設備技術法規認證機構

    近日,DEKRA德凱成功獲得沙特標準、計量和質量組織(SASO)認可,正式成為沙特通信和信息技術設備技術法規(Technical Regulation for Communications
    的頭像 發表于 07-15 14:27 ?919次閱讀

    京能信息蒞臨軟國際數字電力科中心調研

    近日,北京京能信息技術有限公司(以下簡稱“京能信息”)黨總支書記、董事長胡耀宇,黨總支副書記、總經理梁錦華一行赴能源谷數字電力科中心調研交流,與軟國際開展戰略合作洽談。
    的頭像 發表于 06-26 17:46 ?1578次閱讀

    科普|信是什么?一文讀懂“信息技術應用創新”戰略

    什么是信?信,即“信息技術應用創新”,是國家推動IT系統自主可控、安全可控的重要戰略工程。它不僅是技術層面的創新,更承載著保障國家網絡安全、推動產業升級和實現數字主權的重任。簡單來
    的頭像 發表于 06-13 10:06 ?8292次閱讀
    科普|信<b class='flag-5'>創</b>是什么?一文讀懂“<b class='flag-5'>信息技術</b>應用創新”戰略

    Labview串口通訊,使用SerialPort

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