[Calc]Message erreur au lancement lecture port RS232

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
dddominique
Membre OOrganisé
Membre OOrganisé
Messages : 68
Inscription : 09 mai 2015 19:26

[Calc]Message erreur au lancement lecture port RS232

Message par dddominique »

Bonjour,

Je viens de récupérer une macro assez ancienne qui permet de lire les données qui arrivent sur le port RS232/USB (via cordon rs232/USB) pour les afficher dans Calc en temps réel.

J'essaye de lancer la macro, et j'obtiens le message d'erreur suivant -> voir photo.

Quelqu'un peut-il me guider pour résoudre ce problème ?

Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Oukcha le 19 mars 2019 08:17, modifié 1 fois.
Raison : TO:"[Calc] - Macro impossible à lancer - Message d'erreur" / Terme implicite ("macro") supprimé, titre complété
PC Personnel
Ubuntu 16.04.06 LTS
Libre Office 5.1.6.2

Laptop Bureau
Windows 10
Libre Office 6.0.3.2 (x64)
dddominique
Membre OOrganisé
Membre OOrganisé
Messages : 68
Inscription : 09 mai 2015 19:26

Re: [Calc]Message erreur au lancement lecture port RS232

Message par dddominique »

Bonjour,

J'arrive maintenant à ouvrir la macro, je l'ai changé de directory, je pense que le problème venait des accents du directory /Téléchargements qui posaient problème.

Par contre, j'ai lié mon cable RS232/USB vers ttyUSB1, je me suis octroyé les droits, mais je n'arrive pas à sélectionner ttyUSB1 dans la liste des 4 ports disponibles.

J'ai dû oublier quelque chose, mais quoi ?
PC Personnel
Ubuntu 16.04.06 LTS
Libre Office 5.1.6.2

Laptop Bureau
Windows 10
Libre Office 6.0.3.2 (x64)
Jeff
GourOOu
GourOOu
Messages : 9628
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: [Calc]Message erreur au lancement lecture port RS232

Message par Jeff »

Bonjour,

Je n'y connais pas grand-chose en macro, mais le message me semble explicite, le fichier n'existe pas dans le répertoire indiqué...puisque tu cherches dans "opendaqcalc//"

Je serai tenté de remplacer dans la macro Main :

Code : Tout sélectionner

if Not FileExists(InTheCurrentDirectory(ODC_LINUX_FOLDER & "/" & LINUX_SERIAL_D)) then
Par :

Code : Tout sélectionner

if Not FileExists(InTheCurrentDirectory & (ODC_LINUX_FOLDER & "/" & LINUX_SERIAL_D)) then
J'obtiens alors une autre erreur d'argument non facultatif que je n'arrive pas à comprendre :(

En plus du fichier, tu devrais poster le code.

A +
dddominique
Membre OOrganisé
Membre OOrganisé
Messages : 68
Inscription : 09 mai 2015 19:26

Re: [Calc]Message erreur au lancement lecture port RS232

Message par dddominique »

Bonjour Jeff,

Nos message se sont croisés. J'ai trouvé, en changeant de répertoire.
Par contre, je ne trouve pas le port ttyUSB1 sur lequel mon câble RS232/USB est lié. ( le port ttyUSB0 est occupé par une autre application qui fonctionne )

Cordialement.
PC Personnel
Ubuntu 16.04.06 LTS
Libre Office 5.1.6.2

Laptop Bureau
Windows 10
Libre Office 6.0.3.2 (x64)
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 626
Inscription : 09 août 2017 22:15

Re: [Calc]Message erreur au lancement lecture port RS232

Message par Jurassic Pork »

hello,
la liste des ports série dans la boîte de dialogue de choix du port est générée par ce code dans le Module1 de ton fichier:

Code : Tout sélectionner

