一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四

聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

環球今日訊!C++/MFC串口通信——光源控制器控制

來源:CSDN 時間:2023-01-09 07:47:25

C++/MFC 串口通訊——光源控制器控制

一.背景1、平臺 VS2010+MFC+64位編譯平臺+使用 Unicode 字符集 2、 字符、字word、字節byte、位bit (1)字符是指計算機中使用的字母、數字、字和符號。 (2)1word=2bytes=8bits (3)開發是在vs2010下做的,默認字符集編碼是Unicode,但在之前的工程中,默認的字符集形式是多字節字符集。 CString屬于所謂的寬字符集,一個字符占兩個字節;char類型屬于窄字符集,一個char字符占一個字節,所以它們之間的轉換涉及到字節大小的轉換。CString默認采用unicode編碼,而char采用ansi編碼,兩種編碼中單個字符占的存儲大小也是不同的。 假設正常COM接收的數據為:23 33 31… 如果直接用Cstring,接收到的數據為23 00 33 00… 需要進行轉化:UniCode 下 CString 轉 char* 的方法

3、光源控制器的硬件規范&數據格式(幀格式)


(資料圖)

波特率數據長度停止位奇偶校驗

9600 bps8 bits1 bit無

1字節1字節1字節3字節2字節

特征字命令字通道字數據異或和校驗字

(1)特征字 = # (2)命令字 = 1,2,3,4,分別定義為:打開對應通道亮度,關閉對應通道亮度,設置對應通道亮度參數,讀出對應通道亮度參數。 當命令字為1,2,3時,如控制器接收命令成功,則返回特征字$;如控制器接收命令失敗,則返回&。 當命令字為4時,如控制器接收命令成功,則返回對應通道的亮度設置參數(返回格式跟發送格式相同);如控制器接收命令失敗,則返回&。 (3) 通道字 = 1,2,3,4。分別代表4個輸出通道。 (4)數據 = 0XX(XX=00~FF內的任一數值),對應通道電源的設置參數,轉化為十進制為0~255。 (5)異或和校驗字 = 除校驗字外的字節(包括:特征字,命令字,通道字和數據)的異或校驗和 4、串口通信常用API

二.程序1、定義全局變量

HANDLE hcom1;//光源所在串口OVERLAPPED m_osRead;// 用于重疊讀OVERLAPPED m_osWrite;// 用于重疊寫bool Open_ComPort1,light1_OpenOrClose=false;//是否成功打開串口,是否打開光源

2、串口初始化

