91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)串口通訊中數(shù)據(jù)發(fā)送的有關(guān)問題分析

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-04 11:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

異步串口(UART)通訊是嵌入式設(shè)備中最常見的通訊方式之一。本文主要針對(duì)預(yù)裝Windows CE操作系統(tǒng)的英創(chuàng)主板,分析用戶層程序在使用UART進(jìn)行發(fā)送時(shí)的幾個(gè)有關(guān)問題,供客戶在設(shè)計(jì)應(yīng)用程序時(shí)參考。

問題1:數(shù)據(jù)是否發(fā)送出去了?

WriteFile函數(shù)是發(fā)送串口數(shù)據(jù)的基本API,具體函數(shù)形式及參數(shù)定義如下:

BOOLWriteFile(

HANDLE hFile,//CreateFile返回函數(shù)Handle

LPCVOID lpBuffer,//裝載發(fā)送數(shù)據(jù)的Buffer指針

DWORD nNumberOfBytesToWrite,//待發(fā)送數(shù)據(jù)的字節(jié)長度

LPDWORD lpNumberOfBytesWritten,//返回的實(shí)際發(fā)送的字節(jié)數(shù)

LPOVERLAPPED lpOverlapped// = NULL,CE未使用該參數(shù)

);

WriteFile的返回值為TRUE并不代表發(fā)送Buffer中的數(shù)據(jù)已全部發(fā)送出去了,需要檢查返回的實(shí)際字節(jié)長度lpNumberOfBytesWritten。所以推薦的調(diào)用方法為

// 發(fā)送緩沖區(qū)pTxBuff, 發(fā)送長度dwLen

DWORD dwNumberOfBytesWritten = 0;

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

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

{

//發(fā)送緩沖區(qū)中的數(shù)據(jù)已成功送入U(xiǎn)ART硬件的發(fā)送端口,大多數(shù)情況數(shù)據(jù)已從

//物理端口發(fā)送出去,但此時(shí)可能還有若干字節(jié)還在UART的硬件TX FIFO中,等

//待硬件控制器順序發(fā)送。

//… 發(fā)送成功 …

}

else

{

//發(fā)送出錯(cuò)處理。。。。

}

問題2:WriteFile函數(shù)的阻塞問題

CE串口驅(qū)動(dòng)的執(zhí)行數(shù)據(jù)發(fā)送時(shí),為了保持代碼的高效率,沒有在驅(qū)動(dòng)程序中層另外分配Buffer,把應(yīng)用層需發(fā)送的數(shù)據(jù)先Copy到內(nèi)部再發(fā)送,而是直接利用用戶層的pTxBuf。因此原則上說,當(dāng)數(shù)據(jù)沒有發(fā)送完前,WriteFile函數(shù)是不會(huì)返回,處于阻塞掛起狀態(tài)的。進(jìn)一步,可能存在某種原因,數(shù)據(jù)始終沒有發(fā)送完畢,則WriteFile將永遠(yuǎn)阻塞而不會(huì)返回。不少應(yīng)用程序并不希望這樣的永遠(yuǎn)阻塞,而是希望WriteFile能在一定時(shí)間內(nèi)返回,即使出錯(cuò),也讓應(yīng)用程序有機(jī)會(huì)進(jìn)行出錯(cuò)處理。CE驅(qū)動(dòng)為此專門設(shè)置了超時(shí)機(jī)制,其數(shù)據(jù)結(jié)構(gòu)如下:

typedefstruct_COMMTIMEOUTS {

DWORD ReadIntervalTimeout; //與接收有關(guān),本文不討論

DWORD ReadTotalTimeoutMultiplier; //與接收有關(guān),本文不討論

DWORD ReadTotalTimeoutConstant; //與接收有關(guān),本文不討論

DWORD WriteTotalTimeoutMultiplier; //發(fā)送超時(shí)倍數(shù)因子

DWORD WriteTotalTimeoutConstant; //發(fā)送超時(shí)固定常數(shù)值

} COMMTIMEOUTS,*LPCOMMTIMEOUTS;

