1. 程式人生 > >上位機串列埠程式以十六進位制接收資料

上位機串列埠程式以十六進位制接收資料

剛接觸MFC,做了個串列埠通訊的程式。由於是與微控制器通訊,需要以十六進位制傳送資料,為了驗證在接收函式中把接收到的資料轉換為十六進位制顯示。接收buf 1 之前定義為char型,比如傳送1ABa,接收應該顯示0x1a    0xba,但是實際接收顯示的是0x1a   0xffffffba。後來把buf1改成BYTE型別,接收顯示就正確了。不清楚為啥,猜想是不是char是有符號,把前面的都置1了。如果有大神知道,希望告訴下。

附上相應訊息ON_COM_RECEIVE的接收函式

LRESULT CLMComTestDlg::OnComRecv(WPARAM, LPARAM)
{
char buf1[1024];//
BYTE *buf2;
//buf2=commDevice.ReadString(buf1,1024);
buf2=(BYTE*)MyComm_.getCnComm().ReadString (buf1,1024);
CString str(buf2);
int k=str.GetLength ();
for(int i=0;i<k;i++)
{
str.Format (_T("%x"),buf2[i]);//將接收到的char型資料轉換為對應的十六進位制 
   m_Rxstr.AddString (str);
}
    UpdateData(0);
static int cnt=0;
cnt=m_Rxstr.GetCount();
m_Rxstr.SetCurSel(cnt-1);
    

return 1;
}