J'ai un périphérique relativement grossier (deux ordinateurs sont connectés via le port COM) et je dois le faire fonctionner par QSerialPort
. L'idée est simple: les données vont envoyer d'un comp à un autre par port COM. Transmetteur fonctionne bien, qui a été vérifié par le logiciel côté, j'ai des problèmes avec la réception de données. Je le fais par QSerialPort
comme suit:Le signal readyRead() n'exécute pas l'emplacement
Au début, je mis en place le port:
QSerialPort *serialport = new QSerialPort();
serialport->open(QIODevice::ReadOnly);
serialport->setPortName("COM1");
serialport->setBaudRate(QSerialPort::Baud19200);
serialport->setDataBits(QSerialPort::Data8);
serialport->setParity(QSerialPort::NoParity);
et je me prépare à prendre des données comme ceci:
connect(serialport,SIGNAL(readyRead()),this, SLOT(change_gear()));
et encore change_gear fente Je n'ai rien de plus que: qDebug() < < "Les données ont été reçues",
mais cette fente n'a pas été e ver exécuté! Donc, je ne peux pas comprendre ce qui se passe mal ici et pourquoi je ne peux pas lire les données à partir de ports COM de manière facile ..
OS - Windows 8, Qt 5.8.0 MinGW 32
L'instruction suivante 'serialport-> open (QIODevice :: lecture seule);' doit être exécutée après le réglage des paramètres – eyllanesc
Current QSerialPort 5 .9 ne nécessite pas d'ouverture après la configuration des paramètres, mais il est plus pratique de le faire de cette manière. Vous pouvez modifier les paramètres à volonté une fois le port ouvert. Comment l'appareil à l'autre bout du câble va réagir est une autre question. J'ai senti que cette clarification à la question ci-dessus était justifiée car elle implique que c'est une règle dure et rapide. – guitarpicva