Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.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/8/grails/5.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++ windows 7的qt 5.2串行端口写入问题_C++_Windows_Qt_Ftdi_Qtserialport - Fatal编程技术网

C++ windows 7的qt 5.2串行端口写入问题

C++ windows 7的qt 5.2串行端口写入问题,c++,windows,qt,ftdi,qtserialport,C++,Windows,Qt,Ftdi,Qtserialport,我们在硬件中使用FTDI串行端口芯片。现在我们有了Linux中的工作代码,我们转向了Windows7。我们遇到了一些奇怪的问题 问题是: 在不运行其他控制台应用程序的情况下,我们无法将数据写入串行端口,这些控制台应用程序执行以下操作: serial.setPortName("COM3"); if (serial.open(QIODevice::ReadWrite)) { bool success = serial.setBaudRate(QSerialP

我们在硬件中使用FTDI串行端口芯片。现在我们有了Linux中的工作代码,我们转向了Windows7。我们遇到了一些奇怪的问题

问题是: 在不运行其他控制台应用程序的情况下,我们无法将数据写入串行端口,这些控制台应用程序执行以下操作:

 serial.setPortName("COM3");
        if (serial.open(QIODevice::ReadWrite)) {
            bool success = serial.setBaudRate(QSerialPort::Baud9600) &
            serial.setStopBits(QSerialPort::OneStop) &
            serial.setDataBits(QSerialPort::Data8) &
            serial.setParity(QSerialPort::NoParity) &
            serial.setFlowControl(QSerialPort::NoFlowControl);
            qDebug() << "Connected to usb device: " << (success ? "OK" : "FAIL");

           while(true) {
                if(serial.waitForReadyRead(-1)) {
                    QByteArray out = serial.readAll();
                    for(int i=0; i< out.length(); i++) {
                        qDebug() << (int) out[i];
                    }
                }
            }
            serial.close();
serial.setPortName(“COM3”);
if(serial.open(QIODevice::ReadWrite)){
bool success=serial.setBaudRate(QSerialPort::Baud9600)&
串行.setStopBits(QSerialPort::OneStop)&
serial.setDataBits(QSerialPort::Data8)&
serial.setParity(QSerialPort::NoParity)&
serial.setFlowControl(QSerialPort::NoFlowControl);

qDebug()我发现QT串行端口软件需要处理QT事件才能工作。 在读取之前将qApp->processEvents()放入循环中使其对我起作用


(Windows-7上的QT 4.8.5)

我们在使用FTDI芯片的板的应用程序中遇到了类似的问题。我们尝试以19200波特/秒的速度写入字节,但实际速度约为1200波特/秒(使用示波器查看)。问题是在写入一个字节后立即关闭串行端口。只需使用QThread::msleep(5)等待关闭端口前有帮助。似乎设备在关闭操作期间得到重置或其他操作,并且发送的最新字节带有假波特率和其他参数。

您有一个写应用程序(用标准C posix编写)和一个QtSerialPort读卡器?是吗?您正在移动到Windows的哪个部分?您得到的是“OK”还是“FAIL”?此外,您也从未离开永久while循环…因为没有中断或转到…为什么不检查设置的返回值以查看它们是否成功?如果我是您,则首先要做的是确保其正确性。此外,您的代码不完整,请对此进行修改。此外,您是否尝试运行同步写入git中的er和reader示例?另外,您使用了“&”而不是“&&”。在这种特殊情况下,它可能适用于布尔值,但请注意,您正在执行位AND,而不是逻辑。是的,这是C posix和QtSerialPort for reader。两个不同的控制台应用程序。我正在尝试执行位AND操作,所以是一个(&AND)。我尝试使用此示例进行调试,但由于写入而拒绝访问。请显示谁您得到的输出包括您尝试运行的命令。此外,您是否作为管理员尝试过,以防万一?
char* input;
input = new char[size+3];
QByteArray bytearr;

for(int i=0;i<size+2;i++) {
    input[i] = (char) package[i];
    bytearr.append((unsigned char) package[i]);
}


QString serialPortName = "COM3";
QSerialPort serialPort;
serialPort.setPortName(serialPortName);
serialPort.open(QIODevice::ReadWrite);
serialPort.write(bytearr);
serialPort.flush();
serialPort.close();