實(shí)際在驅(qū)動(dòng)中,發(fā)送超時(shí)的計(jì)算及使用方法如下:

DWORD dwTimeout =

CommTimeouts.WriteTotalTimeoutMultiplier*dwLen +

CommTimeouts.WriteTotalTimeoutConstant;

if( !dwTimeout )

dwTimeout = INFINITE;

//等待來自發(fā)送中斷線程的發(fā)送結(jié)束事件

ULONG WaitReturn = WaitForSingleObject(hTransmitEvent, dwTimeout);

上面的代碼中dwTimeout的單位為ms,在第一次打開串口驅(qū)動(dòng)”COM#”時(shí),超時(shí)數(shù)據(jù)結(jié)構(gòu)中的WriteTotalTimeoutMultiplier和WriteTotalTimeoutConstant均為0,所以就有發(fā)送超時(shí)無窮的問題。為了讓dwTimeout為有限值,需要設(shè)置超時(shí)參數(shù)如下:

COMMTIMEOUTS CommTimeouts; //定義局部變量

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

//假設(shè)應(yīng)用程序設(shè)置的串口波特率為baud

CommTimeouts. WriteTotalTimeoutConstant = baud / BR9600 + 1;

CommTimeouts. WriteTotalTimeoutMultiplier =

CommTimeouts.WriteTotalTimeoutConstant * 2;

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

