如上、

解决方案 »

  1.   

    具体问题在下面:
    我的程序是一个基于对话框的程序,在程序中我添加了一个Combox控件和一个Button控件,当程序运行时,在COMBOX控件选中COM1或COM2,然后按下button就将预定的一个字符串从串口发送出去,而且只要求单工方式,但是当我按下button时,程序就出错!我用异常和断点调试来查看是什么地方发生错误都不行!请大家看看我下面的一段程序。
    首先是button对应的程序:在BarcodePrintDlg.cpp文件中void CBarcodePrintDlg::OnButtonPrint() //打印按钮
    {
    CString strPort;  //定义一个字符串变量
    GetDlgItemText(IDC_COMBO_PORT,strPort); //将组合框中选中的项赋给字符串变量

    if(strPort=="COM1")  //如果这个组合框中选中的是"COM1"
    m_MSComm.SetCommPort(1);  //设置端口号为COM1
    if(strPort=="COM2") 
    m_MSComm.SetCommPort(2); if(!m_MSComm.GetPortOpen()) //取得当前的串口状态是不是打开的
    m_MSComm.SetPortOpen(TRUE); //如果没有打开,则打开 m_MSComm.SetSettings("9600,n,8,1"); //设置波特率等参数
    m_MSComm.SetInputLen(0);//设置当前接收区数据长度为0
    m_MSComm.GetInput(); //读缓冲区以清除其中保留的数据 m_MSComm.SetOutput(COleVariant("ok!"));  //发送字符串"ok!"
    }
    另外在BarcodePrintDlg.h文件里面有如下两个定义:#include "mscomm.h" //class CBarcodePrintDlg : public CDialog
    {
      ...
      public:
      ...
      CMSComm m_MSComm;  //声明一个串口类对象
      ...
    }当我按下BUTTON时,就出错,上面有“终止,重试,忽略”三个按钮!当我多按几下“忽略”时,该提示
    就消失了,这时我再按下BUTTON时,又出现了刚才的情况!
    请大家帮我看看这是怎么回事?
    谢谢了!
      

  2.   

    将m_MSComm.SetOutput(COleVariant("ok!"));  //发送字符串"ok!"
    改为:char str[2]={'o','k'};
    CByteArray bt;
    bt.RemoveAll();
    bt.SetSize(2);
    for(int i=0;i<2;i++)
    bt.SetAt(i,str[i]);m_MSComm.SetOutput(COleVariant(bt));  //发送字符串"ok!"
      

  3.   

    m_mscomm.SetInputMode(1); //1:表示以二进制方式检取数据
    m_mscomm.SetRThreshold(1); 
    没有设门限吧,再试试!