女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

完善資料讓更多小伙伴認(rèn)識你,還能領(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è)備中最常見的通訊方式之一。本文主要針對預(yù)裝Windows CE操作系統(tǒng)的英創(chuàng)主板,分析用戶層程序在使用UART進(jìn)行發(fā)送時的幾個有關(guān)問題,供客戶在設(shè)計應(yīng)用程序時參考。

問題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,//返回的實際發(fā)送的字節(jié)數(shù)

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

);

WriteFile的返回值為TRUE并不代表發(fā)送Buffer中的數(shù)據(jù)已全部發(fā)送出去了,需要檢查返回的實際字節(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ù)已成功送入UART硬件的發(fā)送端口,大多數(shù)情況數(shù)據(jù)已從

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

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

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

}

else

{

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

}

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

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

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

} COMMTIMEOUTS,*LPCOMMTIMEOUTS;

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

DWORD dwTimeout =

CommTimeouts.WriteTotalTimeoutMultiplier*dwLen +

CommTimeouts.WriteTotalTimeoutConstant;

if( !dwTimeout )

dwTimeout = INFINITE;

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

ULONG WaitReturn = WaitForSingleObject(hTransmitEvent, dwTimeout);

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

COMMTIMEOUTS CommTimeouts; //定義局部變量

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

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

CommTimeouts. WriteTotalTimeoutConstant = baud / BR9600 + 1;

CommTimeouts. WriteTotalTimeoutMultiplier =

CommTimeouts.WriteTotalTimeoutConstant * 2;

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

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

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

    關(guān)注

    4

    文章

    3603

    瀏覽量

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

    關(guān)注

    7

    文章

    6096

    瀏覽量

    36130
收藏 人收藏

    評論

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

    Labview串口通訊,使用SerialPort

    發(fā)送與接收功能,在循環(huán)里面做兩個事件,一個是發(fā)送按鈕事件,用于調(diào)用接口發(fā)送數(shù)據(jù),另外一個是接收數(shù)據(jù)事件,用于接收回調(diào)
    發(fā)表于 03-08 18:38

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

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

    龍芯中科榮獲2024年度信息技術(shù)應(yīng)用創(chuàng)新工作委員會卓越貢獻(xiàn)成員單位

    近日,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信息技術(shù)應(yīng)用創(chuàng)新工作委員會(以下簡稱“信創(chuàng)工委會”)在北京召開2024年度工作總結(jié)座談會暨信創(chuàng)“大比武”總結(jié)大會。中國工程院院士、信
    的頭像 發(fā)表于 01-23 10:50 ?532次閱讀

    芯盛智能榮獲2024年信息技術(shù)應(yīng)用創(chuàng)新工作委員會卓越貢獻(xiàn)成員單位

    日前,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信息技術(shù)應(yīng)用創(chuàng)新工作委員會(以下簡稱 “信創(chuàng)工委會”)2024 年度總結(jié)座談會于北京隆重舉行。此次會議對在信創(chuàng)工作
    的頭像 發(fā)表于 01-20 09:56 ?497次閱讀

    串口在物聯(lián)網(wǎng)的應(yīng)用

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

    飛騰助力首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿落幕

    近日,由中國教育技術(shù)協(xié)會主辦,教育部教育管理信息中心教育信創(chuàng)實驗室、公安部第三研究所、中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信創(chuàng)工委會支持,北京航空航天
    的頭像 發(fā)表于 12-24 09:57 ?439次閱讀

    有方科技參編的信息技術(shù)團(tuán)體標(biāo)準(zhǔn)發(fā)布

    能力評價》團(tuán)體標(biāo)準(zhǔn)由中國計算機(jī)行業(yè)協(xié)會正式發(fā)布實施,明確了信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度共性指標(biāo)企業(yè)背景、技術(shù)掌控、供給能力評價一級指標(biāo)框架以及評價指標(biāo)項描述,為制定元器件、軟件等基礎(chǔ)評估標(biāo)準(zhǔn),部件、整機(jī)等產(chǎn)品的供應(yīng)鏈成熟度評價指標(biāo)
    的頭像 發(fā)表于 12-23 10:44 ?511次閱讀

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

    近日,2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽在北京航空航天大學(xué)成功舉辦。本次大賽由中國教育技術(shù)協(xié)會主辦,教育信創(chuàng)實驗室、公安部第三研究所、中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信
    的頭像 發(fā)表于 12-19 17:02 ?497次閱讀

    建材信息榮獲“2024年度軟件和信息技術(shù)服務(wù)競爭力百強(qiáng)企業(yè)”

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

    中科創(chuàng)達(dá)榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)

    及前百家企業(yè)”名單。中科創(chuàng)達(dá)憑借非凡的技術(shù)實力與持續(xù)的創(chuàng)新能力,成功入選“2024年度軟件和信息技術(shù)服務(wù)競爭力百強(qiáng)企業(yè)”以及“2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)”。
    的頭像 發(fā)表于 10-30 11:44 ?825次閱讀

    加速鯤鵬落地!拓維信息創(chuàng)遷移工具榮獲鯤鵬原生開發(fā)技術(shù)認(rèn)證

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

    軟國際信創(chuàng)服務(wù)助力大連信創(chuàng)產(chǎn)業(yè)發(fā)展

    為進(jìn)一步激發(fā)大連本地信創(chuàng)產(chǎn)業(yè)生態(tài)的活力與潛力,搭建一個高效、開放的交流平臺。由大連軟件行業(yè)協(xié)會攜手大連市信息技術(shù)應(yīng)用創(chuàng)新綜合服務(wù)中心主辦,軟國際協(xié)辦的,2024年大連市信息技術(shù)應(yīng)用創(chuàng)
    的頭像 發(fā)表于 08-27 16:49 ?1190次閱讀

    LABVIEW串口通訊

    labview實現(xiàn)串口通訊
    發(fā)表于 08-19 14:37 ?8次下載

    ESP32串口接收和發(fā)送數(shù)據(jù),會有延遲是怎么回事?

    測試環(huán)境:串口波特率600bps,串口接收256字節(jié)數(shù)據(jù)。 在調(diào)試串口時,發(fā)現(xiàn)發(fā)送多于120字節(jié)時,串口
    發(fā)表于 06-26 08:07

    BIG WALNUT大核桃全面響應(yīng)國家“信創(chuàng)”號召,傾力“智”造國產(chǎn)芯片+國產(chǎn)加密安全系統(tǒng)通訊產(chǎn)品

    信息化高速發(fā)展的今天,信息技術(shù)的自主可控和信息安全已經(jīng)成為國家發(fā)展的重要基石。國家信創(chuàng)戰(zhàn)略的提出,旨在推動國產(chǎn)信息產(chǎn)業(yè)的崛起,實現(xiàn)
    的頭像 發(fā)表于 06-18 17:42 ?731次閱讀