Problème COM entre PC et onduleur en port serie [Résolu]

lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention - 6 oct. 2012 à 17:42 - Dernière réponse : lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention
- 24 nov. 2012 à 21:13
Bonjour ,

Depuis pas mal de temps je n'arrive pas à réaliser une communication entre mon PC et mon onduleur : Mistral 600ST .
Je veux juste récupérer son état :
sur secteur , sur batterie et au mieux : défaut batterie et batterie OK .
Tout ceci dans l'optique de remplacer le soft du fabriquant qui est un peut ancien ( 2000 ) .
J'ai déjà fait une modif SANS COM basée sur une astuce du soft trop long à mon goût en cas de défaut secteur . ( pour plus de détals là dessus , me demander )

Le gros soucis c'est que je n'ai strictement aucune info sur les paramètres de COM .-> Pas très pratique ....
Avec un programme de type sniffer ( Serial Port Monitor ) il me semble que la config est :
1200 bts
parity 0
WordLength 7
StopBit 0 -> raiment bizare ... je pensais que c'étais 1 ou 2 ......
Je supose que c'est une liaison RS232 .

MAIS même avec ces info là je n'arrive pas à récupérer de valeurs .
Grâce à Serial Port Monitor , j'ai remarqué que le statut du modem 144 correspond à secteur présent et que 128 correspind à un défaut secteur .

voici ce que Serial Port Monitor à analysé :

[06/10/2012 08:36:02]
1  IRP_MJ_CREATE - Opens a COM port (COM1)
   STATUS_SUCCESS
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
3  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_GET_BAUD_RATE - Returns the baud rate that is currently set for a COM port
            BaudRate - 1200
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
5  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_GET_LINE_CONTROL - Request returns information about the line control set for a COM port
            StopBits - 0
            Parity - 0
            WordLength - 7
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
7  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_GET_CHARS - Request returns the special characters that Serial uses with handshake flow control
            EofChar - 0
            ErrorChar - 0
            BreakChar - 0
            EventChar - 0
            XonChar - 17
            XoffChar - 19
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
9  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_GET_HANDFLOW - Request returns information about the configuration of the handshake flow control set for a COM port
            ControlHandShake - 0x0 
            FlowReplace - 0x40 (SERIAL_RTS_CONTROL)
            XonLimit - 2048
            XoffLimit - 512
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
11  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_GET_BAUD_RATE - Returns the baud rate that is currently set for a COM port
            BaudRate - 1200
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
13  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_GET_LINE_CONTROL - Request returns information about the line control set for a COM port
            StopBits - 0
            Parity - 0
            WordLength - 7
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
15  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_GET_CHARS - Request returns the special characters that Serial uses with handshake flow control
            EofChar - 0
            ErrorChar - 0
            BreakChar - 0
            EventChar - 0
            XonChar - 17
            XoffChar - 19
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
17  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_GET_HANDFLOW - Request returns information about the configuration of the handshake flow control set for a COM port
            ControlHandShake - 0x0 
            FlowReplace - 0x40 (SERIAL_RTS_CONTROL)
            XonLimit - 2048
            XoffLimit - 512
----------------------------------------------------------------------------------




[06/10/2012 08:36:02]
19  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_SET_BAUD_RATE - Request sets the baud rate on a COM port. Serial verifies the specified baud rate
            BaudRate - 1200
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
21  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_SET_RTS - Request sets RTS
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
23  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_CLR_DTR - Request clears the DTR control signal. 
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
25  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_SET_LINE_CONTROL - Request sets the line control register
            StopBits - 0
            Parity - 0
            WordLength - 7
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
27  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_SET_CHARS - Request sets the special characters that Serial uses for handshake flow control
            EofChar - 0
            ErrorChar - 0
            BreakChar - 0
            EventChar - 0
            XonChar - 17
            XoffChar - 19
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
29  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_SET_HANDFLOW - Request sets the configuration of handshake flow control
            ControlHandShake - 0x0 
            FlowReplace - 0x40 (SERIAL_RTS_CONTROL)
            XonLimit - 2048
            XoffLimit - 512
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
31  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_GET_MODEMSTATUS - Request updates the modem status, and returns the value of the modem status register before the update
            Modem status - 144 (MS_CTS_ON | MS_RLSD_ON)
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
33  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_CLR_RTS - Request clears the RTS control signal 
----------------------------------------------------------------------------------
[06/10/2012 08:36:02]
35  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_SET_RTS - Request sets RTS
----------------------------------------------------------------------------------
[06/10/2012 08:36:03]
37  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_GET_MODEMSTATUS - Request updates the modem status, and returns the value of the modem status register before the update
            Modem status - 144 (MS_CTS_ON | MS_RLSD_ON)
