无法向串口写入数据
Cannot write data to Serial Port
我正在尝试将数据写入串口。我这样使用:
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。所以(6443):(null):0 ((null)): qt.bluetooth.android:Socket::writeData: QBluetoothSocket::ConnectingState false
W/libA_for_w8。所以(6443):(null):0 ((null)): qt.bluetooth.android:Socket::writeData: QBluetoothSocket::ConnectingState false
D/libA_for_w8。所以(6443):. . A_for_w8 widget.cpp: 68(空隙小部件:on_plus_clicked ()): 1
D/libA_for_w8。因此,(6443):
所以这里没有写入任何内容。看起来,代码是好的,但它不能工作。你能告诉我怎么了吗?谢谢你!
公立小学我检查套接字是否打开。socket->isOpen返回true,我得到:W/libA_for_w8。so(9638): (null):0 ((null)): qt.bluetooth.android: Socket::writeData: QBluetoothSocket::UnconnectedState false
D/libA_for_w8。所以(9638):. . A_for_w8 widget.cpp: 70(空隙小部件:on_plus_clicked ()): 1
在成功编写任何内容之前,需要将套接字连接到端点。某处一定有一个正在运行的蓝牙服务,您可以使用connectToService()
连接到它。connected()
信号发出后,就可以写数据了。
QBluetoothSocket
不像QAbstractSocket
及其子类那样具有waitForConnected()
函数。这意味着你可以使用QSignalSpy
之类的东西来等待connected()
信号,或者,如果你不太关心效率,只需要一个忙碌等待循环就可以了。
正如在评论中指出的,等待事件发生是Qt主事件循环的全部意义。使用waitFor*
方法或其他事件循环是非常低效的,并且绝对违背了Qt的精神,所以最好的解决方案是在套接字连接后才写入数据,将writeData()
插槽连接到QBluetoothSocket
的connected()
信号。
- 为什么我要从串口读取垃圾?
- Boost Asio SerialPort。无法创建并打开串口服务
- 如何在QtWidget中使用c++串口发送数据
- 如何插入十六进制值并发送到串口?
- 串口打开返回 EAGAIN
- QT 5.10.1 串口不发送,为什么?
- 通过串口发送后无法获取原始值
- C++ / RS232C 串口 / 事件回调异步读取缓冲区 / 不使用线程
- 为什么Qt(4.8)串口(qextserialport)分两部分从设备读取数据
- 通过c++中的串口发送数据
- 将十六进制数据发送到串口
- 在Ubuntu中使用c++从串口读取数据到USB
- 无法向串口写入数据
- 接收在第一次读取之前被发送到串口的数据
- 通过RS232串口发送数据到条码扫描器
- 如何在c++中从串口发送和读取数据
- 在Qt中等待数据从串口到达
- 什么是c++中串口数据读取的回调函数?下面是Matlab中的一个例子
- RFID虚拟串口读取数据时超时
- Boost asio串口最初发送坏数据