Sub LoadPortListBox
    '--- Remplissage de la ListBox: 
      'AddItem (Donnée à ajouter , Position dans ListBox ) 
      '0 correspond à la 1ere ligne de la ListBox 
	Select Case GetOs()
		Case OS_LINUX
	    oDialog.getControl("PortListBox").AddItem ("/dev/ttyACM0", 0 ) 
	    oDialog.getControl("PortListBox").AddItem ("/dev/ttyUSB0", 1 ) 
	    oDialog.getControl("PortListBox").AddItem ("/dev/ttyS0",   2 ) 
	    oDialog.getControl("PortListBox").AddItem ("/dev/ttyS1",   3 ) 
		
		case OS_WINDOWS
	    oDialog.getControl("PortListBox").AddItem ("COM20", 19) 
	    oDialog.getControl("PortListBox").AddItem ("COM19", 18) 
	    oDialog.getControl("PortListBox").AddItem ("COM18", 17) 
	    oDialog.getControl("PortListBox").AddItem ("COM17", 16) 
	    oDialog.getControl("PortListBox").AddItem ("COM16", 15) 
	    oDialog.getControl("PortListBox").AddItem ("COM15", 14) 
	    oDialog.getControl("PortListBox").AddItem ("COM14", 13) 
	    oDialog.getControl("PortListBox").AddItem ("COM13", 12) 
	    oDialog.getControl("PortListBox").AddItem ("COM12", 11) 
	    oDialog.getControl("PortListBox").AddItem ("COM11", 10) 
	    oDialog.getControl("PortListBox").AddItem ("COM10", 9 ) 
	    oDialog.getControl("PortListBox").AddItem ("COM9",  8 ) 
	    oDialog.getControl("PortListBox").AddItem ("COM8",  7 ) 
	    oDialog.getControl("PortListBox").AddItem ("COM7",  6 ) 
	    oDialog.getControl("PortListBox").AddItem ("COM6",  5 ) 
	    oDialog.getControl("PortListBox").AddItem ("COM5",  4 ) 
	    oDialog.getControl("PortListBox").AddItem ("COM4",  3 ) 
	    oDialog.getControl("PortListBox").AddItem ("COM3",  2 ) 
	    oDialog.getControl("PortListBox").AddItem ("COM2",  1 ) 
	    oDialog.getControl("PortListBox").AddItem ("COM1",  0 ) 
	End Select
Comme on peut le constater la liste est constituée en "dur" donc sans se soucier de savoir si le port existe ou pas.
Pour mettre ton port /dev/ttyUSB1 il suffit de rajouter la ligne :

Code : Tout sélectionner

oDialog.getControl("PortListBox").AddItem ("/dev/ttyUSB1", 1 ) 
Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
dddominique
Membre OOrganisé
Membre OOrganisé
Messages : 68
Inscription : 09 mai 2015 19:26

Re: [Calc]Message erreur au lancement lecture port RS232

Message par dddominique »

Bonjour Jurassic Pork,

Merci pour ton aide.

J'ai essayé de modifier en ajoutant ttyUSB1, mais j'obtiens un message d'erreur.

J'ai alors ré-essayé sur mon PC Portable ( Ubuntu 18.04 ), sur ttyUSB0.
La macro se lance, mais je n'arrive-pas à obtenir mes données dans Calc.
Par contre, j'obtiens bien des données dans GTKTerm.

Maintenant, je me demande si les données envyées par mon multimètre sont bien dans le bon format attendu par la macro.

Je vais continuer à chercher, si quelqu'un a une idée pour tester la réception des données....
PC Personnel
Ubuntu 16.04.06 LTS
Libre Office 5.1.6.2

Laptop Bureau
Windows 10
Libre Office 6.0.3.2 (x64)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25167
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Message erreur au lancement lecture port RS232

Message par Dude »

Salut,

Collecte tes données via une session Telnet qui les écrira dans un fichier.
Ce sera plus simple que d'attaquer directement la lecture du port COM ou USB via Calc.
dddominique
Membre OOrganisé
Membre OOrganisé
Messages : 68
Inscription : 09 mai 2015 19:26

Re: [Calc]Message erreur au lancement lecture port RS232

Message par dddominique »

Bonjour Jurassic Pork,

Merci pour ton aide, je viens de réussir à changer le port ttyUSB0 en ttyUSB1.
Je continue mes recherches, car rien n'arrive dans Excel.

@+
PC Personnel
Ubuntu 16.04.06 LTS
Libre Office 5.1.6.2

Laptop Bureau
Windows 10
Libre Office 6.0.3.2 (x64)
dddominique
Membre OOrganisé
Membre OOrganisé
Messages : 68
Inscription : 09 mai 2015 19:26

Re: [Calc]Message erreur au lancement lecture port RS232

Message par dddominique »

Bonjour Dude,

Merci pour ton conseil, mais je souhaite une lecture en temps réel.

L'application finale que je souhaite mettre en place, est un lecteur RFID UHF 869Mhz que je ne possède pas encore.
Je teste les possibilités qui s'offre à moi avec LibreOffice pour capturer les données via le port USB/RS232

