Bonjour,
je dis réaliser une communication entre un soft et un automate. J'ai réaliser une fenêtre avec windev, ce code fonctionne, je récupère bien les messages envoyé par l'automate.
Cependant, je dois créer une fenêtre qui interragi avec l'automate suivant les messages réceptonné, donc je fais une fenêtre et je fais un copier collé du code utilisé juste avant pour lire les messages avec le socketlit(), cepandant le socketlit() sur cette dernière reste vide même quand les messages sont envoyé.
Les différences entre les fenêtres :
sur la 1ere, je crée le socket sur un bouton, et je trace les messages reçu.
sur la deuxième, je crée le socket sur la fenêtre à l'ouverture du programme, je trace également les messages reçu.
Voici les codes:
(1ere fenêtre entièrement fonctionnel)
Clic sur BTN_Connexion
Procedure local attente()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SI SocketCrée("server", 44818,"10.29.1.60") = Faux ALORS Erreur("Erreur de création " + ErreurInfo(errMessage)) LIB_infoc="Problème lors du démarrage du serveur" SINON Socket.Option = SocketNagleOff SI SocketChangeModeTransmission("server",SocketSansMarqueurFin)= Vrai ALORS ThreadExécute("Thread1", threadNormal, attente) LIB_infoc="Connexion ok" FIN // Gestion des connexions des postes clients dans un thread FIN
procedure local affichemes()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 PROCEDURE attente() SI SocketAttendConnexion("server") ALORS // si une demande de connexion est en attente //canal est une chaîne //canal=SocketAccepte("server") //Cette fonction permet de créer le canal de communication entre la socket serveur et la socket cliente. //trace(canal) ThreadExécute("server",threadNormal,affichemes) //Lance l'exécution d'un "thread" Multitâche(-30) //La fonction Multitache avec un negatif suspend l'application FIN
Voici les codes pour ma deuxième fenêtre là où le problème se trouve:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 PROCEDURE affichemes() TANTQUE SocketExiste("server") = Vrai Msg est une chaîne = SocketLit("server", Vrai) SI Msg <> "" ALORS //ListeAjoute(LISTE_Messages, Maintenant() + " " + sMsg) //Pour i = 1 _a_ Taille(msg) PAS 2 // MaChaineASCII += caract(val(MaChaineHexa[[i sur 2]],"x")) //FIN Trace(Msg) FIN FIN //ListeAjoute("liste1",texte) ThreadArrête("",500) Multitâche(-30)
Fin d'initialisation de Fen_test:
procedure local attente():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SI SocketCrée("server", 44818,"10.29.1.60") = Faux ALORS Erreur("Erreur de création " + ErreurInfo(errMessage)) LIB_SansNom1="Problème lors du démarrage du serveur" SINON Socket.Option = SocketNagleOff SI SocketChangeModeTransmission("server",SocketSansMarqueurFin)= Vrai ALORS Trace("j'attend") ThreadExécute("Thread1", threadNormal, attente) LIB_SansNom1="Connexion serveur créée....." FIN // Gestion des connexions des postes clients dans un thread FIN
procedure local affichem
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 PROCEDURE attente() SI SocketAttendConnexion("server") ALORS // si une demande de connexion est en attente //canal est une chaîne //canal=SocketAccepte("server") //Cette fonction permet de créer le canal de communication entre la socket serveur et la socket cliente. //trace(canal) Trace("attend connexion") ThreadExécute("server",threadNormal,affichemes) //Lance l'exécution d'un "thread" Multitâche(-30) //La fonction Multitache avec un negatif suspend l'application FIN
Vous remarquerez qu'il y a beaucoup de ligne commenté, en fait j'ai essayé plusieurs chose avant de venir sur le forum !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 PROCEDURE affichemes() Trace("affichemess") TANTQUE SocketExiste("server") = Vrai Trace("socket existe") Msg est une chaîne Msg = SocketLit("server", Vrai) Trace("test") SI Msg <> "" ALORS Trace("message") //ListeAjoute(LISTE_Messages, Maintenant() + " " + sMsg) //Pour i = 1 _a_ Taille(msg) PAS 2 // MaChaineASCII += caract(val(MaChaineHexa[[i sur 2]],"x")) //FIN //affichage appel malade niveau 1 Trace(Msg) // SI Gauche(Msg,2)= "CH" ALORS // {"TRM_Voyant_"+msg}..Couleur = RougeClair // ListeAjoute(LISTE_alarme,HeureSys+": Appel chambre "+Msg) // FIN // //affichage appel malade niveau 2 // SI Gauche(Msg,3)= "+CH" ALORS // {"TRM_Voyant_"+Msg}..Couleur = RougeFoncé // {"LIB_Urgence_"+Msg} = "Urgence!" // ListeAjoute(LISTE_alarme,HeureSys+": Appel urgent chambre "+Msg) // FIN // //Acquittement appel malade // Si Gauche(Msg,3)="ACQ" ALORS // {"TRM_Voyant_"+Msg}..Couleur = VertClair // {"LIB_Urgence_"+Msg} = "" // ListeAjoute(LISTE_alarme,HeureSys+": L'appel de la chambre "+Msg+" vient d'être acquité") // FIN // //Repport d'alarme // SI Gauche(Msg,3)="AL:" ALORS // ListeAjoute(LISTE_alarme,HeureSys+" : "+Msg) // FIN // //Repport d'alarme // SI Gauche(Msg,3)="AP:" ALORS // ListeAjoute(LISTE_alarme,HeureSys+" : Une personne viens de sonner sur la porte côté Nord. Veuillez regarder la vidéo et appuyer sur le bouton d'ouverture de la porte si la personne est autorisé.") // AMC>>Play // BTN_ouverture_porte..Visible=vrai // FIN FIN FIN //ListeAjoute("liste1",texte) ThreadArrête("",500) Multitâche(-30)
Partager