<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 串口調試助手源程序

串口調試助手源程序

作者: 時(shí)間:2012-04-25 來(lái)源:網(wǎng)絡(luò ) 收藏
String str, CByteArray senddata)
{
int hexdata,lowhexdata;
int hexdatalen=0;
int len=str.GetLength();
senddata.SetSize(len/2);
for(int i=0;ilen;)
{
char lstr,hstr=str[i];
if(hstr==' ')
{
i++;
continue;
}
i++;
if(i>=len)
break;
lstr=str[i];
hexdata=ConvertHexChar(hstr);
lowhexdata=ConvertHexChar(lstr);
if((hexdata==16)||(lowhexdata==16))
break;
else
hexdata=hexdata*16+lowhexdata;
i++;
senddata[hexdatalen]=(char)hexdata;
hexdatalen++;
}
senddata.SetSize(hexdatalen);
return hexdatalen;
}

//這是一個(gè)將字符轉換為相應的十六進(jìn)制值的函數
//好多C語(yǔ)言書(shū)上都可以找到
//功能:若是在0-F之間的字符,則轉換為相應的十六進(jìn)制字符,否則返回-1
char CSCommTestDlg::ConvertHexChar(char ch)
{
if((ch>='0')(ch='9'))
return ch-0x30;
else if((ch>='A')(ch='F'))
return ch-'A'+10;
else if((ch>='a')(ch='f'))
return ch-'a'+10;
else return (-1);
}

 

再將CSCommTestDlg::OnButtonManualsend()修改成以下形式:

void CSCommTestDlg::OnButtonManualsend()
{
// TOD Add your control notification handler code here
UpdateData(TRUE); //讀取編輯框內容
if(m_ctrlHexSend.GetCheck())
{
CByteArray hexdata;
int len=String2Hex(m_strTXData,hexdata); //此處返回的len可以用于計算發(fā)送了多少個(gè)十六進(jìn)制數
m_ctrlComm.SetOutput(COleVariant(hexdata)); //發(fā)送十六進(jìn)制數據
}
else
m_ctrlComm.SetOutput(COleVariant(m_strTXData));//發(fā)送ASCII字符數據

}

現在,你先將線(xiàn)接好并打開(kāi)助手V2.1,選上以十六制顯示,設置好相應,然后運行我們這個(gè)程序,在發(fā)送框中輸入00 01 02 03 A1 CC等十六進(jìn)制字符,并選上以十六進(jìn)制發(fā)送,單擊手動(dòng)發(fā)送,在串口助手的接收框中應該可以看到00 01 02 03 A1 CC了。

 

9.在接收框中以十六進(jìn)制顯示

這就容易多了:在主對話(huà)框中加入一個(gè)復選接鈕,IDC_CHECK_HEXDISPLAY Caption: 十六進(jìn)制顯示,再利用ClassWizard為其添加控制變量:m_ctrlHexDiaplay。 然后修改CSCommTestDlg::OnComm()函數:

void CSCommTestDlg::OnComm()
{
// TOD Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //設置BYTE數組 An 8-bit integerthat is not signed.
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值為2表示接收緩沖區內有字符
{
variant_inp=m_ctrlComm.GetInput(); //讀緩沖區
safearray_inp=variant_inp; //VARIANT型變量轉換為ColeSafeArray型變量
len=safearray_inp.GetOneDimSize(); //得到有效數據長(cháng)度
for(k=0;klen;k++)
safearray_inp.GetElement(k,rxdata+k);//轉換為BYTE型數組
for(k=0;klen;k++) //將數組轉換為Cstring型變量
{
BYTE bt=*(char*)(rxdata+k); //字符型
if(m_ctrlHexDisplay.GetCheck())
strtemp.Format("%02X ",bt); //將字符以十六進(jìn)制方式送入臨時(shí)變量strtemp存放,注意這里加入一個(gè)空隔
else
strtemp.Format("%c",bt); //將字符送入臨時(shí)變量strtemp存放

m_strRXData+=strtemp; //加入接收編輯框對應字符串
}
}
UpdateData(FALSE); //更新編輯框內容
}

測試:在串口助手發(fā)送框中輸入00 01 02 03 A1 CC等十六進(jìn)制字符,并選上以十六進(jìn)制發(fā)送,單擊手動(dòng)發(fā)送,在本程序運行后選上以十六進(jìn)制顯示,在串口調試助手中單擊手動(dòng)發(fā)送或自動(dòng)發(fā)送,則在本程序的接收框中應該可以看到00 01 02 03 A1 CC了。

 

10.如何設置自動(dòng)發(fā)送

最簡(jiǎn)單的設定自動(dòng)發(fā)送周期是用SetTimer()函數,這在數據采集中很有用,在控制中指令的傳送也可能用到定時(shí)發(fā)送。

方法是:在ClassWizard中選上MessageMap卡,然后在Objects IDs選中CSCommTestDlg類(lèi),再在Messages框中選上WM_TIMER消息,單擊ADD_FUNCTION加入void CSCommTestDlg::OnTimer(UINT nIDEvent) 函數,這個(gè)函數是放入“時(shí)間到”后要處理的代碼:



關(guān)鍵詞: 串口 調試 源程序

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>