国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

MFC串口通信發送16進制數據的方法

2020-01-26 13:34:24
字體:
來源:轉載
供稿:網友

本文實例為大家分享了MFC串口通信發送16進制數據的具體代碼,供大家參考,具體內容如下

MFC串口通信會使用m_mscomm控件。

發送數據一般是在edit control 里輸入自己想發送的內容,然后點擊send button。

如果直接發送字符串內容,通過下面代碼(send button內寫入)即可:

UpdateData(true); //讀取編輯框內容 m_mscomm.put_Output(COleVariant(m_EditSend)); m_EditSend.Empty(); //發送后清空輸入框 UpdateData(false); //更新編輯框內容 

但是這樣發送的是字符串內容,而串口通信常常需要發送16進制數據,接收端直接按HEX格式接收就可以了,不用再進行字符串轉HEX。因此最好在發送端就將字符串轉成16進制數據發送,下面代碼即可實現該功能:

(1)send button

CByteArray HexDataBuf; int i = 0; BYTE SendBuf[128]={0}; BYTE GetData[256]={0}; int SendLen = 0; int GetLen = 0;  UpdateData(TRUE);//獲取編輯框內容 if(m_EditSend.IsEmpty()) {  AfxMessageBox(_T("發送數據為空!"));  return; } HexDataBuf.RemoveAll();    //清空數組   GetLen = m_EditSend.GetLength(); for(i=0; i<GetLen; i++) {  GetData[i] = (BYTE)m_EditSend.GetBuffer()[i]; } StringtoHex(GetData, GetLen, SendBuf, &SendLen);//將字符串轉化為字節數據  HexDataBuf.SetSize(SendLen);   //設置數組大小為幀長度  for(i=0; i<SendLen; i++) {  HexDataBuf.SetAt(i,SendBuf[i]); } m_mscomm.put_Output(COleVariant(HexDataBuf)); //發送十六進制數據  UpdateData(false); //更新編輯框內容

(2)stringtoHex函數

void StringtoHex(BYTE *GB, int glen, BYTE* SB, int* slen){ int i; //遍歷輸入的字符串 int a = 0;  char temp; //接收字符,用來判斷是否為空格,若是則跳過 char temp1,temp2; //接收一個字節的兩個字符 例如EB,則temp1='E',temp2 = 'B' *slen = 0; //輸出的16進制字符串長度 for(i=0;i<glen;i++) { temp = GB[i]; if(temp==' ') continue;  if(a == 0)  temp1 = GB[i]; if(a == 1)  temp2 = GB[i]; a++;  if(a==2) {  a = 0;  temp1 = temp1 - '0';  if (temp1>10)  temp1 = temp1 -7;  temp2 = temp2 - '0';  if (temp2>10)  temp2 = temp2 -7;  SB[*slen] = temp1*16+temp2;  (*slen)++; } }  }

通過以上代碼即可發送16進制數據,如下圖是用串口調試工具的仿真結果,發送數據字節之間是否存在空格對結果沒有影響。

另外,在數據發送中用到了CByteArray類,這是一種支持字節的動態數組,詳情可在MSDN上查詢。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 南靖县| 常熟市| 乌恰县| 汉寿县| 资中县| 施秉县| 海盐县| 略阳县| 鄂温| 宜阳县| 张家港市| 广平县| 乌拉特后旗| 平乡县| 通化县| 廊坊市| 韩城市| 朝阳县| 洪泽县| 札达县| 章丘市| 合肥市| 阿尔山市| 托克托县| 惠来县| 桦川县| 峨眉山市| 高尔夫| 石门县| 达拉特旗| 肃南| 金昌市| 准格尔旗| 高碑店市| 奈曼旗| 营山县| 商水县| 蚌埠市| 台南市| 南溪县| 新干县|