PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2025 → [WinDev 21] Java, Raspberry, RXTX et fonctions de gestion des ports séries
[WinDev 21] Java, Raspberry, RXTX et fonctions de gestion des ports séries
Iniciado por fred.leudon, dez., 31 2015 8:48 AM - 49 respostas
Membro registado
14 mensagems
Publicado em dezembro, 31 2015 - 8:48 AM
Bonjour,

Je rencontre les plus grandes difficultés à communiquer via les fonctions natives de gestion des ports séries de WinDev dans une application Java tournant sur un Raspberry (rasbian)

Voici mon code:

nPort est un entier
Trace("Ouverture du port série")
// Ouverture du Port série
nPort = sOuvre("/dev/ttyUSB0", 4096, 4096)
SI ErreurDétectée ALORS
Trace(ErreurInfo(errComplet))
SINON
// Paramétrage d'E/S
sFixeParamètre(nPort, 115200, 1, 8, 0)
// Insérez votre code ici
bufCmd est un Buffer = "$GV*C1"+RC
Trace("Envoi de la commande "+bufCmd)
nNbcar est un entier = sEcrit(nPort,bufCmd)
Trace("Nb caractères écrits : "+nNbcar)
nNbcar = sDansFileEntrée(nPort)
Trace("Nb car dans buffer d'entrée : "+nNbcar)
bufRetour est un Buffer = sLit(nPort,nNbcar)
Trace("$GV*C1 : "+bufRetour)
sFerme(nPort)
FIN


et voici la trace obtenue






En utilisant une procédure en Java, cela fonctionne parfaitement .... mais c'est lourd à gérer ....

Je suis preneur de toute info me permettant de résoudre ce problème.

Joyeuses fêtes.
Membro registado
244 mensagems
Publicado em janeiro, 24 2016 - 9:20 AM
Bonjour Frederic,

Malheureusement je ne pourrais pas t'aider mais je profite de ton post car j'aimerais bien developer des petites applications bénéficiant de la puissance d'un Raspberry et je cherche qqun qui pourrait m'aider commencer en me conseillant sur le choix du matériel et les premiers pas pour entrer dans ce petit monde.

Ma première idée de projet pour commencer simple et d'utiliser un Raspberry comme sonde de température et de la communiquer avec une application WD ou WM par exemple.

Je me suis commandé un kit de démarrage Raspberry qui devrait arriver cette semaine, je dispose déjà de WD,WM et WB. J'ai déjà trouvé des tutos qui expliquent comment démarrer le Raspberry et installer un serveur Apache. Et c'est ensuite ou j'aurais besoin d'une petite aide pour les premières manipulations. J'ai déjà parcouru la LST 96 avec l'exemple fourni mais je pense que ça va pas être aussi simple que ça quand on démarre avec ce petit appareil :-)

Si jamais par avance merci pour ton aide

Cordialement

Steve
Membro registado
102 mensagems
Publicado em janeiro, 25 2016 - 5:39 AM
Bonjour,

Comment fais-tu pour lancer une appli java sur Raspberry ?
- tu lance le .jar ?
Quelles manipulations sont à faire sur le Rasberry pour pouvoir le faire ?

Merci de ton aide

--
Cordialement.

Karl
Membro registado
244 mensagems
Publicado em janeiro, 25 2016 - 10:17 AM
Bonjour,

Effectivement si on peut passer par l'éxecution d'une appli java je pense que ca simplifierait le processus et eviterait toutes les couches pour communiquer avec des applis tierce sur d'autre appareils.

Steve
Membro registado
14 mensagems
Publicado em janeiro, 25 2016 - 7:21 PM
Le raspberry se comporte comme une machine sous Linux.

On y fait tourner des archives Java.

La ligne de commande est sensiblement la suivante : Java -jar monarchive.jar
Membro registado
367 mensagems
Publicado em janeiro, 25 2016 - 8:47 PM
Bonsoir
ou as tu placé ton jar RXTX?

--
Dominique "QNX" Lecocq
IC Industrie - Binary Activity
Développement enfoui - M2M
Membro registado
14 mensagems
Publicado em janeiro, 26 2016 - 4:07 AM
Dans le même répertoire que celui de mon archive WinDev.
Membro registado
367 mensagems
Publicado em janeiro, 26 2016 - 8:50 AM
bon, et bien désolé, nous avons aussi des applis linux java, ça fonctionne.
le problème est souvent un problème de path, ou de version de jar.
Quel est ton pb exactement?
tu n'as aucun message d'erreur?

--
Dominique "QNX" Lecocq
IC Industrie - Binary Activity
Développement enfoui - M2M
Membro registado
244 mensagems
Publicado em janeiro, 26 2016 - 8:51 AM
Bonjour et Merci Frédéric pour vos réponses à ses questions de débutants.

Si j'ai bien compris

1 - Depuis WD je créé une application au format Archive java
2 - Je la copie physiquement dans le Raspberry
3 - à l'aide d'une ligne de commande je l'execute

Sans abuser et question de tout de suite commencer à comprendre et travailler sur du concret, aurais-tu un petit bout de code WD qui permettrait simplement d'allumer une LED via un simple bouton poussoir ? Ce petit bout de code me permettrait de comprendre comment en pratique envoyer un signal et surtout récupérer un signal ?

Par avance merci et bon début de journée, et encore désolé pour nos questions d'ultra-débutants, mais j'ai compris que dans tout nouvel apprentissage si tu n'as pas tout de suite les bons interlocuteurs ou "conseilleurs" tu peux vite être dégouté.

Bonne journée

Steve
Membro registado
367 mensagems
Publicado em janeiro, 26 2016 - 9:15 AM
Je pense que tu as essayer de délocker le fichier?
perso je pense à un problème de version de la lib RXTX

--
Dominique "QNX" Lecocq
IC Industrie - Binary Activity
Développement enfoui - M2M
Membro registado
367 mensagems
Publicado em janeiro, 26 2016 - 9:16 AM
en executant le jar en sudo? tu as le même problème?

--
Dominique "QNX" Lecocq
IC Industrie - Binary Activity
Développement enfoui - M2M
Membro registado
244 mensagems
Publicado em janeiro, 30 2016 - 6:23 PM
Bonjour à tous,

Ca y est je me suis lancé, j'ai un Raspberry et commence à faire mumuse avec.... bon j'en suis juste au stade ou j'arrive à allumer une LED via une ligne de commande "gpio write 3 1", je sais ça fait cher le gadget pour "juste" allumer un voyant :-)

Ma question est simple et j'espère que la réponse aussi...

est-il possible de créer une appli java sous WD ou WM qui comme "sous-entendu" dans l'exemple de la LST 96 peut executer cette commande gpio en étant installé sur le raspberry ? J'ai tenté avec la fonction execute() comme pour un site Webdev mais cette commande ne fonctionne pas en WD ou WM

Merci pour vos retours


Steve
Membro registado
367 mensagems
Publicado em janeiro, 31 2016 - 10:09 AM
Possible oui. Simple oui si maîtrise java et linux

--
Dominique "QNX" Lecocq
IC Industrie - Binary Activity
Développement enfoui - M2M
Membro registado
244 mensagems
Publicado em fevereiro, 01 2016 - 8:50 AM
Effectivement après de longue heures, des tutos, des experimentations, ca y est j'arrive à piloter une lampe depuis mon iPhone (avec retour d'état), et ça fonctionne assez bien. le but étant d'avoir une télécommande domotique adapté à mes besoins et surtout très design :-) Je suis assez content de la réactivité car il n'y a aucun latence, ni au lancement de l'application, ni a l'exécution des commandes d'allumage extinction.

Pour communiquer entre l'application WM et le Raspberry, j'ai opté pour l'installation d'un serveur apache + PHP et j'ai ecrit une page PHP que j'appelle via une requête POST depuis IOS, (incluant les commandes en ligne via exec("GPIO WRITE 22 1"), exec("GPIO READ 22"),...

Prochaine étape de mon apprentissage est de piloter ce même relais à distance, je vais tester les émetteurs/récepteurs 433Mhz ...


J'ai juste un petit soucis avec le capteur de température DHT 22 qui me donne bien les infos directement en ligne de commande sur le Raspberry, mais quqnd j'utilise une requette POST cela ne m retourne rien, je suppose que c'est lié au délai que met le capteur à retourner ses valeurs... je vais creuser et probablement passer par une interrogation en 2 étapes (envoi de la demande, stockage du resultat dans un fichier puis lecture de ce fichier)



Steve
Membro registado
102 mensagems
Publicado em fevereiro, 02 2016 - 12:03 AM
Bonjour,

J'ai fait un bout d'appli Java pour m'amuser.
Dans quel dossier du Raspberry dois-je mettre le .jar généré pour pouvoir le lancer avec la commande : Java -jar MonAppli.jar ?

Je sèche un peu et tourne en rond, si quelqu'un pouvais m'aiguiller.

D'avance merci

--
Cordialement.

Karl
Membro registado
367 mensagems
Publicado em fevereiro, 02 2016 - 8:49 AM
Steve a écrit :
> Effectivement après de longue heures, des tutos, des experimentations, ca y est j'arrive à piloter une lampe depuis mon iPhone (avec retour d'état), et ça fonctionne assez bien. le but étant d'avoir une télécommande domotique adapté à mes besoins et surtout très design Je suis assez content de la réactivité car il n'y a aucun latence, ni au lancement de l'application, ni a l'exécution des commandes d'allumage extinction.

Super, bienvenu dans le monde des IOT, c'est une des facettes importante de notre activité.


Pour communiquer entre l'application WM et le Raspberry, j'ai opté pour l'installation d'un serveur apache + PHP et j'ai ecrit une page PHP que j'appelle via une requête POST depuis IOS, (incluant les commandes en ligne via exec("GPIO WRITE 22 1"), exec("GPIO READ 22"),...


Bien, mais on peut faire mieux, en direct.
monter un serveur apache pour faire ça c'est un peu lourd, le python est bien mieux adapté dans ce cas.

> Prochaine étape de mon apprentissage est de piloter ce même relais à distance, je vais tester les émetteurs/récepteurs 433Mhz ...

Là ce n'est plus la même bière, il va te falloir un protocole robuste. Attention il te faudra surement une paire E/R (selon le modèle) sur chaque device si tu veux faire du bi-directionnel.


J'ai juste un petit soucis avec le capteur de température DHT 22 qui me donne bien les infos directement en ligne de commande sur le Raspberry, mais quqnd j'utilise une requette POST cela ne m retourne rien, je suppose que c'est lié au délai que met le capteur à retourner ses valeurs...


essaye de une requete de type long polling, je ne sais pas comment marche ton appli ios, mais en gros, tu dois avoir une emmission, et une attente de retour sur une fonction de call back
N'oublie pas, tu es totalement asynchrone

un petit logiciel sympa, que tu peux utiliser pour tes coms sur raspi..."socat", un truc assez magique

> Steve

Bon Dev.

PS : j'ai lancé un appel à contribution il y a qq semaines autour d'un projet MQTT (client en WL) peut être serais tu intéressé?

--
Dominique "QNX" Lecocq
IC Industrie - Binary Activity
Développement enfoui - M2M
Membro registado
244 mensagems
Publicado em fevereiro, 02 2016 - 10:12 AM
Bonjour Dominique et merci pour ta réponse.

Je suis fortement interéssé par ce que tu dis dans le sans ou si je peux éviter un serveur Apache pour communiquer avec le Raspberry ça serait ...moins lourd, quoi que je l'admet une fois installé ça tourne pas mal. Que me conseillerais-tu comme communication en direct ?

Pour les émetteurs j'ai commandé un peu à l'arrache car sous l'euphorie de vouloir tester diverses technos pour commander à distance des prises (si tu as une solution ou conseil de prises toutes faites avec ce qu'il faut pour les commander via le RP et dans l'absolue via un appli WM ou WD je suis preneur). le plus dur étant de trouver le bon materiel et surtout les bonnes méthodes pour faire dialoguer tout ça.

Pour l'appel à contribution, pourquoi pas, pourrais-tu m'envoyer par mail les infos et les liens je vais y jeter un oeil : steveroselmac@mac.com


PS : hier en voulait tenter de régler mon soucis j'ai vu qu'il pouvait y avoir un soucis de droit pour lancer le programme python depuis une page web et donc ils conseillaient de modifier le fichier etc/sudoers et manque de pot j'ai du faire une erreur dans la saisie car maintenant chaque commande sudo me fait une erreur :-( ...bienvenue dans le monde Linux :-) donc je suis bon pour réinstaller le binz mais dans l'ensemble ça me dérange pas trop car quand je vois que je n'ai pas trop galéré à le mettre en route je suis confiant, et puis c'est en prenant les pieds dans le tapis qu'on apprend à marcher :-)

Encore merci pour ta contribution

Steve
Membro registado
367 mensagems
Publicado em fevereiro, 02 2016 - 11:22 AM
pour l'appel à contribution, tapes MQTT dans le moteur de recherche du forum
Pour la com en direct, le plus simple c'est un module python qui écoute un port, traite ta demande et réponds ;)
ça se trouve facile sur le net.

--
Dominique "QNX" Lecocq
IC Industrie - Binary Activity
Développement enfoui - M2M
Membro registado
367 mensagems
Publicado em fevereiro, 02 2016 - 11:29 AM
un peu de python pour l'accès au port GPIO
http://deusyss.developpez.com/tutoriels/RaspberryPi/PythonEtLeGpio/

le code pour un simple server http rest python
https://mafayyaz.wordpress.com/2013/02/08/writing-simple-http-server-in-python-with-rest-and-json/

un mix des 2 qq , de l'huile de coude et de cerveau.....

Bon dev.

PS : bienvenu dans le monde magique de Python.

--
Dominique "QNX" Lecocq
IC Industrie - Binary Activity
Développement enfoui - M2M
Membro registado
244 mensagems
Publicado em fevereiro, 02 2016 - 2:28 PM
Merci pour ces informations, j'ai commencé à jeter un oeil et effectivement l'utilisation d'un simple programme écoutant les sockets pourraient dans un premier temps et pour mes besoins basiques faire l'affaire.
Publicado em março, 16 2016 - 4:22 PM
"ÿÿÿÿÿÿÿÿÿÿ" a exprimé avec précision :
Bonjour,

Je rencontre les plus grandes difficultés à communiquer via les fonctions
natives de gestion des ports séries de WinDev dans une application Java
tournant sur un Raspberry (rasbian)

Voici mon code:

nPort est un entier
Trace("Ouverture du port série")
// Ouverture du Port série
nPort = sOuvre("/dev/ttyUSB0", 4096, 4096)[/quote]

Il y a une erreur dans ton code, sOuvre renvoie 1 ou 0 : le port ouvert
ou fermer
tu ne peux pas utiliser nPort pour récuperer les données

[quote]SI ErreurDétectée ALORS
Trace(ErreurInfo(errComplet))
SINON
// Paramétrage d'E/S
sFixeParamètre(nPort, 115200, 1, 8, 0)
// Insérez votre code ici
bufCmd est un Buffer = "$GV*C1"+RC
Trace("Envoi de la commande "+bufCmd)
nNbcar est un entier = sEcrit(nPort,bufCmd)
Trace("Nb caractères écrits : "+nNbcar)
nNbcar = sDansFileEntrée(nPort)
Trace("Nb car dans buffer d'entrée : "+nNbcar)
bufRetour est un Buffer = sLit(nPort,nNbcar)
Trace("$GV*C1 : "+bufRetour)
sFerme(nPort)
FIN


et voici la trace obtenue






En utilisant une procédure en Java, cela fonctionne parfaitement .... mais
c'est lourd à gérer ....

Je suis preneur de toute info me permettant de résoudre ce problème.

Joyeuses fêtes.


--
Cordialemnt

Franck DUMONT
Membro registado
14 mensagems
Publicado em março, 16 2016 - 6:11 PM
Merci, je vais tester en stipulant le port à chaque appel.
Publicado em maio, 05 2016 - 10:48 PM
Bonjour,
Depuis quelques temps j'essayer de communiquer avec un Raspberry et un arduino, mais sans succes
J'indique bien dans l'execution du programme la librairie RXTX native:

java -Djava.library.path=/usr/lib/jni -cp /usr/share/java/RXTXcomm.jar -jar /home/pi/windev_prg/testRS.jar


j'ouvre le port avec :
nPort est un entier
nPort = sOuvre("/dev/ttyACM0", 4096, 4096)
(SI ErreurDétectée) me renvoie aucun probleme
je fixe les parametres de com
sFixeParamètre(nPort, 9600, 0, 8, 0, Faux, Faux, Faux)
la communication a l'air de s'établir, car a ce moment la l'arduino fait un reset comme sous l'IDE
puis j'envoie une commande de lecture char(6):
sEcrit(nPort,"6") //demande serie

mais la, RIEN, l'arduino devrais m'afficher sur son LCD cette demande comme sur le monitoring de l'IDE sous windows, mais il reste muet!
si je trace nPort, il est egal a zero, est sa je trouve pas sa normal !
Une idée, peut etre ?
Merci pour votre aide
Membro registado
367 mensagems
Publicado em maio, 06 2016 - 10:06 AM
Verifies su tu n'envoie pas de l Unicode pas hasard. ..

--
Dominique "QNX" Lecocq
IC Industrie - Binary Activity
Développement M2M, Embarqué
SlooBloo Project.
icindus@gmail.com
gsm : +33 650 000 329
Publicado em maio, 06 2016 - 11:03 AM
Dominique Lecocq a écrit :
Verifies su tu n'envoie pas de l Unicode pas hasard. ..


Merci pour ta reponse rapide.
Tu voudrais dire peut etre que j'enverais le Char(6) au lieu du caractere ascii 54 ?
Comment envoyer donc l'ascii 54 ?
merci
Publicado em maio, 06 2016 - 5:01 PM
Bonjour Jean Luc,

Tu voudrais dire peut etre que j'enverais le Char(6) au lieu du
caractere ascii 54 ?

non, il veut dire que si tu boucles sur les caractères d'une chaine et
que tu les envoyer octet par octet, et que ta chaine est déclarée en
unicode, un caractère sur deux sera un zéro.

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Plus d'information sur http://fabriceharari.com
Membro registado
12 mensagems
Publicado em maio, 12 2016 - 1:51 PM
puis j'envoie une commande de lecture char(6):
sEcrit(nPort,"6") //demande serieFabrice Harari a écrit :

non, il veut dire que si tu boucles sur les caractères d'une chaine et
que tu les envoyer octet par octet, et que ta chaine est déclarée en
unicode, un caractère sur deux sera un zéro.


Merci Fabrice pour aide, mais non sa fonctionne toujours pas,
j' ecrit exactement sa :
Trace("Envois 6 sur port "+NumériqueVersChaîne(nPort))
bufCom est un Buffer ="6"
sEcrit(nPort,bufCom) //demande serie

rien n'y fait, j' ai demande de l'aide aussi sur le support "Windev" mais sans grand changement
Je commence vraiment a desesperer, a ce demander si je vais pas finir par developper completement en python
S'est dommage car ce n'est que le debut d'une appli que j'ai deja crée sous windows, et qui fonctionne tres bien !
j'aimerai bien savoir quand meme, qu'est ce que retourne 'Souvre' avec ttyACM0, car moi s'est toujours 0
Publicado em maio, 12 2016 - 2:58 PM
Bonjour Jean Luc,

-SI- tu es en unicode, "6" est en unicode et donc représente DEUX octets
6 et 0

C'est pour ca qu'il faut utiliser des chaines ANSI
MaChaineANsi est chaine ansi="6"

et envoyer machaineansi


Je te conseille de lire un peu sur le web sur les chaines ansi et
unicode, parceque le problème existe quel que soit le language utilisé


Cordialement

--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Plus d'information sur http://fabriceharari.com
Membro registado
12 mensagems
Publicado em maio, 19 2016 - 9:49 AM
Bonjour a tous
Je tiens a vous remercier ainsi qu'a l'equipe de PCSOFT pour l'aide que vous m'avaient donnée dans l'orientation de mes recherches sur le probleme RS232 des Rasberry Pi 3. :merci:

En effet, 3 choses a savoir sur le Pi3
Malgré l'install du pack rxtx par la methode standart " sudo apt-get install librxtx-java", les librairies ne sont pas les bonnes.

1/le Pi 3, utilise un processeur ARM V7. Il faut absolument telecharcher la bonne librairie native pour ARM :

https://git.itm.uni-luebeck.de/bimschas/motap-tmp/blob/8ae38f61a12752b82d14247883215922fde106d0/serial/src/main/resources/armv7/librxtxSerial.so

Ensuite, recopier ce fichier dans son dossier nominatif :

pi@raspberrypi:/ $ cd /home/pi/partage/RXTX_ARMV7/librxtxSerial.so
pi@raspberrypi:~/partage/RXTX_ARMV7 $ cp librxtxSerial.so /usr/lib/jni/

j'ai suivi ensuite les instructions donnée par PCSOFT,

2/ c'est a dire de crée une procedure en java qui sera appelée avant 'sOuvre' :

public static void SERIALINIT ()
{
String SerialPortID = "/dev/ttyACM0" ;// ou ttyUSB0 ou ...
System . setProperty ( "gnu.io.rxtx.SerialPorts" , SerialPortID );
}

Puis integrer dans la compilation JAVA sous Windev le fichier rxtxcomm.jar

3/ Et enfin crée un batch d'execution de cette application :

#!/bin/bash
java -Djava.library.path=/usr/lib/jni/ -jar /home/pi/Windev_Prog/RS232_Raspberry.jar
exit 0

Voila , le programme ce lance normalement et le port lui est attribué le numero 586433796, bien loin des numero standart sous windows Com1-2-3...
Membro registado
10 mensagems
Publicado em maio, 23 2016 - 10:21 AM
Bonjour,

Je suis également débutant sous windev ainsi que sur la raspberry pi. Mon but est de créer une application graphique qui permet de distribuer des produits via un écran tactile. Du coup j'utilise une carte raspberry avec un écran tactile et je veux communiquer avec une carte CPU utilisant un pic (dspic 33f...) en utilisant la comm UART. Côté CPU, la communication est déjà gérée. Il reste à faire la partie comm sur la raspberry, et c'est la que ça se gatte pour moi.
Jean Luc ROYER est-il nécessaire d'installer librxtx-java? vu qu'il faut télécharger une autre librairie?
Est-il possible d'avoir un aperçu de ton application et plus précisément le code au niveau de la comm stp?

Merci par avance!
Mensagem modificada, maio, 23 2016 - 10:42 AM
Publicado em maio, 23 2016 - 1:13 PM
steyf65 a écrit :
Bonjour,

Je suis également débutant sous windev ainsi que sur la raspberry pi. Mon but est de créer une application graphique qui permet de distribuer des produits via un écran tactile. Du coup j'utilise une carte raspberry avec un écran tactile et je veux communiquer avec une carte CPU utilisant un pic (dspic 33f...) en utilisant la comm UART. Côté CPU, la communication est déjà gérée. Il reste à faire la partie comm sur la raspberry, et c'est la que ça se gatte pour moi.
Jean Luc ROYER est-il nécessaire d'installer librxtx-java? vu qu'il faut télécharger une autre librairie?
Est-il possible d'avoir un aperçu de ton application et plus précisément le code au niveau de la comm stp?

Merci par avance!



Bonjour steyf65
Oui, si tu développe avec Windev tu doit compiler en Java, est seul la lib rxtxcomm doit être utilisé pour gérer les COM
La gestion pose encore quelques problèmes dont :
suivant la typologie de la connexion employer, le code change:
Câble convertisseur USB Série le Raspberry le reconnait en ttyUSB0
Puce FDTI intégré sur circuit genre ARduino Mega, le port est reconnu en ttyACM0

Pour l'instant, pour ma part (connexion sur Arduino) l'envoie du Raspberry vers l'arduino est bien reconnu
Mais la réception sur le Raspberry, là problème , ce que je reçois est illisible (du chinois).
Voir Photo





Pour le code, je peut te l'envoyer en MP, vus qu'il utilise quelques procédures
A+
Membro registado
10 mensagems
Publicado em maio, 24 2016 - 4:59 PM
Bonjour,

J'ai continué à essayé de faire fonctionner cette communication...
Tout d'abord j'ai juste testé la communication serie entre les 2 pcs avec un cable usb serial converter et tera term. Je lit et j'écrit des 2 côtés.
Puis j'ai lancé mon application windev depuis mon pc pour communiquer avec le 2nd pc (également sous windows). Cela fonctionne correctement avec un câble usb serial converter. Cela signifie que mon code au niveau de l'uart est bon.
Ensuite je suis passé sur la raspberry pi et j'ai testé avec minicom (côté raspberry) et toujours tera term de l'autre coté, la communication série via le câble usb serial converter. Cela fonctionne également dans les 2 sens.

Et maintenant, la où je bloque, je lance l'application windev sur la rpi3 (java -Djava.library.path=/home/pi/partage -jar /home/pi/Desktop/mon_projet_.mon_projet.jar) et la je reçois un message d'erreur fatale de programmation:
"Erreur dans le traitement Procédure globale UART_Open. Vous avez appelé la fonction sOuvre. La librairie native (dll, so ou jnilib) utilisée par la librairie RXTX n'a pas été trouvée. Vérifier que la librairie native correspondant au système d'exploitation utilisée se trouve bien dans le répertoire d'exécution de l'application ou dans le chemin des librairies de l'application (librarypath)".
et sur terminal de RPI3 j'ai un message également:
"java.lang.UnsatisfiedLinkError : /home/pi/partage/librxtxSerial.so : /home/pi/partage/librxtxSerial.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type thrown while loading gnu.io.RXTXCommDriver Exception in thread "AWT-EventQueue-O"


J'ai essayé également de copier ce fichier dans /usr/lib/jni sauf qu'il y a d'autres fichiers et quand j'ai lancé l'application j'ai eu le même problème mais avec un message diffèrent:
" java.lang.UnsatisfiedLinkError : /usr/lib/jni/librxtxSerial-2.2pre1.so : /usr/lib/jni/librxtxSerial-2.2pre1.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type thrown while loading gnu.io.RXTXCommDriver Exception in thread "AWT-EventQueue-O"



Pour plus d'explications, Voila comment j'ai procédé avant de lancer l'application sur la rpi3:
- J'ai activer avec raspi-config la communication serie
-j'ai installé librxtx (sudo apt-get install librxtx-java) et j'ai dl le fichier librxtxSerial.so comme indiqué par Jean Luc Royer.
-J'ai copier ce fichier dans le répertoire /home/pi/partage/ (et également dans /usr/lib/jni)
- J'ai également intégrer la RXTXComm.jar au moment de la création de l'archive java (lorsqu'on me demande si je veux intégrer d'autres archives java dans l'archive finale, par exemple les drivers JDBC utilisés par votre application)
- j'ai lancé l'application via le terminal avec la ligne : java -Djava.library.path=/home/pi/partage -jar /home/pi/Desktop/mon_projet_.mon_projet.jar

1) Faut-il peut être supprimer les autres fichiers contenus dans le dossier jni?
2) Je ne sais pas si c'est à cet endroit qu'il faut mettre le fichier RXTXComm.jar mais je n'ai pas trouvé d'autres endroits...
3) Comment la fonction SERIALINIT() doit-elle être intégrée dans le projet?

J'espère avoir été suffisamment compréhensible, n'hésitez pas à me contacter si vous ne comprenez ce que j'essaye d'expliquer ou évidemment, si vous avez des SOLUTIONS :)

Merci d'avance,
Membro registado
12 mensagems
Publicado em maio, 24 2016 - 10:34 PM
Bonsoir Steyf

Deja dans ton lanceur tu ne dirige pas vers le bon répertoire des librairies java , j'ai eu le même problème au début

"java -Djava.library.path=/home/pi/partage -jar /home/pi/Desktop/mon_projet_.mon_projet.jar"

tu devrais plutôt mettre :
java -Djava.library.path="/usr/lib/jni/ -jar (est ensuite ton répertoire ou ce trouve ton programme, évite de mettre dans Desktop, sa devient vite le bordel

exemple
java -Djava.library.path="/usr/lib/jni/ -jar /home/pi/windev_prg/mon_project.jar

et pour l'histoire du "/home/pi/partage/librxtxSerial.so : /home/pi/partage/librxtxSerial.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type "

tu remarquera que dans usr/lib/jni, il y a un autre fichier qui doit s'appeler "librxtxSerial-2.2 pre1.so . il est appelé par librxtxSerial.so (c'est le fichier partagé)

ensuite:

- J'ai activer avec raspi-config la communication serie
Sa ne sert a rien, car elle ne sert a ouvrir la com que pour le GPIO, donc par pour toi

-j'ai installé librxtx (sudo apt-get install librxtx-java) et j'ai dl le fichier librxtxSerial.so comme indiqué par Jean Luc Royer.
OK pour SA

J'ai copier ce fichier dans le répertoire /home/pi/partage/ (et également dans /usr/lib/jni)
POURQUOI home/pi/partage/puisque que tu a copier ton programme dans desktop ?
uniquement dans /usr/lib/jni

- J'ai également intégrer la RXTXComm.jar au moment de la création de l'archive java (lorsqu'on me demande si je veux intégrer d'autres archives java dans l'archive finale, par exemple les drivers JDBC utilisés par votre application)
C'EST BIEN SA !

1) Faut-il peut être supprimer les autres fichiers contenus dans le dossier jni?
NON SURTOUT PAS, tu pourrais virer les parallel,Raw,RS485 ... mais vos mieux pas toucher

2) Je ne sais pas si c'est à cet endroit qu'il faut mettre le fichier RXTXComm.jar mais je n'ai pas trouvé d'autres endroits...
Le RXTXComm.jar doit être compiler dans ton programme, donc il n'est pas présent seul dans le PI3? IL EST INTEGRER DANS TON PRG

3) Comment la fonction SERIALINIT() doit-elle être intégrée dans le projet?
A intégrer que si le port connecté est déclaré en ACM0 uniquement sinon pas nécessaire

POUR MA PART, JE TE DONNE LES RÉSULTATS DE MES EXPÉRIENCES DE DEBUTANT, je ne suis pas un Pro en LINUX ou Raspberry.
Si je me trompe dans mes raisonnements, toutes les aident et correction sauront les bienvenus.
Bon courage a toi !
Membro registado
10 mensagems
Publicado em maio, 25 2016 - 9:20 AM
Bonjour Jean Luc ROYER!

Merci beaucoup pour ton aide!

tu devrais plutôt mettre :
java -Djava.library.path="/usr/lib/jni/ -jar (est ensuite ton répertoire ou ce trouve ton programme, évite de mettre dans Desktop, sa devient vite le bordel
Je vais directement changer d'endroit mon projet.
J'avais essayé les 2 solutions. Lorsque j'ai mis la la sollution avec /usr/lib/jni j'ai eu également le problème : " java.lang.UnsatisfiedLinkError : /usr/lib/jni/librxtxSerial-2.2pre1.so : /usr/lib/jni/librxtxSerial-2.2pre1.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type thrown while loading gnu.io.RXTXCommDriver Exception in thread "AWT-EventQueue-O"

C'est à cause de ce message que je pensais qu'il fallait supprimer librxtxSerial-2.2pre1


Du coup mon RXTXComm.jar est bien intégré dans mon programme.

- J'ai activer avec raspi-config la communication serie
Sa ne sert a rien, car elle ne sert a ouvrir la com que pour le GPIO, donc par pour toi
Merci pour l'info, je ne savais pas, mais du coup je vais le laisser ouvert car mon but ensuite est de communiquer via le gpio avec une carte CPU (dspic33f)

Pour la fonction SERIALINIT() si j'ai bien compris, je ne l'utilise pas pour le moment car je suis avec un cable serial converter (donc USB0)
Mais je pense qu'avec les gpio il sera utilise de l'utiliser non ?

Je vais retester tout ça... mais j'ai peur d'avoir le même message d'erreur que précédemment avec le librxtxserial-2.2pre1.so
Membro registado
10 mensagems
Publicado em maio, 25 2016 - 9:55 AM
Je viens du coup de re tester en changeant ce que tu m'as dit (cad le projet de place). J'ai réinstaller la librxtx-java et je re téléchargeais le fichier librxrxSerial.so avec le liens que tu as fournis précédemment. J'ai également copier ce fichier dans le dossier jni.
Lorsque je lance l'application et que je clique sur mon image pour envoyer des données par le port série j'ai toujours ce message :
java.lang.UnsatisfiedLinkError : /usr/lib/jni/librxtxSerial-2.2pre1.so : /usr/lib/jni/librxtxSerial-2.2pre1.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type thrown while loading gnu.io.RXTXCommDriver Exception in thread "AWT-EventQueue-O"


Je ne comprends vraiment pas l'erreur. Pourquoi il ne peut pas ouvrir le fichier d'objet partagé? Problème d'autorisation?
Membro registado
12 mensagems
Publicado em maio, 25 2016 - 10:08 AM
Bonjour Steyf
on dirait que tu as un probleme de driver RXTX.
a force de bidouler avec ce truc, je suis parvenu a le planter litteralement, et la reinstallation complete du raspberry a etait le remede !
en est tu la ?
si tu as suivi imperativement mon post de 19 mai, sa doit fonctionner.

Pour finir,Je viens finalement de reussir a ecrire et lire avec le raspberry
il me semble que
sFixeParamètre(nPort,9600,0,8,0)

ne fonctionne pas correctement sur le raspberry pi3.
si tu l'enleve carrement, ton RS est configuré par defaut en 9600,pas de parité,8bits.1stop, donc nickel pour moi.
Par contre, ce qui a de bien avec le linux, s'est que tu peut ouvrir un port RS232 avec ton programme et ensuite le reouvrir avec un utilitaire comme hyperterminal.
Donc l'ouvre le port avec mon programme, puis je lance l'utilitaire j'ouvre le port aussi, je regle les parametres, et j'envoie ma trame sur l'arduino, et la il me repond en FRANCAIS. !! Cool

Reste maintenant a trouver comment parametrer ce port avec une ligne de commande par le terminal, ou directement avec une fonction JAVA comme SERIALINIT, mais la c'est pas gagné d'avance, mais je tiens le bon bout, a suivre ...
Membro registado
10 mensagems
Publicado em maio, 25 2016 - 10:33 AM
Re Jean Luc,

Félicitation à toi et bon courage, tu vas y arriver!!

Oui j'ai suivi à la lettre ton tuto mais j'ai pas bidouiller (je pense) en installant puis désinstallant des fichiers.
Tu pense que je devrais résintaller completement rapsbian? Au fait tu utilise raspbian jessie?
Membro registado
12 mensagems
Publicado em maio, 25 2016 - 11:08 AM
steyf, je peut tenvoyer mes fichiers ce trouvant dans jni en mp si tu veut pour faire un test
Membro registado
10 mensagems
Publicado em maio, 25 2016 - 11:30 AM
Je veux bien oui si ça te dérange pas. Merci
Je suis également en train de réinstaller rapsbian sur une autre carte sd pour tout reprendre de 0 au cas où.
Membro registado
12 mensagems
Publicado em maio, 25 2016 - 11:55 AM
il me faudrait ton adresse mail pour sa :p
Membro registado
10 mensagems
Publicado em maio, 25 2016 - 12:02 PM
ah désolé :)

stephanecarpene@gmail.com
Membro registado
10 mensagems
Publicado em maio, 25 2016 - 2:57 PM
Je reviens vers toi!
Alors j'ai bien réinstaller rapsbian sur un 2em carte SD et j'ai suivi ce que tu as dit. Malheureusement j'ai toujours le même problème avec le même message d'erreur... je ne vois pas comment faire

Est-il faisable d'intégrer un code python (qui servira à gérer la communication série) dans mon projet windev?
Je pense que ça pourrait contourner le problème..
Membro registado
12 mensagems
Publicado em maio, 25 2016 - 10:30 PM
je viens de t'envoyer mon jni complet, recopie pour voir dans ton répertoire jni

Pour le python, j'ai essayer (beaucoup de chose j'ai essayer), le problème c'est que s'est un langage interpréter (non compilé) donc impossible d’intégrer a windev a ma connaissance.
j'ai essayer de lancer un script en python qui réceptionne les trames recu de la RS et qui me les écrits dans un fichier txt .
puis je récupère ce fichier pour le traiter dans windev :
Trop long, trop instable, donc pas réalisable.
Ta seule solution s'est soit de développer en python, ou autres soit de réussir a te servir de rxtx sous Windev, et sa fonctionne vraiment !

Ne te décourage pas , tu doit reussir !
Membro registado
12 mensagems
Publicado em maio, 25 2016 - 11:32 PM
Steyf, désolé mais ton email est invalide
stephanecarpene@gmail.com, le mail ma etait retourné !
Membro registado
10 mensagems
Publicado em maio, 26 2016 - 8:32 AM
Merci beaucoup!

c'est bizarre parce que c'est vraiment mùon adresse email
sinon si tu peux envoyer sur celle la: stephane.carpene@viacesi.fr
Pense à zipper tes fichiers parce que des fois ça n'envoi pas le mail à cause de ça.
Encore merci à toi! J'espère vraiment y arriver ^^
Publicado em julho, 01 2016 - 10:54 AM
Pour information j'ai enfin réussi à utiliser le port "/dev/ttyAMA0" sur mon Raspberry Pi 2, sans remplacer la librairie rxtx du RPI. Toutes les instructions données par Jean luc ROYER sont à suivre mise à par si dans votre cas comme dans le mien vous avez un Raspberry Pi inférieur à 3 dans ce cas la simple installation de la librairie avec un sudo apt-get install suffit.

Autre point comme évoqué plus haut, le fonction sFixeParametre() pose plus de problème qu'autre chose donc si possible ne pas l'utilisé, dans mon cas cela à résolue mon problème.

Cordialement,

William
Membro registado
12 mensagems
Publicado em julho, 01 2016 - 3:41 PM
Exactement le meme probleme pour sFixeParametre, sans sa fonctionne tres bien, si peut que la configuration par defaut de la RS et la meme que celui du péripherique 9600 8bits 1stop

Par contre j'ai entre 5 et 10 blocages de communication par jours en lecture 24/24.
Pour parer ce probleme, je detecte la non reponse pendant x secondes puis je reinitialise la communication par mon logiciel, donc sa me gene pas plus que sa !

Voila, pour conclure !
A+

Jean luc
Publicado em janeiro, 26 2021 - 11:52 AM
Bonjour, je reviens 4 ans plus tard, j'ai un projet de BTS qui consiste à faire communiquer une balance et un Raspberry en RS232. Je dois créer une application java WINDEV 26 qui doit tourner sur un PI4. J'ai suivi à la lettre toute les manipulations de ce forum. mais aucun moyen de faire fonctionner la liaison série sur le PI4 par l'application JAVA avec les fonctions : sOuvre, sEcrit, sLit... Est-ce car la librxtxSerial.so ARMV7 n'est pas utilisable par le PI4 car celui-ci est en ARMV8. J'ai besoin de votre aide.

En vous remerciant d'avance.
Publicado em junho, 11 2021 - 4:20 PM
C'est bon enfaite projet terminé
Publicado em janeiro, 03 2023 - 4:13 PM
Bonjour Pierre,

As-tu la solution pour la connexion à un port série sur un Raspberry ?