Я создавал дисплей, управляемый через Bluetooth, используя Qt и raspberrypi. На raspberrypi будет работать служба Bluetooth, и когда я подключусь к BluetoothServer. Пользователь может выбрать либо отображение сообщения, либо загрузку и отображение изображения. Я использую QBluetoothSocket для отправки сообщения или файла изображения для отображения на сервере. Итак, как мне определить, какие данные отправляются? если это обычный текстовый файл или файл изображения, и действуйте соответствующим образом.
Для отправки файлов
Код: Выделить всё
// sendText to the service
void BSocket::sendMessage(const QString &message)
{
QByteArray text = message.toUtf8() + '\n';
socket->write(text);
}
// sendImage to the service
void BSocket::sendFile(const QString &fileName)
{
QImage img(fileName);
img.save(socket);
}
Код: Выделить всё
void trialSocket::read_data()
{
if (socket->bytesAvailable()) {
QByteArray ba = socket->readAll();
QMimeType dataType = db.mimeTypeForData(ba);
if (dataType.inherits(QString("text/plain"))) {
emit displayMessage(QString(ba));
} else if (QImageReader::supportedMimeTypes().contains(dataType.name().toUtf8())) {
QImage img = QImage::fromData(ba);
emit displayImage(img);
} else {
qDebug()
Источник: [url]https://stackoverflow.com/questions/78132913/how-to-detect-the-type-of-data-or-file-being-sent-in-qbluetoothsocket[/url]
Мобильная версия