上述代碼大致設(shè)置了一個(gè)2倍發(fā)送時(shí)間長度的超時(shí)時(shí)間,其中選取BR9600為單位時(shí)間,是因?yàn)?600bps波特率基本對(duì)應(yīng)一個(gè)字節(jié)的發(fā)送時(shí)間為1ms。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3702

    瀏覽量

    94076
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6107

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    單片機(jī)串口通訊串行同步通信與串行異步通信

    的進(jìn)行傳送。串行通信的數(shù)據(jù)是逐位傳輸?shù)模?b class='flag-5'>發(fā)送方發(fā)送的每一位都具有固定的時(shí)間間隔,這就要求接收方也要按照發(fā)送方同樣的時(shí)間間隔來接收每一位。不僅如此,接收方還必須能夠確定一個(gè)
    發(fā)表于 01-15 08:06

    卡塔爾通訊信息技術(shù)部與Ooredoo電信公司一行來訪達(dá)實(shí)智能開展培訓(xùn)

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

    每次用串口調(diào)試助手發(fā)送01之后,就會(huì)都到6個(gè)數(shù)據(jù),為什么?

    單片機(jī)通訊發(fā)送01點(diǎn)亮一個(gè)燈,再次發(fā)送熄滅。程序不需要單片機(jī)發(fā)送數(shù)據(jù)給電腦,可是每次用
    發(fā)表于 12-15 06:52

    龍芯中科成功舉辦2025信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)教融合交流會(huì)

    11月30日,在教育部教育管理信息中心、山東省電化教育館的支持和指導(dǎo)下,龍芯中科聯(lián)合浪潮集團(tuán)、濟(jì)南幼兒師范高等??茖W(xué)校(以下簡稱“濟(jì)南幼高?!保?,成功舉辦信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)教融合交流會(huì),并同步舉行信息技術(shù)應(yīng)用創(chuàng)新實(shí)踐基地啟用儀式
    的頭像 發(fā)表于 12-08 14:53 ?791次閱讀

    龍芯中科助力2025教育信息技術(shù)應(yīng)用創(chuàng)新大賽成功舉辦

    2025年11月13日-15日,由中國教育技術(shù)協(xié)會(huì)主辦、浙江大學(xué)與中國教育技術(shù)協(xié)會(huì)網(wǎng)絡(luò)安全專業(yè)委員會(huì)聯(lián)合承辦,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)、浙江高校信
    的頭像 發(fā)表于 11-21 16:23 ?799次閱讀

    誠邁科技信創(chuàng)電腦助力2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿收官

    11月15日,由中國教育技術(shù)協(xié)會(huì)主辦、浙江大學(xué)與中國教育技術(shù)協(xié)會(huì)網(wǎng)絡(luò)安全專業(yè)委員會(huì)聯(lián)合承辦,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)、浙江高校信
    的頭像 發(fā)表于 11-17 17:58 ?688次閱讀
    誠邁科技信<b class='flag-5'>創(chuàng)</b>電腦助力2025第二屆教育<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新大賽圓滿收官

    使用nrf54L15的NORDIC藍(lán)牙芯片,通過串口發(fā)送一幀數(shù)據(jù)包時(shí),會(huì)出現(xiàn)分包發(fā)送分析

    使用nrf54L15的NORDIC藍(lán)牙芯片,通過串口發(fā)送一幀數(shù)據(jù)包時(shí),會(huì)出現(xiàn)分包發(fā)送分析,是什么原因呢
    發(fā)表于 11-17 15:52

    寶馬南京信息技術(shù)有限公司開業(yè)

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

    【道生物聯(lián)TKB-623評(píng)估板試用】TKB-623評(píng)估板雙機(jī)通訊測(cè)試_程序開發(fā)

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

    易華錄入選國家級(jí)信息技術(shù)應(yīng)用創(chuàng)新典型解決方案

    全國1040家單位的1324個(gè)參選方案成功突圍,入選國家級(jí)信息技術(shù)應(yīng)用創(chuàng)新典型解決方案。這一榮譽(yù)標(biāo)志著易華錄在存儲(chǔ)領(lǐng)域的技術(shù)實(shí)力與創(chuàng)新成果獲得國家權(quán)威認(rèn)可,為信息技術(shù)應(yīng)用創(chuàng)新樹立了嶄
    的頭像 發(fā)表于 08-07 15:35 ?1629次閱讀

    佛瑞亞如何通過信息技術(shù)推動(dòng)業(yè)務(wù)增長

    在數(shù)字化、信息化的浪潮下,信息技術(shù)已經(jīng)不僅是后臺(tái)工具,更成為驅(qū)動(dòng)企業(yè)發(fā)展的關(guān)鍵力量。本期Women Inspiring Mobility,我們采訪了佛瑞亞中國區(qū)信息技術(shù)總監(jiān)馬瑛,了解她和團(tuán)隊(duì)如何將
    的頭像 發(fā)表于 07-29 14:00 ?916次閱讀

    飛騰主板為信創(chuàng)產(chǎn)業(yè)發(fā)展提高硬實(shí)力

    信息技術(shù)飛速發(fā)展的當(dāng)下,信創(chuàng)產(chǎn)業(yè)已成為我國實(shí)現(xiàn)科技自立自強(qiáng)、保障國家信息安全的關(guān)鍵領(lǐng)域。信創(chuàng),即信息技術(shù)應(yīng)用創(chuàng)新,其核心目標(biāo)是實(shí)現(xiàn)
    的頭像 發(fā)表于 07-22 18:20 ?719次閱讀

    DEKRA德凱成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)認(rèn)證機(jī)構(gòu)

    近日,DEKRA德凱成功獲得沙特標(biāo)準(zhǔn)、計(jì)量和質(zhì)量組織(SASO)認(rèn)可,正式成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)(Technical Regulation for Communications
    的頭像 發(fā)表于 07-15 14:27 ?927次閱讀

    京能信息蒞臨軟國際數(shù)字電力科創(chuàng)中心調(diào)研

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

    科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術(shù)應(yīng)用創(chuàng)新”,是國家推動(dòng)IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術(shù)層面的創(chuàng)新,更承載著保障國家網(wǎng)絡(luò)安全、推動(dòng)產(chǎn)業(yè)升級(jí)和實(shí)現(xiàn)數(shù)字主權(quán)的重任。簡單來
    的頭像 發(fā)表于 06-13 10:06 ?8430次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新”戰(zhàn)略