utiliser le port série RS-232 sur android?

je veux envoyer des signaux via un port série en utilisant les classes API JavaComm sur un appareil Android, et voici comment je l'imagine:

1 - L'appareil Android serait: Archos 3.2 qui a android 2.2 et le mode hôte USB.

2 - inclure RxTx lib paquet avec mon application Android. et inclure le code natif RXTX en utilisant Android NDK.

3-un court câble qui est usb -- > série.

pourriez-vous m'expliquer où je pourrais rencontrer des problèmes?

18
demandé sur gobernador 2011-01-07 03:58:41

8 réponses

je viens de transférer la bibliothèque JavaCOMM (GNU RXTX ) à L'Android. Voici le lien http://v-lad.org/projects/gnu.io.android/

Vous pourriez encore besoin de recompiler votre noyau et peut-être recompiler la bibliothèque partagée pour votre environnement. Mais cela devrait vous obtenir a commencé.

12
répondu Vlad 2011-03-03 04:07:01

comme indiqué ci-dessus, vous aurez besoin de trouver des pilotes de périphérique pour N'importe quel périphérique USB< - >Série que vous avez. Beaucoup de ces appareils utilisent la puce PL2303:

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

que le noyau linux stock supporte et a depuis longtemps. J'ai utilisé ceci et cela fonctionne très bien, donc je vous recommande de coller avec USB<->les périphériques série qui utilisent cette puce.

au-delà de cela, avec udev ces les périphériques apparaissent normalement sous / dev / ttyUSB#. Comment ça se passe avec Android, Je ne sais pas, donc vous aurez besoin de comprendre ça.

enfin, vous devrez construire le code natif RxTx. Ce code est assez croustillant - j'ai eu des problèmes pour le construire sur un Angstrom assez moderne, et je n'essayais pas du tout de recompiler.

3
répondu TazMainiac 2011-01-13 23:19:52

Contrairement aux PC réguliers, la plupart des noyaux de stock pour les appareils android sont livrés avec un minimum de modules compilés. Vous devez recompiler le noyau avec les pilotes activés pour les convertisseurs USB en série. Votre chance dépend du dispositif spécifique que vous utilisez. Beaucoup de fabricants violent la GPL, en ne fournissant pas le code source du noyau. Certains produits comme Motorola avec le Droid 2 nécessitent un noyau signé. Ce qui rend impossible le chargement du noyau personnalisé sur le périphérique.

en outre, bien que de nombreux périphériques aient le mode hôte USB, vous devez sauter à travers les cerceaux pour passer le mode périphérique. Par exemple Motrola droid nécessite un dongle pour être branché dans le port USB avant d'allumer pour passer en mode hôte.

Voici quelques liens pour vous expliquer ce que vous devez faire:

  1. "Plus d'informations sur Droid en mode hôte," http://www.tombom.co.uk/blog/?p=134.

  2. " USB Mode hôte sur Motorola Droid,"http://www.tombom.co.uk/blog/?p=124.

2
répondu Vlad 2011-01-08 07:04:04

Oui, c'est vraiment un gâchis d'utiliser les appareils de série à partir du téléphone sur le côté Android. Le problème est que les différents périphériques présents sur L'AOS ne sont pas documentés, et coïncident rarement avec ceux de Linux standard. Ainsi, vous n'êtes jamais sûr de ce à quoi / à qui vous parlez réellement, d'un périphérique, d'une couche d'abstraction (HAL, UART,PCI etc.). Voici un tutoriel sur la façon de parler à un périphérique série (le modem) à partir d'un PC externe USB connecté.

dans tous les cas, si votre téléphone supporte Mode hôte USB, il doit y avoir un autre moyen d'atteindre votre port/périphériques série en utilisant cela. Après tout, la rétrocompatibilité assure souvent une sorte de FAX, de téléphonie ou de support de modem externe à partir de votre câble USB. Il y a aussi tehtering qui peut aussi contenir un périphérique série virtuel...

Il y a un tutoriel pour certains de ce ici.

PS. Le principal problème de tels programmes (comme celui de Vlad) et applications (comme serial-api) sont qu'ils faites des suppositions trop fortes sur les noms de périphériques/ports et les permissions nécessaires pour les atteindre (lire / écrire)...

2
répondu not2qubit 2012-01-31 16:57:10

Probablement pas exactement ce que vous cherchez, mais ce instructable pourriez vous diriger dans la bonne direction

1
répondu Stewart Murrie 2011-01-07 01:14:49

le plus gros problème est probablement L'Adaptateur Série USB ->:

vous avez besoin soit d'un pilote de périphérique pour le pilote Série USB, qui n'est probablement pas inclus dans le noyau android.

L'autre option est d'utiliser quelque chose comme libusb (qui peut être porté à android) et un espace utilisateur pilote basé sur libusb.

1
répondu plaisthos 2011-01-07 22:59:42

je l'ai fait. Vous avez besoin de: 1. La racine de l'appareil.

  1. créez votre propre module pour le ciseau USB spécifique que vous êtes sur le point d'utiliser:construction du module du noyau pour Android

  2. je recommande d'utiliser la bibliothèque port usb-serial-for-android, dont le pilote PL2303 a déjà été implémenté: https://code.google.com/r/felixhaedicke-usb-serial-for-android

0
répondu Vaiden 2017-05-23 10:27:46

ce que vous devez faire en premier lieu est de root la tablette afin d'obtenir L'accès en lecture/écriture aux ports série.

Après vous faites cela prendre un coup d'oeil à Android Serial Port API. Vous pouvez télécharger le code source et voir comment il est mis en œuvre.

il a une lib natif qui obtient un descripteur de fichier vers les ports série et ensuite vous pouvez lire et écrire dans les ports. Habituellement l'application ne peut pas énumérer tous les ports disponibles sur la tablette. Pour voir où est votre appareil connecté, branchez-le dans L'USB avec le code HostMode, et dans un émulateur de type "dmesg | tail". Il devrait vous donner des détails sur l'appareil, et le port qui est connecté.

J'ai aussi utilisé une tablette Archos, l'appareil de mine était connecté à"/dev / ttyACM0".

Bonne Chance!

-1
répondu Ovidiu Latcu 2011-06-08 13:54:58