L'application finale est toute simple, il s'agit d'une course à pieds en Amateur ( pas de budget, je réalise cela gracieusement ) avec lecture d'un Tag RF sur chaque coureur à pieds.
Il y a 6 tours.
Au final, j'ai juste besoin des temps, avec le n° du Tag associé.

Je simule donc une entrée "Rs232" avec ce que je possède.
Mais je pense, que les données attendues par la macro, sont formatées.
J'aimerais éditer cette macro, mais je n'y connais pas grand chose.

D'où ce fil :)

La modération vous a écrit: Merci de ne pas poster plusieurs messages à la suite. Vous disposez d'un bouton Éditer en haut à droite de chaque message et d'un autre bouton ajout si vous désirez ajouter un complément lorsqu'il n'y a pas de réponse.

PC Personnel
Ubuntu 16.04.06 LTS
Libre Office 5.1.6.2

Laptop Bureau
Windows 10
Libre Office 6.0.3.2 (x64)
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 626
Inscription : 09 août 2017 22:15

Re: [Calc]Message erreur au lancement lecture port RS232

Message par Jurassic Pork »

hello,
dddominique a écrit : L'application finale que je souhaite mettre en place, est un lecteur RFID UHF 869Mhz que je ne possède pas encore.
Je teste les possibilités qui s'offre à moi avec LibreOffice pour capturer les données via le port USB/RS232
L'application finale est toute simple, il s'agit d'une course à pieds en Amateur ( pas de budget, je réalise cela gracieusement ) avec lecture d'un Tag RF sur chaque coureur à pieds.
as-tu déja choisi ton type de lecteur RFID? un lecteur RFID n'est pas donné et si tu n'as pas de buget je ne vois pas comment tu vas pouvoir faire. En plus il faut acheter autant de tags (balises) qu'il y a de coureurs.
En général les lecteurs RFID sont fournis avec un SDK qui permet de dialoguer avec eux à partir d'un langage et d'un driver et il y a souvent un protocole de communication. J'ai regardé un peu le code que tu nous as fourni dans ton fichier. En fait il lance un programme externe qui met à jour un fichier que vient regarder le code de la macro. En plus il est prévu pour se déclencher sur certains mots.
Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
dddominique
Membre OOrganisé
Membre OOrganisé
Messages : 68
Inscription : 09 mai 2015 19:26

Re: [Calc]Message erreur au lancement lecture port RS232

Message par dddominique »

Bonjour jurassik Pork,

Pour ce qui est du budget cela devrait aller, je pense avoir trouvé sur Ali Express du matériel pour un budget acceptable pour ce club Amateur.
Je préfère éviter les SDK, car je suis plus électronicien que programmeur, et puis la macro que j'essaye de modifier est reconnue comme fonctionnelle.
Pourquoi s'en priver ? :)

Pourrais-tu m'aider à comprendre ce qu'attend cette macro en terme de données, de formatage et de séparateur ?

Je pense, malgré mon incompétence en macro, que cela se passe dans cette routine :

Code : Tout sélectionner

Private Sub FillSheet(Data as string)
	Dim DataVal() As String
	Dim cc As integer
	
	If Data <> "" Then
		DataVal = Split(Data, ",")
		
		Select Case DataVal(0)
			Case "CLEARDATA"
			Beep
			UpdateStatus("Clearing sheet")
			ClearSheet(0)
			Row = 1
			
			Case "LABEL"
			cc = NbOfChar(Data, ",")
			If Row < 65000 Then
				For x = 1 To cc Mod 27
					Cell = Sheet.getCellByPosition(x -1, 0)
					Cell.String = DataVal(x)
				Next
			Endif

			Case "DATA"
			cc = NbOfChar(Data, ",")
			If Row < 65000 Then
				For x = 1 To cc Mod 27
					Cell = Sheet.getCellByPosition(x -1, Row)
					DataVal(x) = Replace(DataVal(x), "DATE", Trim(Date))
					DataVal(x) = Replace(DataVal(x), "TIME", Trim(Time))
					DataVal(x) = Replace(DataVal(x), ".", ",")
					if isNumeric(DataVal(x)) then
						DataVal(x) = Replace(DataVal(x), ",", ".")
						Cell.Value = val(DataVal(x))
					else
						Cell.String = DataVal(x)
					Endif
				Next
			Endif
			Row = Row + 1
			UpdateStatus("Accepting data for Row " & Str$(Row))
			
			Case "ROW"
			if DataVal(1) = "SET" then
				Row = Val(DataVal(2)) - 1
				UpdateStatus("Setting Row")
			End if
			
		End Select
	End if
End sub


J'ai vu sur le Web, beaucoup de personnes intéressées par la capture et exploitation de données de tous types via RS232/USB.
Si je trouve la solution, je la publierai en entier, depuis l'installation des ports USB sous Linux.

A bientôt j'espère.
PC Personnel
Ubuntu 16.04.06 LTS
Libre Office 5.1.6.2

Laptop Bureau
Windows 10
Libre Office 6.0.3.2 (x64)
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 626
Inscription : 09 août 2017 22:15

Re: [Calc]Message erreur au lancement lecture port RS232

Message par Jurassic Pork »

hello,
j'ai simplifié le code pour que l'on capture tout ce qui arrive sur le port série et je mets les données dans la cellule A5 de la feuille calc :

Code : Tout sélectionner

Private Sub FillSheet(Data as string)
	If Data <> "" Then
	    Cell = Sheet.getCellRangeByName("A5") 
		Cell.String = Data    
	End if
End sub
J'ai fait le test sous Centos 7 avec moserial comme générateur de données sur port série et en utilisant un adaptateur 2 ports dont les ports sont bouclés en null modem. J'ai utilisé LibreOffice 6.2.
C'est le CR+LF des données envoyées qui déclenche la prise en compte des données.
En pièce jointe un fichier calc contenant le code modifié (à utiliser avec les autres fichiers que tu as fournis) .
TestSerialCalc.png
Moserial.png
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
dddominique
Membre OOrganisé
Membre OOrganisé
Messages : 68
Inscription : 09 mai 2015 19:26

Re: [Calc]Message erreur au lancement lecture port RS232

Message par dddominique »

Super Merci !!! :-)

Cela semble fonctionner, je viens d'avoir la confirmation que les données que je reçois ne sont pas "imprimables".
Je reçois des codes ASCII qui ne s'impriment pas dans LibreOffice Calc....
Par contre, je vois leurs valeurs dans GTKTERM.

L'exemple que tu m'envoie a l'air de fonctionner, car lors du lancement de la macro, la cellule s'efface, donc c'est bon :D

Je vais tester Moserial que je ne connaissais pas, et me permettre de revenir vers toi pour d'autres questions si nécessaire.

J'ai déjà 1 question:

La première commande de la macro teste si les données sont vides
La seconde positionne les futures "Data" en A5
Mais je ne comprend pas Cell.string=data ?

Merci en tout cas de m'aider.

Dominique
PC Personnel
Ubuntu 16.04.06 LTS
Libre Office 5.1.6.2

Laptop Bureau
Windows 10
Libre Office 6.0.3.2 (x64)
dddominique
Membre OOrganisé
Membre OOrganisé
Messages : 68
Inscription : 09 mai 2015 19:26

Re: [Calc]Message erreur au lancement lecture port RS232

Message par dddominique »

J'ai un nouveau soucis, j'essaye depuis ce matin de dialoguer entre un vieux Laptop Windows XP ( qui possède encore un port RS232 DB9 - C'est pour cela que je le conserve )
Bonjour,


J'ai réalisé une liaison en null moddem entre ce vieux Laptop XP et mon PC Linux

Sur Windows j'utilise HyperTerminal et sur Linux, soit GTKTerm, soit Minicom
Je suis bien en 9600,8,N,1 des 2 côtés

Lorsque j'entre des caractères sur Hyperterminal, je reçois des caractères ASCII bizarres sur Minicom (tous semblables).

Quand je me place en réception pour caractères Hexadécimal sur Minicom, j'obtiens pour le "a" envoyé d'hyperterminal les valeurs "01 1f" ?? alors que pour le "a" c'est normalement 61 ???
Pour le "b" j'obtiens "02 1f" ??

Et dans l'autre sens ce n'est pas tout à fait pareil, les valeurs sont différentes de la normale également.

J'ai essayé tous les protocoles différents sur hyperterminal, de Ansi en passant par TTY100.

Je précise que le décodage des données qui arrivent de Windows, sur mon Oscilloscope était bon. Les caractères correspondaient à la table ASCII.

Y-a-t-il une solution à ce problème ?

D'avance, merci.

**********************************************

Trouvé !!! perdu une journée entière....
Le câble USB/RS232 est défecteux, j'ai pu m'en faire prêter un, et c'était cela.

Je vais pouvoir me consacrer entièrement aux tests avec la macro.

**********************************************

Encore une "Diablerie".....

Lors de l'envoi du caractère "q", la macro se bloque ?? Tous les autres caractères et nombres passent, même le "Q" majuscule ??
Je cherche dans la macro, ce qui pourrait expliquer cela, mais vu ma compétence, je crie au secours.

Il ne s'agit pas d'un problème hardware, car j'ai re-testé avec hyperterminal et Minicom, et le "q" minuscule passe bien dans les 2 sens.
La valeur décodée à l'oscillo est bonne.

Quelqu'un a-t-il une idée de ce qui se passe dans cette macro ?

Merci pour votre attention.
Dernière modification par dddominique le 24 mars 2019 16:33, modifié 1 fois.
PC Personnel
Ubuntu 16.04.06 LTS
Libre Office 5.1.6.2

Laptop Bureau
Windows 10
Libre Office 6.0.3.2 (x64)
dddominique
Membre OOrganisé
Membre OOrganisé
Messages : 68
Inscription : 09 mai 2015 19:26

Re: [Calc]Message erreur au lancement lecture port RS232

Message par dddominique »

Bonjour,

je reviens vers vous car je n'ai toujours pas de solution à mon problème de capture d'une chaîne de caractères hexadécimale qui arrive via le port RS232/USB.

Jurassic Pork, ma donné un début de solution qui fonctionne avec des caractères ASCII qui sont imprimables. Ceux contenu dans mes chaînes de caractères n'apparaissent pas dans Calc.

Est-il possible de revoir la solution de Jurassic Pork pour recevoir la chaîne de caractères hexadécimale au format texte ? -> E2000019490F0214201048D3

Je pourrais utiliser cette chaîne comme texte dans Calc.

Si quelqu'un pouvait m'aider...

Merci d'avance.
PC Personnel
Ubuntu 16.04.06 LTS
Libre Office 5.1.6.2

Laptop Bureau
Windows 10
Libre Office 6.0.3.2 (x64)
dddominique
Membre OOrganisé
Membre OOrganisé
Messages : 68
Inscription : 09 mai 2015 19:26

Re: [Calc]Message erreur au lancement lecture port RS232

Message par dddominique »

Jurassic Pork a écrit :hello,
j'ai simplifié le code pour que l'on capture tout ce qui arrive sur le port série et je mets les données dans la cellule A5 de la feuille calc :

Code : Tout sélectionner

Private Sub FillSheet(Data as string)
	If Data <> "" Then
	    Cell = Sheet.getCellRangeByName("A5") 
		Cell.String = Data    
	End if
End sub
J'ai fait le test sous Centos 7 avec moserial comme générateur de données sur port série et en utilisant un adaptateur 2 ports dont les ports sont bouclés en null modem. J'ai utilisé LibreOffice 6.2.
C'est le CR+LF des données envoyées qui déclenche la prise en compte des données.
En pièce jointe un fichier calc contenant le code modifié (à utiliser avec les autres fichiers que tu as fournis) .
TestSerialCalc.png
Moserial.png
Ami calmant, J.P

Bonjour,

Je relance ce problème dont je n'ai toujours pas trouvé de solution.

Je viens d'effectuer le test avec un GPS portable qui envoie une trame de caractères de ce type @190509141552___________________
Elle s'inscrit bien dans Calc, et est parfaitement lisible.
Il doit y avoir les caractères CR et LF à la fin, car chaque nouvelle trame est placée en dessous de la précédente. ( Ce que je cherche )

Par contre, lorsque je raccorde mon lecteur RFID, je n'obtiens rien dans Calc ?

Les données reçues sont au format Hexdécimal, je soupçonne que certaines sont interprétées ou non imprimables.

Comment modifier la première modification que m'a gentiment réalisée Jurassic Pork, pour recevoir la trame entière E2000019490F0214201048D3
Que puis-je modifier ?

En réalisant des tests au travers d'un arduino, j'ai pu recueillir la trame hexadécimale en ajoutant HEX à la commande en langage C et la trame est bien reçue et lisible.

Mais ici, cette astuce ne fonctionne pas.
Quelqu'un a-t-il une idée ?

Merci d'avance.
PC Personnel
Ubuntu 16.04.06 LTS
Libre Office 5.1.6.2

Laptop Bureau
Windows 10
Libre Office 6.0.3.2 (x64)