救命啊!我用c++做一个单片机与pc得串口通信软件,目的是把单片机的数据(十六进制:形式是“AB CD EF”)采集并转化为十进制
"AB CD EF"---怎样把这种形式的字符串变成“ABCDEF”并以十进制方式送入临时变量????
我的程序只能把“AB” “CD”“ EF”各自转换成十进制然后送入临时变量!!!
主程序:
void CCWDlg::OnOnCommCommctrl()
{
// TODO: 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(jieshou)
{
if(Com.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp = Com.GetInput(); //读缓冲区
safearray_inp = variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
if(Mode == 2)
strtemp.Format("%ld",bt);//将字符以十进制方式送入临时变量strtemp存放
//strtemp.Format("%X ",bt); //将字符以十六进制方式送入临时变量strtemp存放,注意这里加入一个空隔
else
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
Receive2 = Receive2 + strtemp; //加入接收编辑框对应字符串
}
Receive2 += "\r\n";
}
}
UpdateData(FALSE); //更新编辑框内容
}
Receive2 = Receive2 + strtemp; //加入接收编辑框对应字符串
右边的Receive2是接受框里以前显示的数,strtemp临时变量里存的数是新接收到的
上面这句意思就是把以前的数和新接收的数一同显示出来
问题是我怎么处理临时变量strtemp的数??怎么把里面的“AAAA”转成十进制?