freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

經(jīng)典串口調(diào)試助手源程序及串口通信設(shè)置-文庫吧

2025-07-15 04:09 本頁面


【正文】 串口,但運(yùn)行程序不應(yīng)該有任何錯(cuò)誤,不然,你肯定哪兒沒看仔細(xì),因?yàn)槲沂谴蜷_VC6對(duì)照著做一步寫一行的,運(yùn)行試試。沒錯(cuò)吧?那么做下一步: 你可以在你需要的時(shí)候打開串口,例如在程序中做一個(gè)開始按鈕,在該按鈕的處理函數(shù)中打開串口?,F(xiàn)在我們在主對(duì)話框的CSCommTestDlg::OnInitDialog()打開串口,加入如下代碼:// TODO: Add extra initialization hereif(())(FALSE)。(1)。 //選擇1if( !())(TRUE)。//打開串口elseAfxMessageBox(cannot open serial port)。(9600,n,8,1)。 //波特率9600,無校驗(yàn),8個(gè)數(shù)據(jù)位,1個(gè)停止位 (1)。 //1:表示以二進(jìn)制方式檢取數(shù)據(jù)(1)。//參數(shù)1表示每當(dāng)串口接收緩沖區(qū)中有多于或等于1個(gè)字符時(shí)將引發(fā)一個(gè)接收數(shù)據(jù)的OnComm事件(0)。 //設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長度為0()。//先預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù)現(xiàn)在你可以試試程序了,將串口線接好后(不會(huì)接?去看看我寫的串口接線基本方法),打開串口調(diào)試助手,并將串口設(shè)在2,選上自動(dòng)發(fā)送,也可以等會(huì)手動(dòng)發(fā)送。再執(zhí)行你編寫的程序,接收框里應(yīng)該有數(shù)據(jù)顯示了。 先為發(fā)送按鈕添加一個(gè)單擊消息即BN_CLICKED處理函數(shù),打開ClassWizard-Message Maps,選擇類CSCommTestDlg,選擇IDC_BUTTON_MANUALSEND,雙擊BN_CLICKED添加OnButtonManualsend()函數(shù),并在函數(shù)中添加如下代碼:void CSCommTestDlg::OnButtonManualsend(){// TODO: Add your control notification handler code hereUpdateData(TRUE)。 //讀取編輯框內(nèi)容(COleVariant(m_strTXData))。//發(fā)送數(shù)據(jù)}運(yùn)行程序,在發(fā)送編輯框中隨意輸入點(diǎn)什么,單擊發(fā)送按鈕,??!看看,在另一端的串口調(diào)試助手(或別的調(diào)試工具)接收框里出現(xiàn)了什么。如果你真是初次涉獵串口編程,又一次成功,那該說聲謝謝我了,因?yàn)槲业谝淮巫龃诔绦驎r(shí)可費(fèi)勁了,那時(shí)網(wǎng)上的資料也不好找。開開玩笑,謝謝你的支持,有什么好東西別忘了給我寄一份。最后說明一下,由于用到VC控件,、(win2000為System32)龔建偉 什么是VARIANT數(shù)據(jù)類型?如何使用VARIANT數(shù)據(jù)類型? 怎么以十六進(jìn)制或二進(jìn)制發(fā)送和接收?如果還想再深入了解,請(qǐng)看:串口調(diào)試助手源程序及編程詳細(xì)過程(二) 這是更新后適合本文的源程序(),如果還沒有下載源程序,又對(duì)本文有興趣,請(qǐng) 立即下載 (當(dāng)然,你看完本文也可以自己做出來,這個(gè)程序是接著上一個(gè)做的,如果你沒下載前面程序,則沒必要再下載了,本程序全部包含)。  在主對(duì)話框中加入一個(gè)復(fù)選接鈕,ID為IDC_CHECK_HEXSEND Caption: 十六進(jìn)制發(fā)送,再利用ClassWizard為其添加控制變量:m_ctrlHexSend; 在ClassView中為SCommTestDlg類添加以下兩個(gè)PUBLIC成員函數(shù),并輸入相應(yīng)代碼?!?/由于這個(gè)轉(zhuǎn)換函數(shù)的格式限制,在發(fā)送框中的十六制字符應(yīng)該每兩個(gè)字符之間插入一個(gè)空隔//如:A1 23 45 0B 00 29//CByteArray是一個(gè)動(dòng)態(tài)字節(jié)數(shù)組,可參看MSDN幫助int CSCommTestDlg::String2Hex(CString str, CByteArray amp。senddata){int hexdata,lowhexdata。int hexdatalen=0。int len=()。(len/2)。for(int i=0。ilen。){char lstr,hstr=str[i]。if(hstr==39。 39。){i++。continue。}i++。if(i=len)break。lstr=str[i]。hexdata=ConvertHexChar(hstr)。lowhexdata=ConvertHexChar(lstr)。if((hexdata==16)||(lowhexdata==16))break。elsehexdata=hexdata*16+lowhexdata。i++。senddata[hexdatalen]=(char)hexdata。hexdatalen++。}(hexdatalen)。return hexdatalen。}//這是一個(gè)將字符轉(zhuǎn)換為相應(yīng)的十六進(jìn)制值的函數(shù)//好多C語言書上都可以找到//功能:若是在0F之間的字符,則轉(zhuǎn)換為相應(yīng)的十六進(jìn)制字符,否則返回1char CSCommTestDlg::ConvertHexChar(char ch){if((ch=39。039。)amp。amp。(ch=39。939。))return ch0x30。else if((ch=39。A39。)amp。amp。(ch=39。F39。))return ch39。A39。+10。else if((ch=39。a39。)amp。amp。(ch=39。f39。))return ch39。a39。+10。else return (1)。}  再將CSCommTestDlg::OnButtonManualsend()修改成以下形式:void CSCommTestDlg::OnButtonManualsend(){// TODO: Add your control notification handler code hereUpdateData(TRUE)。 //讀取編輯框內(nèi)容if(()){CByteArray hexdata。int len=String2Hex(m_strTXData,hexdata)。 //此處返回的len可以用于計(jì)算發(fā)送了多少個(gè)十六進(jìn)制數(shù)(COleVariant(hexdata))。 //發(fā)送十六進(jìn)制數(shù)據(jù)}else(COleVariant(m_strTXData))。//發(fā)送ASCII字符數(shù)據(jù)}現(xiàn)在,選上以十六制顯示,設(shè)置好相應(yīng)串口,然后運(yùn)行我們這個(gè)程序,在發(fā)送框中輸入00 01 02 03 A1 CC等十六進(jìn)制字符,并選上以十六進(jìn)制發(fā)送,單擊手動(dòng)發(fā)送,在串口調(diào)試助手的接收框中應(yīng)該可以看到00 01 02 03 A1 CC了?!?這就容易多了:
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1