Qt Serial Port: Android, iOS - will it work ?
-
because of a customer request:
who has used Qt Serial Port with Android and iOS where serial connection will be done via USB (iOS: lightning-to-usb-adapter)
thanks for any infos, tips, success stories ;-)
-
Hi
Well it says it has partial support
https://wiki.qt.io/Qt_Serial_Port
->http://www.qtcentre.org/threads/57928-Serial-Port-in-Android
->https://forum.qt.io/topic/34000/does-qt-support-serialport-in-android-system/20So it seems some have made it work on Android.
If you can use a FTDI chip.
https://github.com/HelloZB/QtAndroidFTDI -
Hi
Well it says it has partial support
https://wiki.qt.io/Qt_Serial_Port
->http://www.qtcentre.org/threads/57928-Serial-Port-in-Android
->https://forum.qt.io/topic/34000/does-qt-support-serialport-in-android-system/20So it seems some have made it work on Android.
If you can use a FTDI chip.
https://github.com/HelloZB/QtAndroidFTDI@mrjj thx - seems it's not working out of the box. rooting the device is no option. unfortunately this blog post isn't available anymore:
@phyatt said in Does qt support serialport in android system ?:
I put some time into getting Qt + Android + QtSerialPort to work from a windows computer. I wrote a blog post about how I went about it. It works really well when it was all done.
I also needed to do my own JNI calls, too, so I ended up copying the UsbJNIActivity and inserting my own code.
-
@mrjj thx - seems it's not working out of the box. rooting the device is no option. unfortunately this blog post isn't available anymore:
@phyatt said in Does qt support serialport in android system ?:
I put some time into getting Qt + Android + QtSerialPort to work from a windows computer. I wrote a blog post about how I went about it. It works really well when it was all done.
I also needed to do my own JNI calls, too, so I ended up copying the UsbJNIActivity and inserting my own code.
@ekkescorner
damn. sadly it was not archived either.Can i ask what the goal is ?
Maybe Bluetooth could be an option. -
@ekkescorner
damn. sadly it was not archived either.Can i ask what the goal is ?
Maybe Bluetooth could be an option.@mrjj there's a waiter lock.
employees have magnetic keys. plug in key. waiter lock device sends unique ID via USB-Serial. also sends text if released.
on the other side Google Pixel C or other Android Tablet with Qt 5.8 QQC2 app. if key detected, lists actual tasks on screen, employee marks solved ones, releases the key and goes on... next employee coming with key ...perhaps there's a converter where I can plug in the USB from waiter lock and converter sends data via BT LE or BT SPP
-
@mrjj there's a waiter lock.
employees have magnetic keys. plug in key. waiter lock device sends unique ID via USB-Serial. also sends text if released.
on the other side Google Pixel C or other Android Tablet with Qt 5.8 QQC2 app. if key detected, lists actual tasks on screen, employee marks solved ones, releases the key and goes on... next employee coming with key ...perhaps there's a converter where I can plug in the USB from waiter lock and converter sends data via BT LE or BT SPP
@ekkescorner
Ah so most likely the waiter lock will act like a virtual comport of sorts.
There is no SDK for direct interaction ? ( using raw USB)Depending on how device work, it might be possible with converter.
I assume the other end of the usb cable is also usb , not serial ?
But if anything like windows, the device will insert driver on plugin and that will
not work with a converter as far as i know.Alternatively a very cheap pc (Raspberry Pi) + usb serial + BL
http://www.usconverters.com/serial-bluetooth-adapter
Then on pc, bridge the serial from LOCk with serial from Bluetooth and
mobile devices just uses BL.
But its a 3-tier solution and and might NOT be what client wants. -
@ekkescorner
Ah so most likely the waiter lock will act like a virtual comport of sorts.
There is no SDK for direct interaction ? ( using raw USB)Depending on how device work, it might be possible with converter.
I assume the other end of the usb cable is also usb , not serial ?
But if anything like windows, the device will insert driver on plugin and that will
not work with a converter as far as i know.Alternatively a very cheap pc (Raspberry Pi) + usb serial + BL
http://www.usconverters.com/serial-bluetooth-adapter
Then on pc, bridge the serial from LOCk with serial from Bluetooth and
mobile devices just uses BL.
But its a 3-tier solution and and might NOT be what client wants.@mrjj not an easy task ;-)
as I understand it right, Qt supports Windows for Serial Port. Perhaps the only way (without using Android native) is to use a W10 Tablet where QtQuickControls2 Apps should run
-
@mrjj not an easy task ;-)
as I understand it right, Qt supports Windows for Serial Port. Perhaps the only way (without using Android native) is to use a W10 Tablet where QtQuickControls2 Apps should run
@ekkescorner
I agree. It sounds like a smaller project but soon will explode in Details. :)
Using a w10 tablet is ofc better than a pc. :) Didnt releized they are almost
as cheap as PIs now a days. -
@ekkescorner
I agree. It sounds like a smaller project but soon will explode in Details. :)
Using a w10 tablet is ofc better than a pc. :) Didnt releized they are almost
as cheap as PIs now a days.@mrjj seems I found a solution for Android and iOS :)
there's a waiter lock available supporting BT LE
https://www.jarltech.com/2007/artikel.php?language=de&gotoartikel=addistift&suche=addlockbt14
https://www.bluetooth.org/tpg/QLI_viewQDL.cfm?qid=33233got some tech info: can be used as HID or with own protocol
HID doesn't work because then on iOS the virtual keyboard disappears
But I got Characteristic UUID and Services UUID andcan listen for Notifications to detect if Key was put in or outwill provide example at github (if all works as expected ;-)
-
@mrjj seems I found a solution for Android and iOS :)
there's a waiter lock available supporting BT LE
https://www.jarltech.com/2007/artikel.php?language=de&gotoartikel=addistift&suche=addlockbt14
https://www.bluetooth.org/tpg/QLI_viewQDL.cfm?qid=33233got some tech info: can be used as HID or with own protocol
HID doesn't work because then on iOS the virtual keyboard disappears
But I got Characteristic UUID and Services UUID andcan listen for Notifications to detect if Key was put in or outwill provide example at github (if all works as expected ;-)
@ekkescorner
That could be nice solution.
The keys looks durable so if the cradle is good it should be fine. or even excellent.
Nice find :) -
@mrjj seems I found a solution for Android and iOS :)
there's a waiter lock available supporting BT LE
https://www.jarltech.com/2007/artikel.php?language=de&gotoartikel=addistift&suche=addlockbt14
https://www.bluetooth.org/tpg/QLI_viewQDL.cfm?qid=33233got some tech info: can be used as HID or with own protocol
HID doesn't work because then on iOS the virtual keyboard disappears
But I got Characteristic UUID and Services UUID andcan listen for Notifications to detect if Key was put in or outwill provide example at github (if all works as expected ;-)
@ekkescorner said in Qt Serial Port: Android, iOS - will it work ?:
@mrjj seems I found a solution for Android and iOS :)
there's a waiter lock available supporting BT LE
https://www.jarltech.com/2007/artikel.php?language=de&gotoartikel=addistift&suche=addlockbt14
https://www.bluetooth.org/tpg/QLI_viewQDL.cfm?qid=33233got some tech info: can be used as HID or with own protocol
HID doesn't work because then on iOS the virtual keyboard disappears
But I got Characteristic UUID and Services UUID andcan listen for Notifications to detect if Key was put in or outwill provide example at github (if all works as expected ;-)
Hi,
that sounds very promising. Did you get anywhere with it?We've been looking all over the place to find a suitable hardware solution for user authentication using iButton or RFID or similar tech in conjunction with iOS. All of them are either RS232, virtual RS232 via USB or HID. Nothing of that works with iOS as you pointed out already, with HID being the closest to being usable, but there is the software keyboard issue.
So this Addimat lock that supposedly supports BT communication popped up a few times before, but it always seemed like its only using BT to connect to a PC which in turn needs a driver to turn the connection into a virtual COM port again. That didn't seem useful at all.
There is no information about it anywhere, so I ordered one of these locks and will try to make it work. Of course, it would be very cool, if you could share how far you got already!
-
@ekkescorner said in Qt Serial Port: Android, iOS - will it work ?:
@mrjj seems I found a solution for Android and iOS :)
there's a waiter lock available supporting BT LE
https://www.jarltech.com/2007/artikel.php?language=de&gotoartikel=addistift&suche=addlockbt14
https://www.bluetooth.org/tpg/QLI_viewQDL.cfm?qid=33233got some tech info: can be used as HID or with own protocol
HID doesn't work because then on iOS the virtual keyboard disappears
But I got Characteristic UUID and Services UUID andcan listen for Notifications to detect if Key was put in or outwill provide example at github (if all works as expected ;-)
Hi,
that sounds very promising. Did you get anywhere with it?We've been looking all over the place to find a suitable hardware solution for user authentication using iButton or RFID or similar tech in conjunction with iOS. All of them are either RS232, virtual RS232 via USB or HID. Nothing of that works with iOS as you pointed out already, with HID being the closest to being usable, but there is the software keyboard issue.
So this Addimat lock that supposedly supports BT communication popped up a few times before, but it always seemed like its only using BT to connect to a PC which in turn needs a driver to turn the connection into a virtual COM port again. That didn't seem useful at all.
There is no information about it anywhere, so I ordered one of these locks and will try to make it work. Of course, it would be very cool, if you could share how far you got already!
@pit.garbe Hi, I'm just making it run :)
These are my first steps with QT and Bluetooth LE
(Did some BT LE and NFC APPs before on BlackBerry 10)Noticed that the Qt BT LE Example APPs are outdated and not fully featured in respect of handling all the possible errors and states.
(There was much progress and new things added for 5.7 and 5.8)
So I'm just working on a new BT LE Example app using QtQuickControls2 for Android, iOS containing- BT LE Scanner to discover devices , Services, Characteristic, Descriptors
- HearRate Example
- WeightControl Example
- WaiterLock Addimat Example
wait a week and you'll get your Addimat Waiter Lock running out of the box :)
BTW: I really like the way Qt is dealing with BT LE, but it's much work to manage all possible SIGNALS, error-codes, ... work-arounds for errors deep in Android BT GATT stack ... you'll get all of this from my upcoming BT LE Example APP
-
@pit.garbe Hi, I'm just making it run :)
These are my first steps with QT and Bluetooth LE
(Did some BT LE and NFC APPs before on BlackBerry 10)Noticed that the Qt BT LE Example APPs are outdated and not fully featured in respect of handling all the possible errors and states.
(There was much progress and new things added for 5.7 and 5.8)
So I'm just working on a new BT LE Example app using QtQuickControls2 for Android, iOS containing- BT LE Scanner to discover devices , Services, Characteristic, Descriptors
- HearRate Example
- WeightControl Example
- WaiterLock Addimat Example
wait a week and you'll get your Addimat Waiter Lock running out of the box :)
BTW: I really like the way Qt is dealing with BT LE, but it's much work to manage all possible SIGNALS, error-codes, ... work-arounds for errors deep in Android BT GATT stack ... you'll get all of this from my upcoming BT LE Example APP
@ekkescorner That sounds great! Thanks for the heads up.
I'm actually not coming here from Qt usage – we're working on an iOS app without Qt.
I only used Qt before for a desktop app.Nevertheless, I think it will be insightful to look at your example app.
-
@ekkescorner That sounds great! Thanks for the heads up.
I'm actually not coming here from Qt usage – we're working on an iOS app without Qt.
I only used Qt before for a desktop app.Nevertheless, I think it will be insightful to look at your example app.
@pit.garbe I'm also doing iOS Apps - but WITH Qt and so I'm getting the Android APP out of the box ;-)
For me QtQuickControls2 were the reason to go this way instead of using Xamarin, Ionic, Angular or iOS + Android nativeBTW: if you download a BT LE Scanner APP from Apple Store you can inspect the Addimat, find Custom Service and Characteristic. There's one with Notifications. Start Notifications and put the magnetic key in and out - watch the value
-
@pit.garbe I'm also doing iOS Apps - but WITH Qt and so I'm getting the Android APP out of the box ;-)
For me QtQuickControls2 were the reason to go this way instead of using Xamarin, Ionic, Angular or iOS + Android nativeBTW: if you download a BT LE Scanner APP from Apple Store you can inspect the Addimat, find Custom Service and Characteristic. There's one with Notifications. Start Notifications and put the magnetic key in and out - watch the value
@ekkescorner The Addimat lock arrived on Friday, and indeed, using a scanner app I could verify that it is usable in the way I intent to. Great.
I'm still looking forward to have a look at your example app, but I already want to thank you for inadvertently convincing me to buy this device after dismissing it for so long. It definitely seems to be the way to go for us :-)
-
@ekkescorner The Addimat lock arrived on Friday, and indeed, using a scanner app I could verify that it is usable in the way I intent to. Great.
I'm still looking forward to have a look at your example app, but I already want to thank you for inadvertently convincing me to buy this device after dismissing it for so long. It definitely seems to be the way to go for us :-)
@pit.garbe great to hear. Seems that my app will be ready this week. I'll let you know
-
I made some "fun" discoveries.
- Upon connecting to the Addimat lock, I always get the pairing popup.
- It makes no difference, what I do with that popup, I can still read the characteristic.
- The connection sporadically gets lost, which I can fix by reconnecting, but that shows the popup again :(
Looking closer, using the Mac OS Console.app, I discovered that, indeed, the pairing result is always negative. Depending on which button I press (Cancel, OK) and what PIN code I enter (especially, how long it is) there are several different outcomes printed to the console. All of which clearly indicate failure to pair.
Since there is, as I mentioned earlier, no data sheet for the Bluetooth version of the lock, there is also unfortunately no info about the default Bluetooth PIN. Maybe it's even by "design" that the lock never pairs. (I tried all kinds of typical default PINs, mind you).
Did you also run into these problems?
Update: I now sent an email to Addimat, asking for the PIN.
-
I made some "fun" discoveries.
- Upon connecting to the Addimat lock, I always get the pairing popup.
- It makes no difference, what I do with that popup, I can still read the characteristic.
- The connection sporadically gets lost, which I can fix by reconnecting, but that shows the popup again :(
Looking closer, using the Mac OS Console.app, I discovered that, indeed, the pairing result is always negative. Depending on which button I press (Cancel, OK) and what PIN code I enter (especially, how long it is) there are several different outcomes printed to the console. All of which clearly indicate failure to pair.
Since there is, as I mentioned earlier, no data sheet for the Bluetooth version of the lock, there is also unfortunately no info about the default Bluetooth PIN. Maybe it's even by "design" that the lock never pairs. (I tried all kinds of typical default PINs, mind you).
Did you also run into these problems?
Update: I now sent an email to Addimat, asking for the PIN.
@pit.garbe I did most work on Android, where the OS never is asking to pair.
on iOS - yes, the iOS is asking and you should NOT pair, because - as I understand this - this would pair the Addimat as HID and you're running into virtual keyboard problems.
Pairing code is 308630 - never tried if pairing one time would help on iOSI have no problems of lost connections.
just tried this again - no problem. Even if connecting also to another custom BT LE Device.
Notifications from Addimat (Key in/out) and Notifications from other device (BatteryLevel and measurement of mobile network level) all ame in perfect - even while going to other Pages of the APP.
So I'm really happy with QT BT LE.Only problem what could happen with Addimat: if you tottle the key while it is logged in sometimes the ID is lost (getting 0000000000000000) followed by sending the Key ID again.
To avoid this I'm using a Timer waiting 3 seconds before doing logout. If same Key enters again while Timer is running I ignore and continue -
After hours of comparing other code bases, where the disconnections don't happen, to mine I'm happy to announce that it was caused by a remote log viewing library that also uses Bluetooth to announce itself. Quite the discovery.
Ok, so now I don't have the disconnects anymore, but the pairing popup remains.
You said the pairing would make the Addimat act as a HID device? Uh, that's definitely not what I'd want. But it doesn't pair anyway. Maybe it can somehow be told to be ignored forever? -
After hours of comparing other code bases, where the disconnections don't happen, to mine I'm happy to announce that it was caused by a remote log viewing library that also uses Bluetooth to announce itself. Quite the discovery.
Ok, so now I don't have the disconnects anymore, but the pairing popup remains.
You said the pairing would make the Addimat act as a HID device? Uh, that's definitely not what I'd want. But it doesn't pair anyway. Maybe it can somehow be told to be ignored forever?@pit.garbe good to hear that your disconnects are gone. for the pairing question on iOS I don't know if there's a way to avoid. perhaps Addimat can add a way ro configure the device to disable HID. will ask them.
but for my use-case not so important: my app will be the only app running on Tablet whole day, so one time to cancel the pairing question isn't a real problem. also most of my customers will use large Android tablets instead of iPads and on Android there's no pairing question.