우리 하드웨어에서 FTDI 직렬 포트 칩을 사용하고 있습니다. 이제 우리는 리눅스에서 작동하는 코드를 가지고 있고 우리는 윈도우 7로 옮겼습니다. 우리는 이상한 문제를 겪습니다.qt 5.2 Windows에서 시리얼 포트 쓰기 문제 발생
문제점 : 우리는 이렇게 다른 콘솔 응용 프로그램을 실행하지 않고 직렬 포트에 데이터를 쓸 수 없습니다 : 모든 읽기와
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();
그래서 그 단지 루프를. 하드웨어는 아무것도 보내지 않으므로 읽기는 무한 루프입니다. 쓰기 프로그램을 닫은 후 실행하면 올바르게 실행됩니다.
모든 것을 읽은 후에도 모든 것이 읽히지 만 읽지 않으면 작동하지 않습니다. 우리가 뭘 잘못하고 있니? 감사합니다. .
쓰기 응용 프로그램 (표준 C posix로 작성)과 QtSerialPort 판독기가 있습니까? 그게 다야? 어느 부분을 Windows로 옮깁니 까? "OK"또는 "FAIL"중입니까? 또한 휴식도 Goto도 없으므로 영원히 while 루프를 떠나지 않을 것입니다 ... 설정에 대한 반환 값을 확인하지 않아서 성공했는지 확인하지 않습니까? 그것이 내가 옳은지 확인하는 것이 가장 먼저해야 할 일입니다. 또한 코드가 불완전하므로 수정하십시오. 또한 동기화 작성기 및 독자 예제를 git에서 실행하려고 시도 했습니까? – lpapp
또한 '&&'대신 '&'를 사용했습니다. 이 특별한 경우에 부울을 사용할 수도 있지만 논리식이 아닌 비트 단위 AND를 수행한다는 점에 유의하십시오. – lpapp
예 리더기 용 C posix 및 QtSerialPort입니다. 두 가지 콘솔 응용 프로그램. 비트 단위로 작업하려고하므로 &는 okey입니다. – user257980