c++ 实现单片机跟电脑通讯_艺术纸箱_百度空间

c++ 实现单片机跟电脑通讯



添加5个button控件,2个editbox控件,2个static textI 更改ID:DC_STATIC1,IDC_STATIC2

1个combobox,

void CMyDlg::OnButton1()
{
m_ReceiveData="";
m_Gettext.SetWindowText("");
}

void CMyDlg::OnButton4()
{
int i;
CByteArray array;
CString str;


m_Sendtext.GetWindowText (str);
str=str+"\r";
Count=strlen(str);
strcpy(TxData,str);
array.RemoveAll();
array.SetSize(Count);

for(i=0;i<Count;i++)
array.SetAt(i, TxData[i]);

m_comm.SetOutput(COleVariant(array));//发送数据

;
}

void CMyDlg::OnButton3()
{
m_Sendtext.SetWindowText("");  
}

void CMyDlg::Enter(CString str)
{
int iLineNum=m_Gettext.GetLineCount();
   CString s;


    if(iLineNum<=200)
    {
     m_Gettext.SetSel(-1, -1);
     m_Gettext.ReplaceSel(str+" ");
    }
   
    else
    {
     m_Gettext.SetSel(0, -1);
     m_Gettext.Clear();
    
    }

}

void CMyDlg::OnEditchangeCombo1()
{

}

void CMyDlg::OnSelendokCombo1()
{

CString str;
  
m_comm.SetCommPort(m_commport.GetCurSel()+1);
IDcom=m_commport.GetCurSel();

str.Format("%d", IDcom);

}

void CMyDlg::OnButton5()
{  
if(IDcom==-1)
m_commport.SetCurSel (0);//0-8

   if(m_comm.GetPortOpen())
   { m_comm.SetPortOpen(FALSE);
   m_button5.SetWindowText("打开串口");
   m_button4.EnableWindow(FALSE);
   m_commport.EnableWindow (TRUE);


   }
   else
   { m_comm.SetPortOpen(TRUE);//打开串口
   m_button5.SetWindowText("关闭串口");
   m_button4.EnableWindow(TRUE);
   m_commport.EnableWindow (FALSE);
    IDcom=m_commport.GetCurSel();

  

}

void CMyDlg::OnCancel()//关闭对话框时提示:确定要退出系统
{
if(MessageBox("你确定要退出系统吗?","提示",MB_YESNO)==IDYES)
{
CDialog::OnCancel();


}
}

void CMyDlg::initcomm()
{
                             // m_comm.Create(NULL,0,CRect(0,0,0,0),this,IDC_MSCOMM1);
                              if(m_comm.GetPortOpen()) //如果串口是打开的,则行关闭串口
                              m_comm.SetPortOpen(FALSE);

                             // m_comm.SetCommPort(1); //选择COM2
                              m_comm.SetInBufferSize(1024); //接收缓冲区
                              m_comm.SetOutBufferSize(1024);//发送缓冲区
                              m_comm.SetInputLen(0);//设置当前接收区数据长度为0,表示全部读取
                              m_comm.SetInputMode(1);//以二进制方式读写数据
                              m_comm.SetRThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
                              m_comm.SetSettings("9600,n,8,1");//波特率9600无检验位,8个数据位,1个停止位

        m_commport.AddString("COM1");m_commport.SetCurSel(0);
        m_commport.AddString("COM2");m_commport.SetCurSel(1);
        m_commport.AddString("COM3");m_commport.SetCurSel(2);
        m_commport.AddString("COM4");m_commport.SetCurSel(3);
        m_commport.AddString("COM5");m_commport.SetCurSel(4);
        m_commport.AddString("COM6");m_commport.SetCurSel(5);

      
       
        m_commport.SetWindowText("串口");       
       IDcom=-1;
                            // m_comm.GetInput(); //先预读缓冲区以xx残留数据

      
}

void CMyDlg::oncomm()
{
VARIANT m_Input1;
int num;

    COleSafeArray m_Input2;

     long length,i;

     BYTE data[1024];

     CString str;

   if(m_comm.GetCommEvent()==2)//接收缓冲区内有字符

     {

        m_Input1=m_comm.GetInput();//读取缓冲区内的数据
      // m_get=m_comm.GetInput();

        m_Input2=m_Input1;//将VARIANT型变量转换为COleSafeArray型变量

        length=m_Input2.GetOneDimSize();//确定数据长度

        for(i=0;i<length;i++)

            m_Input2.GetElement(&i,data+i);//将数据转换为BYTE型数组

       for(i=0;i<length;i++)//将数组转换为CString型变量

        {

            char a=*(char*)(data+i);

         str.Format("%c",a);

            m_ReceiveData+=str;
    num=strlen(m_ReceiveData);
   
    if(num>500)
     m_ReceiveData="";
             m_Gettext.SetWindowText (m_ReceiveData);
   

       }

     }

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

void CMyDlg::OnSelendokCombo1()
{

CString str;
  
m_comm.SetCommPort(m_commport.GetCurSel()+1);
IDcom=m_commport.GetCurSel();

str.Format("%d", IDcom);

}



郑重声明:资讯 【c++ 实现单片机跟电脑通讯_艺术纸箱_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——