Я пытаюсь записать данные в последовательный порт. Я использую этот способ:
QBluetoothSocket *socket;
socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol);
socket->open(QIODevice::WriteOnly);
QByteArray byteArr;
QDataStream out(&byteArr, QIODevice::WriteOnly);
out << 1 << '\n'; //if plusbutton is pushedm then send zero
socket.write(byteArr);
qDebug()<<socket.write(byteArr)<<endl;
Но получаю в ответ:
W/libA_for_w8.so( 6443): (null):0 ((null)): qt.bluetooth.android: Socket::writeData: QBluetoothSocket::ConnectingState false
W/libA_for_w8.so( 6443): (null):0 ((null)): qt.bluetooth.android: Socket::writeData: QBluetoothSocket::ConnectingState false
D/libA_for_w8.so( 6443): ..\A_for_w8\widget.cpp:68 (void Widget::on_plus_clicked()): -1
D/libA_for_w8.so( 6443):
Так там ничего не написано. Кажется, что код в порядке, но он не работает. Можете ли вы сказать мне, что случилось? Спасибо.
P.S.
Я проверил, что сокет открыт. socket->isOpen возвращает true, и я получаю: W/libA_for_w8.so(9638): (null):0 ((null)): qt.bluetooth.android: Socket::writeData: QBluetoothSocket::UnconnectedState false
D/libA_for_w8.so(9638): ..\A_for_w8\widget.cpp:70 (void Widget::on_plus_clicked()): -1
QSignalSpy
в нетестовом коде ужасно. МетодыwaitFor
отсутствуют, потому что они ужасны с точки зрения производительности и заставляют людей писать спагетти-код. Вы реагируете на сигналы, подключая к ним свой код (слоты/функторы), а не дожидаясь их явным образом! Цикл событий выполняет ожидание: это его единственная работа. Вы не ждете, пока что-то произойдет, вы позволяете своему коду выполняться, когда оно происходит. Гораздо чище и намного лучше работает. 22.08.2016waitFor*
, испещренными повсюду, поэтому я подумал, что это будет легко усваивается. 23.08.2016