----------------------------------------------------------------------------------
[06/10/2012 08:36:04]
39  IRP_MJ_DEVICE_CONTROL - Request operates a serial port
   STATUS_SUCCESS
         IOCTL_SERIAL_GET_MODEMSTATUS - Request updates the modem status, and returns the value of the modem status register before the update
            Modem status - 144 (MS_CTS_ON | MS_RLSD_ON)
----------------------------------------------------------------------------------




Ma ( même plusieurs ) question est :
-> Savez-vous comment je pourrais récupérer les paquets envoyés par le soft de mon onduleur ?
-> IOCTL_SERIAL_GET_MODEMSTATUS correspond-il à une WMI ?
Si oui , pouvez-vous m'indiquer un lien vers une doc complète ?

J'ai testé pas mal de source dispo ici en VB et aussi en C# ( que je ne métrise pas vraiment ) mais sans succés .
Un de mes codes utilisant RSCOM.dll et Port.dll me retourne toujours une valeur byte de -1 et vide pour String .

Je qualifi mon niveau de moyen sous VB 2010 , j'ai débuté la programmation avec SoftwareZator 1.0 et 2011 .

Merci de votre aide

Cordialement ,
Le réparateur de PC
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_Galain 1270 Messages postés mardi 11 novembre 2003Date d'inscription 24 juillet 2013 Dernière intervention - 13 oct. 2012 à 22:21
3
Merci
salut
une mini piste si l'on peut dire
IOCTL_SERIAL_GET_MODEMSTATUS est un paramètre qui s'utilise avec l'API DeviceIoControl de Windows !
tous les IOCTL sont des paramètres de codes d'entrée-sortie avec des périphériques !
Seule une documentation précise sur ton onduleur pourrait te dire comment interfacer celui-ci avec le PC !
tu t'attaques à un très gros morceau à la limite du langage machine !

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain

Merci cs_Galain 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_Galain
lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention - 14 oct. 2012 à 09:05
0
Merci
re ,

C'est ce que je me suis rendu compte que ce prog utilisais une API .

Je vais y regarder !
Pensez-vous que les valeurs retournées : parité , bit stop , ....
sont exactes ? car aucun bit de stop est assez étrange non ?

Si ces valeurs sont exactes , pourquois je ne peut PAS mettre 0 bit de stop dans mon code VB perso en utilisant SerialPort ?
J'utilise un prog externe parce que la doc de l'onduleur ne donne RIEN !
C'est un petit onduleur domestique , pas pour un serveur !
Et je doute fort que la config pour les versions PRO soit la même que le mien .... Mais je vais y regrader !

Merci
Cordialement ,
Le réparateur de PC
Commenter la réponse de lereparateurdepc
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 14 oct. 2012 à 10:27
0
Merci
Bonjour, lereparateurdepc,
Mais je vais y regrader


Profite, puis que tu vas la regrader, pour la monter suffisamment en grade et d'en faire profiter le constructeur.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention - 24 nov. 2012 à 21:13
0
Merci
Bonsoir ,

Pouvez-vous m'expliquer (ou me donner un lien vers une page) le fonctionnement de l'API DeviceIoControl pour mon cas ?
Je n'ai pour le moment trouvé que des exemples en C++ .

Merci de votre aide

Cordialement ,
Le réparateur de PC
Commenter la réponse de lereparateurdepc

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.