none
关于Port already Open的问题 RRS feed

  • 问题

  • 各位大虾,我在XPE启动时自动运行一个VC编译的程序,这个程序用到了MSCOMM控件,对串口进行操作,程序启动时打开串口。结果发现程序启动时有时会报Port already Open这个错误,不过频率不高,大概10次里有1次会报。
        我不知道是怎么回事,是不是XPE系统刚启动的时候串口不允许操作还是怎么的,请各位指教,谢谢。
        程序启动代码如下:
        GetDlgItem(IDC_MSCOMM1)->ShowWindow(FALSE);//串口控件ID=IDC_MSCOMM1
        m_SerialCom.SetCommPort(1);//串口控件变量名m_SerialCom
        m_SerialCom.SetInputMode(1); //hex mode
        m_SerialCom.SetSettings("9600,E,8,1");
        m_SerialCom.SetRThreshold(20); 
        m_SerialCom.SetInBufferSize(1024);
        m_SerialCom.SetOutBufferSize(1024);
        m_SerialCom.SetInBufferCount(0); //clear buffer
        if(m_SerialCom.GetPortOpen() == TRUE)
        {
           m_SerialCom.SetPortOpen(FALSE);
        }
        m_SerialCom.SetPortOpen(TRUE);
        if(m_SerialCom.GetPortOpen()==FALSE)
       {
          AfxMessageBox("Com1 Open Error !");
          return;
       }
    2009年10月10日 0:52

答案

  • 最好加,防止程序启动的太“快”,试试看吧。

    另外在XP英文版测试一下你的程序。看是否出现相同的问题。
    • 已标记为答案 丁戬仲 2009年10月14日 3:08
    2009年10月13日 7:04
    版主

全部回复