QSerialPort open error code 10
-
@addebito said in QSerialPort open error code 10:
qDebug() << QString("Can't open %1, error code %2").arg(m_portName).arg(m_serial->error()) << m_serial->errorString();
could you please show the actual output of this statement?
-
Yes of course @Pablo-J-Rogina
"Can't open COM11, error code 10" "Parametro non corretto."
"Parametro non corretto" it's written in Italian language.
Parameter isn't correct. -
@addebito said in QSerialPort open error code 10:
UnsupportedOperationError
It is:
case ERROR_INVALID_PARAMETER: error.errorCode = QSerialPort::UnsupportedOperationError; break;
Maybe it is QSP bug, but also maybe, it is a bug in the serial-port HW firmware (if you use own USB/Serial implementation, and, e.g. it does not handle some USB class-specific callbacks). E.g. such as 'overlapped' operations, the RTS/CTS pins support and do on.
-
@KroMignon Yes of course, I've done some test and the result is the same.
With hercules, I open the port and I can communicate without any problem.
After that I close the port and close Hercules, run my QT program but doesn't open the port and give me the error 10. -
@addebito said in QSerialPort open error code 10:
After that I close the port and close Hercules, run my QT program but doesn't open the port and give me the error 10.
I don't know if it is relevant, but did you check if serial port is detected by Qt?
for(const auto &serialPortInfo : QSerialPortInfo::availablePorts()) { qDebug() << "find serial port: " << serialPortInfo.portName() << '"/" << serialPortInfo.description(); }
-
@addebito said in QSerialPort open error code 10:
I'm sorry, yes during the test I have also try to change the port number but the result is the same.
Now I'm using the same port configured as COM5.I am sorry, but I am not sure to understand you.
Do you still have same error, even when using serial port detected withQSerialPortInfo::availablePorts()
? -
Yes @KroMignon, I've the same error and I dont know how to resolve...
find serial port: "COM5" / "Dispositivo seriale USB"
"Can't open COM5, error code 10" "Parametro non corretto."I can download the source of QSerialPort and try to debug when I open it.
It could help me to investigate the real problem? -
Try to remove the setFoo() calls before open to see if it helps. If so re-add them until the error occurs again.
-
Hi @Christian-Ehrlicher, what you means with setFoo() ?
Did you mean setFlowControl ?I've try to remove it before open the com port but I get the same result.
"Can't open COM5, error code 10" "Parametro non corretto."
-
@addebito said in QSerialPort open error code 10:
Did you mean setFlowControl ?
all setXXX() - functions
-
@Christian-Ehrlicher Nope, same error.
for (const auto &serialPortInfo : QSerialPortInfo::availablePorts()) { qDebug() << "find serial port: " << serialPortInfo.portName() << "/" << serialPortInfo.description(); } m_portName = "COM5"; m_serial = new QSerialPort(); m_serial->setPortName(m_portName); // m_serial->setBaudRate(QSerialPort::Baud115200); // m_serial->setParity(QSerialPort::NoParity); // m_serial->setStopBits(QSerialPort::OneStop); // m_serial->setDataBits(QSerialPort::Data8); // m_serial->setFlowControl(QSerialPort::NoFlowControl); if (!m_serial->open(QIODevice::ReadWrite)) { qDebug() << QString("Can't open %1, error code %2").arg(m_portName).arg(m_serial->error()) << m_serial->errorString(); emit signalError(tr("Can't open %1, error code %2\n%3").arg(m_portName).arg(m_serial->error()).arg(m_serial->errorString())); return; }
find serial port: "COM5" / "Dispositivo seriale USB"
"Can't open COM5, error code 10" "Parametro non corretto." -
Ok, was just a guess... looks like you have to download the debug symbols and debug into QSerialPort.
Do you have maybe another USB-serial converter for testing? -
You can try the following WinAPI code at first:
QByteArray systemLocation = "COM5"; DWORD desiredAccess = GENERIC_READ | GENERIC_WRITE; HANDLE handle = ::CreateFile(reinterpret_cast<const wchar_t*>(systemLocation.utf16()), desiredAccess, 0, nullptr, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nullptr); if (handle == INVALID_HANDLE_VALUE) { // OOPS const DWORD error = ::GetLastError(); qDebug() << "ERROR:" << error; }
ti see what happens.
-
I can download the source of QSerialPort and try to debug when I open it.
It could help me to investigate the real problem?Yes, of course.
-
@kuzulis I get the error 2.... file doesn't exist ??
the error code 2 is really file not exixt ??Screenshot from Windows device manager:
This is the code.
DWORD desiredAccess = GENERIC_READ | GENERIC_WRITE; HANDLE handle = ::CreateFile(reinterpret_cast<const wchar_t *>("COM5"), desiredAccess, 0, nullptr, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nullptr); if (handle == INVALID_HANDLE_VALUE) { // OOPS const DWORD error = ::GetLastError(); qDebug() << "ERROR:" << error; }
-
@Christian-Ehrlicher said in QSerialPort open error code 10:
Do you have maybe another USB-serial converter for testing?
No, is not a USB serial converter but is a USB connected directly on the device/board.
I can ask my customer to give me back the fisrt board (the one that I starting to work with).
It could be the board or firmware yes.... but why with Hercules I can communicate without problems ??