最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MFC串口通信發(fā)送16進制數(shù)據(jù)的方法

 更新時間:2019年01月14日 08:38:10   作者:Timmy_Y  
這篇文章主要為大家詳細介紹了MFC串口通信發(fā)送16進制數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

發(fā)送數(shù)據(jù)一般是在edit control 里輸入自己想發(fā)送的內容,然后點擊send button。

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

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

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

(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("發(fā)送數(shù)據(jù)為空!"));
  return;
 }
 HexDataBuf.RemoveAll();    //清空數(shù)組 
 
 GetLen = m_EditSend.GetLength();
 for(i=0; i<GetLen; i++)
 {
  GetData[i] = (BYTE)m_EditSend.GetBuffer()[i];
 }
 StringtoHex(GetData, GetLen, SendBuf, &SendLen);//將字符串轉化為字節(jié)數(shù)據(jù)
 
 HexDataBuf.SetSize(SendLen);   //設置數(shù)組大小為幀長度 
 for(i=0; i<SendLen; i++)
 {
  HexDataBuf.SetAt(i,SendBuf[i]);
 }
 m_mscomm.put_Output(COleVariant(HexDataBuf)); //發(fā)送十六進制數(shù)據(jù)
 
 UpdateData(false); //更新編輯框內容

(2)stringtoHex函數(shù)

void StringtoHex(BYTE *GB, int glen, BYTE* SB, int* slen)
{
 int i; //遍歷輸入的字符串
 int a = 0; 
 char temp; //接收字符,用來判斷是否為空格,若是則跳過
 char temp1,temp2; //接收一個字節(jié)的兩個字符 例如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)++;
 }
 }
 
 }

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

另外,在數(shù)據(jù)發(fā)送中用到了CByteArray類,這是一種支持字節(jié)的動態(tài)數(shù)組,詳情可在MSDN上查詢。

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

相關文章

  • C++中COM組件初始化方法實例分析

    C++中COM組件初始化方法實例分析

    這篇文章主要介紹了C++中COM組件初始化方法,涉及C++中COM組件的使用技巧,需要的朋友可以參考下
    2015-05-05
  • C++實現(xiàn)刪除txt文件中指定內容的示例代碼

    C++實現(xiàn)刪除txt文件中指定內容的示例代碼

    這篇文章主要介紹了C++實現(xiàn)刪除txt文件中指定內容的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • C++語言實現(xiàn)hash表詳解及實例代碼

    C++語言實現(xiàn)hash表詳解及實例代碼

    這篇文章主要介紹了C++語言實現(xiàn)hash表詳解及實例代碼的相關資料,需要的朋友可以參考下
    2017-01-01
  • C語言實現(xiàn)中綴表達式轉換為后綴表達式

    C語言實現(xiàn)中綴表達式轉換為后綴表達式

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)中綴表達式轉換為后綴表達式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++中main函數(shù)怎樣調用類內函數(shù)

    C++中main函數(shù)怎樣調用類內函數(shù)

    這篇文章主要介紹了C++中main函數(shù)怎樣調用類內函數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言自定義類型全解析

    C語言自定義類型全解析

    在C語言中自定義類型主要有結構體類型、位段、枚舉類型、聯(lián)合體類型,自定義類型是面試常會碰到的內容,今天我們來詳細了解一下它
    2022-02-02
  • C++關于字符的接收與輸出操作示例

    C++關于字符的接收與輸出操作示例

    這篇文章主要介紹了C++關于字符的接收與輸出操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • C/C++實現(xiàn)線性單鏈表的示例代碼

    C/C++實現(xiàn)線性單鏈表的示例代碼

    使用鏈存儲結構的線性存儲結構為線性單鏈表,本文將分別利用C語言和C++實現(xiàn)線性單鏈表,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-05-05
  • Qt之使用GraphicsView框架實現(xiàn)思維導圖的示例

    Qt之使用GraphicsView框架實現(xiàn)思維導圖的示例

    思維導圖可以更方便的整理知識,本文主要介紹了Qt之使用GraphicsView框架實現(xiàn)思維導圖的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • C++實現(xiàn)哈夫曼樹編碼解碼

    C++實現(xiàn)哈夫曼樹編碼解碼

    這篇文章主要為大家詳細介紹了C++實現(xiàn)哈夫曼樹編碼解碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評論

江门市| 五常市| 佛山市| 无极县| 博湖县| 定安县| 工布江达县| 收藏| 鸡东县| 元谋县| 分宜县| 郸城县| 和静县| 罗平县| 康乐县| 鲜城| 海原县| 油尖旺区| 临澧县| 兴义市| 蒙阴县| 象州县| 全南县| 榆树市| 仲巴县| 保康县| 奉新县| 黑龙江省| 蚌埠市| 凉城县| 泰顺县| 贵港市| 巨野县| 长治市| 库车县| 高雄市| 定陶县| 洪洞县| 宜良县| 竹溪县| 舞钢市|