hcom1 = CreateFile(L"COM2",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING ,FILE_ATTRIBUTE_NORMAL,NULL);if (hcom1 == INVALID_HANDLE_VALUE){MessageBox(_T("打開串口失??!"));Open_ComPort1=false;}else{DCB dcb;GetCommState(hcom1,&dcb);dcb.BaudRate = 9600;//波特率dcb.ByteSize = 8;//數據長度dcb.Parity = 0;//無奇偶校驗位dcb.StopBits = 0;//停止位,0代表1,1代表1.5,2代表2SetCommState(hcom1,&dcb);Open_ComPort1=true;}

3、串口通訊函數

//發送指令并讀取返回值,SendData(createStr(3,1,50)),指令字為4時更新顯示框bool C光源控制Dlg::SendData(CString data){//初始化緩沖區中的信息PurgeComm(hcom1, PURGE_RXCLEAR | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_TXABORT);//清空緩沖區//發送指令BYTE reciveBuf[20];DWORD readLen=0;USES_CONVERSION;char* cstr = T2A(data);if(WriteSerial(cstr,8)<=0){MessageBox(_T("串口指令發送失敗!"));return false;}//接收反饋Sleep(100);int c=0;for( c=0;c<10;c++){int getrecivelength="getBufferLength();if(getReciveLength">0){readBufferLength=ReadSerial(reciveBuf,getBufferLength());if(readBufferLength==1)//只有1個,代表命令字為1、2、3{if(reciveBuf[0]=="#"){return true;}else{MessageBox(_T("光源控制器指令接收失敗!"));return false;}}else//多個代表命令4,讀取亮度值{int l=0;if(reciveBuf[0]=="#"){CString strValue=_T("00"),strValueTemp;strValue.Format(_T("%c%c"),reciveBuf[4],reciveBuf[5]);//16進制化成10進制BYTE decValue=(BYTE)(conHexStrToByte((char)strValue[0])*16+conHexStrToByte((char)strValue[1]));CString byte2cstring_temp;byte2cstring_temp.Format(_T("%s"),decValue);SetDlgItemText(IDC_EDIT_LightNum1,byte2cstring_temp);UpdateData(false);}else{MessageBox(_T("光源控制器反饋的數據格式錯誤!"));return false;}}break;}Sleep(15);}if(c>=10){MessageBox(_T("讀取光源控制器反饋超時!"));return false;}return true;}//輸入命令字、通道和亮度值(3,1,50修改通道1亮度->50),輸出命令語句# 3 1 032 17CString  C光源控制Dlg::createStr(BYTE command,BYTE channle,BYTE data){char *conHex =new char[3];CString returnStr=_T("#"),temp,temp2; //將第1通道亮度設為50,則以ASCII碼向下寫“#3103217”//+命令字temp.Format(_T("%d"),command);returnStr+=temp;//+通道temp.Format(_T("%d"),channle);returnStr+=temp;//+亮度值if(data>15){sprintf(conHex, "0%X", data);//十進制轉十六進制}else{sprintf(conHex, "00%X", data);}temp2=conHex;returnStr=returnStr+temp2;//把所有的字符異或運算,+異或和校驗字int i;BYTE xorData=returnStr[0];for(i=1;i="0" &&str<="9"){return str-48;}else if(str=="a"||str=="A"){return 10;}else if(str=="b"||str=="B"){return 11;}else if(str=="c"||str=="C"){return 12;}else if(str=="d"||str=="D"){return 13;}else if(str=="e"||str=="E"){return 14;}else if(str=="f"||str=="F"){return 15;}return 0;}

4、控制指令

//開關光源if (light1_OpenOrClose)//開>>關{if (SendData(createStr(2,1,255)))//已經關了{light1_OpenOrClose=false;GetDlgItem(IDC_EDIT_LightNum1)->EnableWindow(FALSE);GetDlgItem(IDC_SPIN_LightNum1)->EnableWindow(FALSE);}else{GetDlgItem(IDC_EDIT_LightNum1)->EnableWindow(TRUE);GetDlgItem(IDC_SPIN_LightNum1)->EnableWindow(TRUE);}} else//關>>開{if (SendData(createStr(1,1,255))){light1_OpenOrClose=true;SendData(createStr(4,1,0));//打開光源,更新參數GetDlgItem(IDC_EDIT_LightNum1)->EnableWindow(TRUE);GetDlgItem(IDC_SPIN_LightNum1)->EnableWindow(TRUE);}else{GetDlgItem(IDC_EDIT_LightNum1)->EnableWindow(FALSE);GetDlgItem(IDC_SPIN_LightNum1)->EnableWindow(FALSE);}}//文本框輸入亮度+回車確認BOOL C光源控制Dlg::PreTranslateMessage(MSG* pMsg){// TODO: 在此添加專用代碼和/或調用基類if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN){if (GetFocus()->GetDlgCtrlID() == IDC_EDIT_LightNum1)//按下回車,如果當前焦點是在自己期望的控件上{int b=_ttoi(m_LightNum1);SendData(createStr(3,1,b));}return TRUE;}if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)return TRUE;return CDialogEx::PreTranslateMessage(pMsg);}

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四
1769国产精品| 欧美日韩无遮挡| 国产精品国码视频| 欧美呦呦网站| 亚洲日本精品国产第一区| 国产精品a久久久久| 久久精品首页| 欧美午夜电影在线| 亚洲欧洲日夜超级视频| 亚洲一区二区三区免费视频| 欧美一区视频| 亚洲精品一区二区三区福利| 黄色成人av在线| 国产精品ⅴa在线观看h| 久久天堂国产精品| 欧美视频中文一区二区三区在线观看| 欧美日韩一区二区精品| 国产精品成人观看视频免费| 国产精品露脸自拍| 国产视频不卡| 国产精品视频yy9099| 国产欧美精品一区| 久久中文字幕导航| 99精品福利视频| 日韩视频中文字幕| 欧美不卡视频一区发布| 亚洲在线一区| 国产在线一区二区三区四区| 亚洲欧美日韩国产综合| 亚洲欧美日韩在线不卡| 99精品国产一区二区青青牛奶| 国产精品免费观看在线| 国产精品久久久久9999高清| 国产精品成人v| 欧美视频在线观看免费网址| 欧美极品aⅴ影院| 欧美日韩综合| 精品动漫av| 中文欧美日韩| 免费视频一区| 欧美在线综合| 麻豆精品视频在线| 国产精品成人va在线观看| 国产日韩一区| 亚洲精品久久久久中文字幕欢迎你 | 亚洲无线观看| 亚洲午夜在线观看视频在线| 亚洲自拍偷拍麻豆| 欧美不卡高清| 海角社区69精品视频| 亚洲人成人99网站| 午夜欧美精品| 欧美日韩国产天堂| 亚洲黄色性网站| 久久久成人精品| 国产精品久久久久久久久免费桃花 | 久久国产色av| 欧美日韩高清一区| 亚洲日本中文字幕区| 玖玖综合伊人| 亚洲第一福利社区| 麻豆成人综合网| 亚洲欧洲日韩综合二区| 欧美**字幕| 一区二区成人精品| 国产精品劲爆视频| 香蕉久久夜色精品国产| 国产免费成人| 久久国产欧美日韩精品| 激情综合久久| 欧美日本在线播放| 亚洲欧美日韩区| 国产色视频一区| 久久久久.com| 在线视频欧美精品| 国产一区久久| 欧美日韩一区二区高清| 亚洲欧美日韩精品久久亚洲区 | 久久免费少妇高潮久久精品99| 国产日产精品一区二区三区四区的观看方式| 亚洲免费电影在线观看| 国产精品任我爽爆在线播放 | 亚洲欧美资源在线| 亚洲国产一区二区三区高清| 欧美日本精品| 久久久久久伊人| 亚洲一区激情| 亚洲精品国产精品国自产观看浪潮 | 老司机午夜精品| 亚洲每日更新| 国产香蕉97碰碰久久人人| 欧美成人午夜影院| 亚洲午夜激情网页| 一个色综合av| 一区二区三区毛片| 亚洲精品影视| 亚洲日本理论电影| 亚洲国产日韩欧美| 亚洲国产一区在线| 91久久国产综合久久蜜月精品| 伊人激情综合| 91久久香蕉国产日韩欧美9色 | 欧美色视频一区| 欧美日韩激情网| 欧美三级不卡| 国产精品视频导航| 韩日欧美一区二区| 亚洲电影激情视频网站| 91久久久亚洲精品| 99国产精品国产精品毛片| 在线一区二区三区做爰视频网站| 99人久久精品视频最新地址| 99这里只有精品| 久久精品国产欧美亚洲人人爽| 欧美中文在线免费| 久久亚洲精品欧美| 欧美人与性动交α欧美精品济南到| 欧美人与性动交a欧美精品| 欧美精品videossex性护士| 欧美日韩一区二区三区在线| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品久久久一区麻豆最新章节| 国产伦精品一区二区三区高清版| 国语自产精品视频在线看抢先版结局 | 欧美亚洲一区| 老司机午夜精品视频| 免费久久精品视频| 国产精品中文在线| 宅男在线国产精品| 看欧美日韩国产| 国产视频亚洲| 午夜在线不卡| 国产精品福利在线观看| 日韩一区二区免费高清| 免费久久久一本精品久久区| 国产一级久久| 性做久久久久久久免费看| 欧美日韩国产在线播放| 亚洲第一在线视频| 裸体一区二区三区| 在线精品国精品国产尤物884a| 亚洲一区国产视频| 国产精品久久久久久久久免费 | 一区在线免费| 久久综合伊人| 亚洲激情女人| 欧美电影资源| 亚洲日本中文字幕| 麻豆91精品91久久久的内涵| 国产精品成人免费视频 | 国产精品视频网址| 亚洲综合欧美日韩| 国产欧美精品一区二区色综合| 亚洲一本大道在线| 国产欧美在线观看一区| 久久在线免费| 亚洲视频二区| 在线播放日韩欧美| 欧美性大战久久久久| 久久人人97超碰精品888| 99成人精品| 狠狠综合久久| 国产精品超碰97尤物18| 欧美一区二区网站| 亚洲成在人线av| 欧美精品在线观看91| 一本一本a久久| 国产一区二区在线观看免费播放 | 欧美在线播放一区| 亚洲久久一区| 黄色成人av| 国产精品视频yy9099| 欧美黄色aa电影| 久久爱www久久做| 亚洲图片欧美日产| 一本色道久久综合狠狠躁篇的优点 | 91久久综合| 国产区二精品视| 欧美日本亚洲韩国国产| 久久亚洲综合网| 亚洲一区视频| 亚洲精品综合久久中文字幕| 国内精品**久久毛片app| 国产精品一区二区你懂得 | 亚洲黄色在线| 国产精品有限公司| 国产亚洲欧美一级| 国产伦精品一区二区三| 欧美午夜三级| 国产一区二区三区av电影| 国产精品乱码妇女bbbb| 国内精品久久久| 亚洲区免费影片| 一区二区三区欧美亚洲| 欧美一区二区三区视频| 欧美激情bt| 影院欧美亚洲| 亚洲一区二区三区四区中文 | 香蕉成人久久| 久久嫩草精品久久久久|