打印

单片机串口通信

[复制链接]
1763|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
雨夜秋寒寒|  楼主 | 2013-1-17 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void CTemDisplayDlg::OnOnCommMscomm1()
{
        // TODO: Add your control notification handler code here


        
        m_strRXData="";                           //每次进入串口函数将编辑框内容清空
        VARIANT variant_inp;                      //可以用 Variant 数据类型来替换任何数据类型,数值数据可以是任何整型或实型数
        COleSafeArray safearray_inp;              //定义具有任意类型的变量safearray_inp
        LONG len,k;                               //定义长整形变量
        BYTE rxdata[2048];                        //设置BYTE数组
        CString strtemp;                          //定义字符型变量

        if(m_Comm.GetCommEvent()==2)              //如果接收缓冲区内有字符
        {

                variant_inp=m_Comm.GetInput();        //读缓冲区
            safearray_inp=variant_inp;            //将VARIANT型变量转换为COleSafeArray型
         len=safearray_inp.GetOneDimSize();    //得到有效数据长度                                          //一到这里就出错
                for(k=0;k<len;k++)                    //接收数据并转换为BYTE型数组后,
                safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组                              

                for(k=0;k<len;k++)                    //将数组转换为CString变量送编辑框中显示
                {
                        BYTE bt=*(char*)(rxdata+k);                //字符型
                        strtemp.Format("%c",bt);                   //将字符型送入临时变量strtemp中存放
                        m_strRXData+=strtemp;                      //加入接收编辑框对应字符串
                }
                m_strRXData+="\r\n";
        }

                 UpdateData(FALSE);                 //更新编辑框内容

        
}
我是菜鸟,刚学用VisualC++编串口通信的上位机程序,想显示温度,可一到 len=safearray_inp.GetOneDimSize(); 就出错,哪位大神能帮忙看看!

相关帖子

沙发
jzqtw| | 2013-3-27 21:38 | 只看该作者
串口调试首先要通过程序打开串口。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

1

粉丝