Problème COM entre PC et onduleur en port serie

[Résolu]
Signaler
Messages postés
13
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
24 novembre 2012
-
Messages postés
13
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
24 novembre 2012
-
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

4 réponses

Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
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
Messages postés
13
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
24 novembre 2012

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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
Messages postés
13
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
24 novembre 2012

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