日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单的串口助手程序开发

發(fā)布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单的串口助手程序开发 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.簡介

之前在烽火集團(tuán)實(shí)習(xí)的時候,開發(fā)串口通信程序用的都是純C++。感覺串口程序開發(fā)很考驗(yàn)人的邏輯思考能力。不過,現(xiàn)在好了,科研工作中,一切已存在的“利器”都可以用來為自己的“idea”服務(wù)。 在串口程序開發(fā)過程中,有兩個很得力的助手——“CserialPort”和“MSCommon”。這里,僅嘗試了利用MSCommon空間進(jìn)行最基本的串口助手開發(fā),也是受益匪淺。

2.一步一步開發(fā)程序

1.利用先前點(diǎn)擊打開鏈接介紹的加載MSCommon控件的方法設(shè)計對話框面板,如下圖所示:


2.改變各控件的ID號以及添加相應(yīng)的空間變量:

3.初始化串口,設(shè)置MSComm控件的屬性 OOL CSerialCommDlg::OnInitDialog() {CDialogEx::OnInitDialog();// 將“關(guān)于...”菜單項添加到系統(tǒng)菜單中。// IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 設(shè)置此對話框的圖標(biāo)。 當(dāng)應(yīng)用程序主窗口不是對話框時,框架將自動// 執(zhí)行此操作SetIcon(m_hIcon, TRUE); // 設(shè)置大圖標(biāo)SetIcon(m_hIcon, FALSE); // 設(shè)置小圖標(biāo)///初始化代碼///m_ctrlComm.put_CommPort(1);//選擇COM1m_ctrlComm.put_InputMode(1); //設(shè)置輸入方式為二進(jìn)制方式m_ctrlComm.put_InBufferSize(1024);//設(shè)置輸入緩沖區(qū)大小m_ctrlComm.put_OutBufferSize(512);//設(shè)置輸出緩沖區(qū)大小//通信協(xié)議:波特率9600 無校驗(yàn) 傳輸位數(shù)8 停止位1m_ctrlComm.put_Settings(_T("9600,n,8,1"));//提示const char* 與 LPCTSTR不兼容//打開串口if (!m_ctrlComm.get_PortOpen())m_ctrlComm.put_PortOpen(TRUE);m_ctrlComm.put_RThreshold(1);//每當(dāng)串口緩沖區(qū)又多于或等于1個字符的時候?qū)?/引發(fā)一個接收數(shù)據(jù)的OnCommon事件m_ctrlComm.put_InputLen(0); //設(shè)置當(dāng)前接受區(qū)數(shù)據(jù)長度為0m_ctrlComm.get_Input(); //先預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù)return TRUE; }串口初始化部分其實(shí)就是三個過程:選擇串口及開辟緩存區(qū)、設(shè)定通信協(xié)議、打開串口并監(jiān)控串口線程消息。

4.添加串口消息處理函數(shù)OnComm() void CSerialCommDlg::Oncomm() {//接收串口數(shù)據(jù)并傳遞到顯示窗口VARIANT variant_inp;COleSafeArray safearray_inp;LONG len, k;BYTE rxdata[2048];CString strtemp;if (m_ctrlComm.get_CommEvent() == 2 ) //事件值為2表示接受緩沖區(qū)內(nèi)有字符{variant_inp = m_ctrlComm.get_Input(); //讀緩沖區(qū)safearray_inp = variant_inp; //數(shù)據(jù)類型轉(zhuǎn)換len = safearray_inp.GetOneDimSize(); //得到有效數(shù)據(jù)長度for (k = 0; k < len; k++)safearray_inp.GetElement(&k, rxdata + k); //轉(zhuǎn)換為BYTE型數(shù)組for (k = 0; k < len; k++){BYTE bt = *(char*)(rxdata + k); //字符型strtemp.Format(_T("%c"),bt); //將字符送入臨時變量中保存//const char 與 const wchar_t不兼容m_strEditRxData += strtemp;}}UpdateData(FALSE); }MSComm控件一般就是用事件驅(qū)動方式從串口接收數(shù)據(jù),也就是消息處理,當(dāng)串口有事件發(fā)生時,程序調(diào)用消息消息函數(shù)來處理數(shù)據(jù)。該函數(shù)代碼的主要任務(wù)是從串口接收數(shù)據(jù)并顯示在接收編輯框中。 在這里不得不說的是我們會經(jīng)常碰到的程序錯誤:“ const char* 與LPCTCTR類型不匹配 ”、“ const char 和 const wchar_t 類型不匹配”。在這里,我們利用“-T()”函數(shù)處理就好了。
5.發(fā)送消息設(shè)置 void CSerialCommDlg::OnClickedButtonManualsend() {UpdateData(TRUE);m_ctrlComm.put_Output(COleVariant(m_strEditTxData));//發(fā)送數(shù)據(jù) }首先通過更新命令,實(shí)時更新成員變量值,然后利用串口對象將該數(shù)據(jù)發(fā)送出去。
6.雙串口配置 利用虛擬串口軟件Virtual Serial Ports Driver XP設(shè)置一對串口,如下圖所示: 7.實(shí)驗(yàn)結(jié)果:
3.心得感受

利用MSComm進(jìn)行串口程序開發(fā)大大提高了編程效率!關(guān)鍵在于串口消息的實(shí)時監(jiān)控,并設(shè)定適當(dāng)?shù)南⑻幚砗瘮?shù)。最典型的就是獲得串口接收到的數(shù)據(jù)(當(dāng)然了也包括這些數(shù)據(jù)的算法處理)。

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的简单的串口助手程序开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线不卡毛片 | 五月天视频 | 九九热在线免费视频 | 欧美日韩黄 | caoporen在线 | 蜜臀久久 | 日本黄色录象 | √天堂资源在线 | 波多野结衣中文字幕在线播放 | 丰满肉嫩西川结衣av | 97影视| 亚洲av中文无码乱人伦在线观看 | 成人欧美一区二区三区黑人 | 国产精品麻豆欧美日韩ww | 国产原创视频在线观看 | 亚洲香蕉在线观看 | 黑人巨大精品欧美一区二区 | 韩国成人在线视频 | 噼里啪啦免费看 | 久久午夜免费视频 | 狠狠躁18三区二区一区传媒剧情 | www.成人网.com| 中文字幕在线免费观看视频 | 韩国毛片基地 | www.色视频| 国产精品一区在线 | 欧美一区二区三区四区在线 | 日本精品入口免费视频 | 国产91美女视频 | 日本精品一区视频 | 激情久久久久久 | 女人的天堂av在线 | 亚洲综合第一页 | 精品久久人妻av中文字幕 | 手机av电影在线 | 国产中文字幕免费 | 日韩激情在线视频 | 国产成人三级在线 | 插吧插吧网 | 美国免费高清电影在线观看 | 波多野结衣视频免费在线观看 | 欧美日韩免费一区 | 99激情视频 | 亚洲精品一级片 | 富婆如狼似虎找黑人老外 | 很黄的网站在线观看 | 精品一区二区中文字幕 | 超碰综合 | 亚洲欧美日韩精品在线 | 在线观看视频99 | 久久综合一区二区 | 日韩av网址在线观看 | 国产乱子伦精品无码专区 | 欧美日韩国产一区在线 | 成人综合一区二区 | 免费男女视频 | 奇米成人网 | 夜夜爱爱 | 浓精h攵女乱爱av | 日本一区免费电影 | 一级片一级 | 日韩女优中文字幕 | 18禁一区二区 | av中文字幕在线播放 | 日韩中文字幕精品视频 | 黄色视屏在线看 | 中文字幕亚洲一区二区三区 | 青草一区 | www.狠狠干 | 毛片内射久久久一区 | 色老板最新地址 | 可以看的毛片 | 五月天综合婷婷 | 亚洲欧美国产精品专区久久 | 成年人在线播放视频 | 黄色不卡视频 | 精品免费在线视频 | 青青草原国产在线 | 日日操夜夜草 | 超碰在线国产 | 横恋母在线观看 | 免费看一级黄色大全 | 三上悠亚影音先锋 | 天天干天天操天天操 | 国模丫头1000人体 | 国产内射一区 | 国产精品36p | 亚洲国产欧美另类 | 欧美调教视频 | 国产成人看片 | 成av人在线 | 久久视频这里只有精品 | www.一区二区三区四区 | 娇妻被肉到高潮流白浆 | 在线资源站 | 亚日韩 | 国内精品久久久久久久影视简单 | 亚洲美女黄色 | 永久在线观看 |