[Interest] Serial port / Bluetooth port to Android
Alex Blasche
alexander.blasche at qt.io
Wed Aug 30 08:21:43 CEST 2017
> -----Original Message-----
> From: Murphy, Sean [mailto:smurphy at walbro.com]
> Sent: Tuesday, 29 August 2017 17:16
> To: Alex Blasche <alexander.blasche at qt.io>; interest at qt-project.org
> Subject: RE: Serial port / Bluetooth port to Android
>
> > > On the Android device, we really only care about connected to the
> > > external device via Bluetooth. But does this same behavior, where
> > > Bluetooth looks like a serial device, exist under Android and I can
> > > still use QSerialPort? Or do I need some other device (i.e.
> QBluetoothSocket)?
> >
> > You have to use QBluetoothSocket. There is no other choice. At the end
> > of the day both interfaces are derived from QIODevice. "Merely" the
> > path to your QIoDevice is different.
>
> Thanks for the response.
>
> Is this just a difference of Android vs. Windows that our external BT device
> doesn't show up as a serial device under Android like it does under Windows?
The Android way of working is the same for Bluez/Linux (although with rfcomm you can achieve the same), WinRT and the Apple platforms.
> I don't think it will be a huge deal to rewrite, but 4 years ago when I started
> writing the affected class we were "only ever going to run this application on
> Windows using a USB to Serial adapter". So back then I created a class that
> inherits from QSerialPort and started coding. I think based on what you're saying
> about needing QBluetoothSocket under Android, and to make it more flexible in
> general, I should probably just change that class to inherit from QObject and
> take a
> QIODevice* so that I can swap out QSerialPort, QBluetoothSocket, or even
> QTcpSocket if needed?
Your suggestion sound like a reasonable approach. However please be aware that although most of the QIODevice instances in Qt have a common interface there are slight differences anyway. One might not support buffered reads, the next may have a different spin on what's a proper line read etc. It's not the end of the world but you want to make sure to test your code with all the various QIODevice types.
--
Alex
More information about the Interest
mailing list