Verwenden der seriellen Schnittstelle RS-232 in Android?

Lesezeit: 4 Minuten

Verwenden der seriellen Schnittstelle RS 232 in Android
rami

Ich möchte Signale über die serielle Schnittstelle mit den JavaComm-API-Klassen auf einem Android-Gerät senden und stelle mir das so vor:

1- Das Android-Gerät wäre: Archos 3.2 mit Android 2.2 und USB-Host-Modus.

2- RxTx lib-Paket mit meiner Android-App einschließen. und fügen Sie mithilfe von Android NDK nativen RxTx-Code ein.

3- ein kurzes USB-Kabel –> seriell.

Könnten Sie mir erklären, wo ich auf Probleme stoßen könnte?

Ich habe gerade die JavaCOMM ( GNU RXTX ) Bibliothek auf Android portiert. Hier ist der Link http://v-lad.org/projects/gnu.io.android/

Möglicherweise müssen Sie Ihren Kernel noch neu erstellen und möglicherweise die gemeinsam genutzte Bibliothek für Ihre Umgebung neu kompilieren. Aber das sollte Ihnen den Einstieg erleichtern.

Wie oben erwähnt, müssen Sie Gerätetreiber für jedes beliebige USB<->serielle Gerät erstellen. Viele dieser Geräte verwenden den Prolific PL2303-Chip:

http://www.qbik.ch/usb/devices/showdr.php?id=175

die der Standard-Linux-Kernel unterstützt, und das schon seit langer Zeit. Ich habe dies verwendet und es funktioniert gut, daher würde ich Ihnen empfehlen, mit USB<->seriellen Geräten zu arbeiten, die diesen Chip verwenden.

Darüber hinaus werden diese Geräte bei udev normalerweise als /dev/ttyUSB# angezeigt. Wie das mit Android passiert, weiß ich nicht, also musst du das herausfinden.

Schließlich müssen Sie den nativen RxTx-Code erstellen. Dieser Code ist ziemlich schmuddelig – ich hatte Probleme, ihn auf einem ziemlich modernen Angstrom zu erstellen, und ich habe überhaupt nicht versucht, zu kompilieren.

Im Gegensatz zu den regulären PCs werden die meisten Standard-Kernel für die Android-Geräte mit einem Minimum an kompilierten Modulen geliefert. Sie müssen den Kernel mit aktivierten Treibern für USB-Seriell-Konverter neu kompilieren. Ihr Glück hängt von dem spezifischen Gerät ab, das Sie verwenden. Viele Hersteller verletzen die GPL, indem sie den Kernel-Quellcode nicht bereitstellen. Einige Hersteller wie Motorola mit dem Droid 2 benötigen einen signierten Kernel. Dies macht es unmöglich, einen benutzerdefinierten Kernel auf das Gerät zu laden.

Auch wenn viele Geräte über einen USB-Host-Modus verfügen, müssen Sie durch die Reifen springen, um den Gerätemodus zu wechseln. Zum Beispiel erfordert Motrola Droid, dass ein spezieller Dongle in den USB-Port eingesteckt wird, bevor er eingeschaltet wird, um in den Host-Modus zu wechseln.

Hier sind einige Links für Sie, die erklären, was Sie tun müssen:

  1. „Mehr zum Droid-Host-Modus“ http://www.tombom.co.uk/blog/?p=134.

  2. „USB-Host-Modus auf Motorola Droid“, http://www.tombom.co.uk/blog/?p=124.

  • danke, ich habe das Droid-Ding gesehen, aber zumindest liefern Archos und Acer die Kernel-Quelle

    – Rami

    8. Januar ’11 um 18:51

  • auch der Droide, das Original. Mit Droid2 haben Sie kein Glück. Es sei denn, Sie bekommen Motorolla, um Ihnen die Schlüssel zu geben. 🙁

    – Vlad

    3. März ’11 um 4:04

Ja, es ist definitiv eine Katastrophe, die seriellen Geräte von der Telefonseite auf dem Android zu verwenden. Das Problem ist, dass die verschiedenen auf dem AOS vorhandenen Geräte nicht dokumentiert sind und selten mit Standard-Linux-Geräten übereinstimmen. Daher sind Sie sich nie sicher, mit wem/mit wem Sie tatsächlich sprechen, ein Gerät, eine Abstraktionsschicht (HAL, UART, PCI usw.). Hier ist eine Anleitung, wie Sie von einem extern über USB angeschlossenen PC mit einem seriellen Gerät (dem Modem) kommunizieren.

In jedem Fall, wenn Ihr Telefon den USB-Host-Modus unterstützt, muss es eine andere Möglichkeit geben, Ihren seriellen Anschluss / Ihre seriellen Geräte damit zu erreichen. Schließlich gewährleistet die Abwärtskompatibilität oft eine Art von FAX-, Telefonie- oder externer Modem-Unterstützung von Ihrem USB-Kabel. Außerdem gibt es Tethering, das auch ein virtuelles serielles Gerät enthalten kann …

Für einiges gibt es eine Anleitung Hier.

PS. Das Hauptproblem solcher Programme (wie dem von Vlad) und Anwendungen (wie Serial-Api) besteht darin, dass sie zu starke Annahmen über die Geräte-/Portnamen und die Berechtigungen machen, die zum Erreichen (Lesen/Schreiben) dieser …

Wahrscheinlich nicht genau das, was Sie suchen, aber dieses anweisbare könnte dich in die richtige Richtung weisen

Verwenden der seriellen Schnittstelle RS 232 in Android
Plaisthos

Das größte Problem ist wohl der USB->Serial Adapter:

Sie benötigen entweder einen Gerätetreiber für den USB Serial Driver, der wahrscheinlich nicht im Android-Kernel enthalten ist.

Die andere Möglichkeit besteht darin, etwas wie libusb (das möglicherweise auch auf Android portiert werden muss) und einen auf libusb basierenden User-Space-Treiber zu verwenden.

Verwenden der seriellen Schnittstelle RS 232 in Android
Ovidiu Latcu

Zuerst müssen Sie das Tablet rooten, um Lese-/Schreibzugriff auf die seriellen Ports zu erhalten.

Nachdem Sie dies getan haben, sehen Sie sich an API für serielle Android-Ports. Sie können den Quellcode herunterladen und sehen, wie er implementiert wird.

Es hat eine native Lib, die einen Dateideskriptor für die seriellen Ports abruft und dann können Sie die Ports lesen und schreiben. Normalerweise listet die App möglicherweise nicht alle verfügbaren Ports auf dem Tablet auf. Um zu sehen, wo Ihr Gerät angeschlossen ist, stecken Sie es mit HostMode in den USB und in einen Emulator geben Sie “dmesg | tail” ein. Es sollte Ihnen Details über das Gerät und den angeschlossenen Port geben.

Ich habe auch ein Archos Tablet verwendet, mein Gerät war mit “/dev/ttyACM0” verbunden.

Viel Glück!

.

212070cookie-checkVerwenden der seriellen Schnittstelle RS-232 in Android?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy