|
Windev socket pour dialogue OMRON protocole FINS |
Débuté par Oertli, 27 mar. 2015 17:28 - 12 réponses |
| |
| | | |
|
| |
Posté le 27 mars 2015 - 17:28 |
Bonjours, Je cherche à mettre en place un dialogue entre automate Omron et soft. Pour cela j'utilise les sockets, j'utilise le logiciel Multiway d'omron comme exemple de tram ainsi que Wireshark pour snifer et comparer. En envoyant une commande par multiway je la snif et trouve bien en data udp (ds Wireshark): 800003009100007200030101820001000003 > format fins d'une question La réponse suit dans le multiway: C0000200720000910003010100000028BBBBCCCC La réponse suit dans Wireshark: 0028BBBBCCCC Il s'agit des 3 mots lié à la question. Lorsque je pose cette même question dans le soft je trouve des data incohérente via Wireshark, je pense que j'oublie un morçeau voir une couche capsule!
SI SocketCréeUDP("Api", 56257,"192.168.1.114") = Faux ALORS Erreur("Erreur création " + ErreurInfo(errMessage)) FIN
Reponse_autom est une chaîne
//envoi de la demande d'écriture SI SocketEcrit("Api","800003000000007200190101820001000003","192.168.1.145",9600)= Vrai ALORS //Lecture de la réponse automate et traitement Reponse_autom=SocketLit("Api",Faux) Trace(Reponse_autom) SINON RENVOYER("erreur lors de la demande d'écriture ") FIN
Merci d'avance pour votre aide |
| |
| |
| | | |
|
| | |
| |
Posté le 27 mars 2015 - 19:00 |
Bonjour
j'ai l'impression que l'automatique attend du binaire alors que tu lui envoie la représentation hexa dans une chaine du binaire en question, ce qui bien sur est complètement différent
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
NOUVEAU: WXReplication, votre système de réplication open source est disponible sur mon site web !!! WXShowroom.com : Montrez vos projets ! Plus d'information sur http://fabriceharari.com
On 3/27/2015 11:28 AM, Oertli wrote:
Bonjours, Je cherche à mettre en place un dialogue entre automate Omron et soft. Pour cela j'utilise les sockets, j'utilise le logiciel Multiway d'omron comme exemple de tram ainsi que Wireshark pour snifer et comparer. En envoyant une commande par multiway je la snif et trouve bien en data udp (ds Wireshark): 800003009100007200030101820001000003 > format fins d'une question La réponse suit dans le multiway: C0000200720000910003010100000028BBBBCCCC La réponse suit dans Wireshark: 0028BBBBCCCC Il s'agit des 3 mots lié à la question. Lorsque je pose cette même question dans le soft je trouve des data incohérente via Wireshark, je pense que j'oublie un morçeau voir une couche capsule!
SI SocketCréeUDP("Api", 56257,"192.168.1.114") = Faux ALORS Erreur("Erreur création " + ErreurInfo(errMessage)) FIN
Reponse_autom est une chaîne //envoi de la demande d'écriture SI SocketEcrit("Api","800003000000007200190101820001000003","192.168.1.145",9600)= Vrai ALORS //Lecture de la réponse automate et traitement Reponse_autom=SocketLit("Api",Faux) Trace(Reponse_autom) SINON RENVOYER("erreur lors de la demande d'écriture ") FIN
Merci d'avance pour votre aide |
| |
| |
| | | |
|
| | |
| |
Posté le 30 mars 2015 - 11:50 |
Bonjour,
Essaye de passer ta valeur par un buffer et non une chaîne. Passe ton buffer à la fonction socketecrit avec la taille exacte à écrire, du genre : monbuffer[[ à tailledubuffer]].
Tu peux essayer sans la taille mais par habitude, j'ai remarqué que c'est mieux digéré par l'hôte qui reçoit. |
| |
| |
| | | |
|
| | |
| |
Posté le 30 mars 2015 - 17:10 |
Merci, Dans cas comment formater ma commande ? Reste que je comprends pas, car Wireshark voie en claire les data posé par le Multiway. Chose qu'une commande socket écrit ne reproduit pas ? |
| |
| |
| | | |
|
| | |
| |
Posté le 31 mars 2015 - 09:38 |
Le Buffer ne change rien, j’obtiens toujours une valeur incohérente= x0000003000…‘ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 392 messages Popularité : +12 (12 votes) |
|
Posté le 31 mars 2015 - 12:36 |
Bonjour ... A mon sens la trame à envoyer doit être formatée en ASCII. La représentation que l'on voit correspond à de l'hexa...
Cordialement, Michel
-- If it works, don't touch it, don't look at it, AND don't fix it ! No patches, no SP ! JUST DONT FIX IT. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 392 messages Popularité : +12 (12 votes) |
|
Posté le 31 mars 2015 - 12:39 |
| |
| |
| | | |
|
| | |
| |
Posté le 02 avril 2015 - 11:46 |
J'ai bien relu ton aide sur le site que tu m'a indiqué. Pour moi il faut que je retrouve dans data de wireshark le même format car il s'agit du protocole fins. Je dois arriver à écrire la même chose qu'écrit le multiway d'omron. Je ne vois pas comment formater ma chaine... Merci pour ton aide |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 392 messages Popularité : +12 (12 votes) |
|
Posté le 02 avril 2015 - 13:36 |
Salut, Wireshark te montre une chaine en hexa... Tu dois envoyer les caractères en ascii, soit sous forme de chaine, soit sous forme de buffer.
sNotFormattedData est une chaîne = "800003009100007200030101820001000003" nDataSize est un entier = Taille(sNotFormatted) /2 SChainToSend est une chaîne = ""
Pour i=1 a nDataSize pas 2 sChainTosend = sChainToSend + Caract(Val(Milieu(sNotFormattedData,i,2),"x") ) FIN
ET envoyer sChainToSend via le socket
A+
-- If it works, don't touch it, don't look at it, AND don't fix it ! No patches, no SP ! JUST DONT FIX IT. |
| |
| |
| | | |
|
| | |
| |
Posté le 03 avril 2015 - 12:34 |
Merci pour ton aide mais les essais sont non concluant... |
| |
| |
| | | |
|
| | |
| |
Posté le 03 avril 2015 - 15:50 |
et sans voir ton code, on aura du mal à t'aider à le corriger
On 4/3/2015 4:34 AM, Oertli wrote: > Merci pour ton aide mais les essais sont non concluant... |
| |
| |
| | | |
|
| | |
| |
Posté le 05 avril 2015 - 20:06 |
Bonjour,
C'est sur qu'avec ton code cela serait plus simple pour t'aider mais je persiste à t'orienter vers un buffer correctement initialisé avec la fonction hexaversbuffer, en tenant compte du nombre de mots. |
| |
| |
| | | |
|
| | |
| |
Posté le 27 janvier 2016 - 11:33 |
Je relance le post. Voici le code:
SI SocketConnecte("Api",9600,"192.168.1.145") = Faux ALORS// Erreur("erreur connexion " + ErreurInfo(errMessage)) SINON Socket.Option = SocketNagleOff SI SocketChangeModeTransmission("Api",SocketSansMarqueurFin)= Vrai ALORS Trace("Connexion ok") FIN FIN
Reponse_autom est une chaîne ////envoi de la demande d'écriture bufF1 est une chaîne="@00FAA80000300910000720002" bufF2 est une chaîne="0101820001000003" bufF3 est une chaîne="*s" sFCS est une chaîne=Pl_CheckSum(bufF1+bufF2)
//SI SocketEcrit("Api",bufF1+bufF2+bufF3+FCS)= Vrai ALORS SI SocketEcrit("Api",bufF1+bufF2+bufF3+"0A")= Vrai ALORS //Lecture de la réponse automate et traitement Reponse_autom=SocketLit("Api",Faux) Trace(Reponse_autom) SINON RENVOYER("erreur lors de la demande d'écriture ") FIN
SocketFerme("Api")
L'automate me répond FINS
Là doc utilisé https://www.myomron.com/downloads/1.Manuals//Networks/W227E12_FINS_Commands_Reference_Manual.pdf |
| |
| |
| | | |
|
| | | | |
| | |
|