我正在开发一个程序,该程序使用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...
      }
}

当我尝试调试它时,会出现此错误:

c++ - 打开COM端口期间调试声明失败-LMLPHP

并且我从调试窗口得到can't open file,显示端口打开期间存在问题。

一些其他信息:
  • 为什么要使用VC++?我也在同一程序中使用OpenCV和一些数学计算,因此对我来说使用VC++
  • 更加容易
  • 我还使用TeraTerm测试了UNO程序,以进行数据读取(没有问题(= UNO没问题))
  • 我已经用另一个微 Controller (非Arduino)测试了上面的程序,没有问题。

  • 如果需要,我将上传我的UNO程序。

    提前致谢!

    最佳答案

    从CreateFile的MSDN页面上:

    10-04 14:28