Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 串行连接正在打开所有端口?_C++_Mfc_Serial Port - Fatal编程技术网

C++ 串行连接正在打开所有端口?

C++ 串行连接正在打开所有端口?,c++,mfc,serial-port,C++,Mfc,Serial Port,我正在用MFC创建UART接口,该接口包括开放连接、发送消息和接收消息。 我以为我已经很好地打开了端口,检查后,我的D9连接器位于COM5上,它成功地打开了。 问题是,即使将连接从COM5更改为不合理的COM535,我仍然没有收到任何错误 我试过几种COM端口,有些合理,有些不合理 以下是初始化与坏COM的连接的方式: Serial::Serial(CString &commPortName, int bitRate) { commHandle = CreateFile(L"\\

我正在用MFC创建UART接口,该接口包括开放连接、发送消息和接收消息。 我以为我已经很好地打开了端口,检查后,我的D9连接器位于COM5上,它成功地打开了。 问题是,即使将连接从COM5更改为不合理的COM535,我仍然没有收到任何错误

我试过几种COM端口,有些合理,有些不合理

以下是初始化与坏COM的连接的方式:

Serial::Serial(CString &commPortName, int bitRate)
{
    commHandle = CreateFile(L"\\\\.\\COM535", GENERIC_READ|GENERIC_WRITE, 0,NULL, OPEN_EXISTING, 
        FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED , NULL);

    if(commHandle == INVALID_HANDLE_VALUE) 
    {
        throw("ERROR: Could not open com port");
    }
    else 
    {
        // set timeouts
        COMMTIMEOUTS cto = { MAXDWORD, 0, 0, 0, 0};
        DCB dcb;
        if(!SetCommTimeouts(commHandle,&cto))
        {
            Serial::~Serial();
            throw("ERROR: Could not set com port time-outs");
        }

        // set DCB
        memset(&dcb,0,sizeof(dcb));
        dcb.DCBlength = sizeof(dcb);
        dcb.BaudRate = bitRate;
        dcb.fBinary = 1;
        dcb.fDtrControl = DTR_CONTROL_ENABLE;
        dcb.fRtsControl = RTS_CONTROL_ENABLE;

        dcb.Parity = NOPARITY;
        dcb.StopBits = ONESTOPBIT;
        dcb.ByteSize = 8;

        if(!SetCommState(commHandle,&dcb))
        {
            Serial::~Serial();
            throw("ERROR: Could not set com port parameters");
        }
    }
}

当我连接到COM5时,一切正常,但我预计连接到COM535时会出现问题,但我没有,这不是问题的本来面目。

问题是我自己的工作场所问题,重新启动了我的电脑,我开始收到坏COM端口的错误。

因为您使用的是MFC,我假设您使用的是Windows操作系统。这不是一个C++问题,更是Windows API的一个问题。您必须查找该函数,找出提供无效COM编号时产生的错误。已经检查过了,我在CUARTDlg的构造函数中设置了Serial data member,当我使用Serial类的某个方法时,连接已建立,对于连接中的错误尝试,编译器将返回comHandle=0xfffffffff,但它没有返回