История изменений
Исправление kuzulis, (текущая версия) :
...
serial->open(QIODevice::ReadWrite);
...
connect(serial, SIGNAL(readyRead()),
this, SLOT(read()));
connect(serial, SIGNAL(error(QSerialPort::SerialPortError)),
this, SLOT(errorSerail(QSerialPort::SerialPortError)));
....
Должно быть наоборот (сначала коннекты, а потом уже открывать), а то можно профукать что-нить интересное.
Плюс к этому, неплохо бы проверить код возврата open().
...
serial->flush();
...
Это не нужно (да и вообще flush не нужно использовать).
qint64 bytesWrited = serial->write(be, 7);
1. Здесь всегда bytesWrited будет > 0, т.к. данные просто добавляются к внутреннему буферу, т.е. проверять тут смысла нет. Но чтобы узнать что данные переданы (по крайней мере до кишек самой железки) есть сигнал bytesWritten(qint64).
2. Лучше делать write(ba) сразу.
qint64 bytesAvailable = serial->bytesAvailable();
Здесь данных не было и никогда не будет!
ЗЫ: А по факту, возможно для этого девайса не реализованы select/poll/ в ядре... хотя, это ну невероятно. Т.е. тут надо тебе самому отлаживать... попробуй strace или подобное что-то чтобы примерно посмотреть что передается/принимается.
Исходная версия kuzulis, :
...
serial->open(QIODevice::ReadWrite);
...
connect(serial, SIGNAL(readyRead()),
this, SLOT(read()));
connect(serial, SIGNAL(error(QSerialPort::SerialPortError)),
this, SLOT(errorSerail(QSerialPort::SerialPortError)));
....
Должно быть наоборот (сначала коннекты, а потом уже открывать), а то можно профукать что-нить интересное.
Плюс к этому, неплохо бы проверить код возврата open().
...
serial->flush();
...
Это не нужно (да и вообще flush не нужно использовать).
qint64 bytesWrited = serial->write(be, 7);
1. Здесь всегда bytesWrited будет > 0, т.к. данные просто добавляются к внутреннему буферу, т.е. проверять тут смысла нет. Но чтобы узнать что данные переданы (по крайней мере до кишек самой железки) есть сигнал bytesWritten(qint64).
2. Лучше делать write(ba) сразу.
qint64 bytesAvailable = serial->bytesAvailable();
Здесь данных не было и никогда не будет!
ЗЫ: А по факту, возможно для этого девайса не реализованы select/poll/ в ядре... хотя, это ну невероятно. Т.е. тут надо тебе самому отлаживать... попробуй strace или подобное что-то чтобы примерно посмотреть что передается/принимается.