我的51单片机串行口输出程序如下:
void adtxd(tx_data) /*串行口输出程序*/
{
ad=tx_data;
SCON= 0x40; /*串口方式1*/
PCON=0; /*SMOD=0*/
//REN=1; /*允许接收*/
TMOD=0X20;
TH1=0XE6;
TL1=0XE6;
TR1=1; /*高八位*/
ad1=ad/256;
SBUF=ad1;
while(!TI);TI=0;
SBUF=ad%256; /*低八位*/
while(!TI);TI=0; /*等待发送完毕 */
}
当我用SerialPort类来完成读取串行口的数据的时候,读取的是?号。我的读取及显示函数如下:
m_strEditReceiveMsg += ch;
UpdateData(FALSE);
所以我想问一下串行口输出的应该不是二进制的数据了吧?要不然怎么会转换成?号了呢?
所以我以为是输出的字符型数据,因此我又用了以下的代码,结果输出的是一个乱码字符,我的程序如下:
m_strEditReceiveMsg += ch;
num1=atoi(m_strEditReceiveMsg);
itoa(num1,ch1,10);
GetDlgItem(IDC_EDIT_RECEIVEMSG)->SetWindowText(ch1);
求各位大神指点迷津啊!谢谢了! |