打开COM端口时,Debug Assertion失败

时间:2015-08-06 06:46:24

标签: c++ visual-c++ serial-port serial-communication

我正在开发一个程序,使用Arduino UNO从接近传感器获取读数。虽然我可以使用Arduino的内置串行监视器来获得读数,但不知何故我无法从MS VC ++打开相同的端口。

以下是该计划的一部分:

int main(void)
{
    /*used for port"COM13"*/
    HANDLE hCom=INVALID_HANDLE_VALUE;

    char input[30];
    string ss,ss1,ss2,ss3,ss4;

    /*Open "COM13"*/
    hCom=CreateFile("COM13",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

    if(hCom==INVALID_HANDLE_VALUE)
    {
        printf("can't open file");
    }

    /*Communication Setting*/
    DCB dcb;
    memset(&dcb,0,sizeof (DCB));
    dcb.DCBlength=sizeof (DCB);
    dcb.BaudRate=CBR_9600;
    dcb.ByteSize=8;
    dcb.Parity=NOPARITY;
    dcb.StopBits=ONESTOPBIT;
    SetCommState(hCom,&dcb);

    while(1)
      {
      //using the data string inputs, printout the readings, process it etc... 
      }
}

当我尝试调试它时,我会收到此错误:

Please enlighten me with this error

我从调试窗口得到can't open file,显示端口打开时出现问题。

一些额外的信息:

  1. 为何选择VC ++?我也在同一个程序中使用OpenCV和一些数学计算,因此我更容易在VC ++中工作
  2. 我还用TeraTerm对我的UNO程序进行了测试,没有问题(=我的UNO没问题)
  3. 我已经使用另一个微控制器(非Arduino)对上述程序进行了测试,没有问题。
  4. 如果需要,我会上传我的UNO程序。

    提前致谢!

1 个答案:

答案 0 :(得分:1)

从CreateFile上的MSDN页面:

  

要指定大于9的COM端口号,请使用以下语法:   " \ \ COM10&#34 ;.此语法适用于所有端口号和硬件   允许指定COM端口号。