首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么用c++的CSerialPort类来读取串行口的数据

2012-11-03 
求助:如何用c++的CSerialPort类来读取串行口的数据我的51单片机串行口输出程序如下:void adtxd(tx_data)/*

求助:如何用c++的CSerialPort类来读取串行口的数据
我的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);

求各位大神指点迷津啊!谢谢了!

[解决办法]
关注中

http://www.vckbase.com/document/viewdoc/?id=1734
[解决办法]
串口输出的肯定是二进制的啊,电脑的世界就是一个二进制的世界,无处不2.
只不过通过规定,把一些特定的二进制转换成我们熟知的东西而已,英文字母、阿拉伯数字、中文。。。等等
所以,你读取串口发送过来的数据的时候需要你自己做解析,规定传送来的是int(32比特)、char(8比特)还是其他的什么类型,这样你显示出来的才不会是乱码!!!

热点排行