Défis et recherche alternative de la bibliothèque de communication série Java RXTX

Cible

Pour ceux qui veulent une communication série avec Java. Je suis moi-même une boutique de logiciels car l'IoT est devenu populaire ces dernières années! Même si je suis amateur! J'ai du mal à commencer le travail électronique (rires) Le texte est rédigé dans l'ambiance d'un simple mémorandum, donc je pense qu'il peut y avoir des lacunes ou des lacunes, mais veuillez le lire si vous le souhaitez.

environnement

Au moment de l'enquête, la première priorité est de fonctionner dans un environnement Windows 10 64 bits. L'environnement de développement est le suivant.

RXTX Lorsque vous souhaitez établir une communication série avec Java, la bibliothèque RXTX est généralement consultée lorsque vous recherchez sur Google. RXTX se compose de deux bibliothèques, une bibliothèque Java et une bibliothèque native C / C ++, qui peuvent être téléchargées à partir de ce qui suit. Il est nécessaire de basculer la bibliothèque native en fonction de la plate-forme telle que Windows 32 bits, Windows 64 bits, Linux, mac.

Défis RXTX

J'utilise RXTX et je fais face aux défis suivants. (Peut-être qu'il y en a d'autres?)

  1. Non entretenu pendant plus de 10 ans
  2. La version des sous-espèces (2.2) et les bibliothèques natives sont également distribuées sur divers sites avec des versions légèrement différentes, et ne sont pas gérées et unifiées.
  3. En raison de l'influence de la bibliothèque native, même si je l'ai écrite en Java, elle devient dépendante de la plate-forme.

Bibliothèque alternative

Si vous rencontrez les problèmes ci-dessus, vous serez timide lorsque vous essayez de communiquer en série. .. .. "Mais je ne suis pas le seul à avoir des problèmes avec RXTX! Il doit y avoir un homme courageux qui essaie de faire quelque chose!" Alors, j'ai essayé de regarder deux choses. Lorsque j'ai exécuté l'exemple, il fonctionnait correctement sous Windows 10 64 bits, je vais donc le présenter.

purejavacomm

Quand j'ai lu l'explication, il semble que JNA (Java Native Access) ait été utilisé pour réaliser une communication série tout en garantissant l'indépendance de la plateforme. Je comprends que la bibliothèque native de RXTX a été remplacée par JNA. Les API sont similaires, car elles sont sensibles à RXTX.

Depuis la sortie de la version 1.0.3 le 2019-01, il semble qu'ils effectuent une maintenance. (Le référentiel maven au moment de la rédaction était le dernier 1.0.2)

jSerialComm

Cela semble également être une alternative à RXTX, et l'API est similaire. La bibliothèque native est intégrée au jar, et il semble que la bibliothèque utilisée soit chargée pour chaque plateforme au démarrage. En plus de Windows / Linux, il est dit qu'il prend également en charge les processeurs ARM et qu'il semble fonctionner avec Raspberry Pi. (Si vous regardez le code source, le mot-clé Android est également inclus, il peut donc fonctionner également sur Android?)

La dernière version de maintenance est publiée le 2018-12.

Évaluation

Lorsque j'ai réellement exécuté l'exemple, purejavacomm et jSerialComm étaient disponibles à partir du référentiel maven. Cela fonctionnait sans être conscient de la bibliothèque native.

Du point de vue de la liaison avec d'autres bibliothèques, les bibliothèques liées à netty sont ouvertes au public.

En termes de maintenance et de support, purejavacomm semble être bon, mais il est regrettable que netty-transport-purejavacomm --github.com ne soit pas dans le référentiel maven. Au fait. Netty-Transport-jSerialComm --github.com est introduit sur le site de la famille netty head, et il est facile à utiliser car vous pouvez utiliser le référentiel maven.

Tâches futures

À l'avenir, j'aimerais publier un exemple en utilisant purejavacomm et jSerialComm.

(2019-02-19) Publié.

Recommended Posts

Défis et recherche alternative de la bibliothèque de communication série Java RXTX
Avantages et inconvénients de Java
Bibliothèque de cache Java et politique d'éviction
Analyser et objectiver JSON à l'aide de l'annotation @JsonProperty de la bibliothèque Java Jackson
[Java / Swift] Comparaison de l'interface Java et du protocole Swift
Résumé de Java Math.random et import (calendrier)
[Java] Contenu de l'interface de collection et de l'interface de liste
Discrimination d'énum dans Java 7 et supérieur