'Activity module ' Pour INTERFACE ETHERNET Multi IN OUT n°2 Sub Process_Globals 'These global variables will be declared once when the application starts. 'These variables can be accessed from all modules. Dim UDPSocket1 As UDPSocket Dim IP As String Dim PORT As Int Dim MDP As String Dim Timer1 As Timer ' Timer pour la lecture en boucle des données: In analog, In digit et température. End Sub Sub Globals 'These global variables will be redeclared each time the activity is created. 'These variables can only be accessed from this module. Dim scvMain As ScrollView Dim PanelNb As Int : PanelNb=13 Dim PanelHeight As Int : PanelHeight=45dip Dim Button1 As Button Dim Button2 As Button Dim Button3 As Button Dim Label2 As Label Dim Panel1 As Panel Dim Panel2 As Panel Dim Panel3 As Panel Dim Panel4 As Panel Dim Label6 As Label Dim Label7 As Label Dim Label8 As Label Dim Label9 As Label Dim Label10 As Label Dim Label11 As Label Dim Panel5 As Panel Dim Panel6 As Panel Dim Panel7 As Panel Dim Panel8 As Panel Dim Button4 As Button Dim Button5 As Button End Sub Sub Activity_Create(FirstTime As Boolean) Dim i As Int '* On définit les paramètres UDP * If FirstTime=True Then IP="192.168.0.9" ' On définit notre IP. PORT=5030 ' On définit le numéro de PORT MDP="ABCDEFGHIJKLMNOP" ' Mot de passe par defaut composé toujours de 16 caractères !!! UDPSocket1.Initialize("UDP",PORT,45) Timer1.Initialize("Timer1",1000) ' Time = 1 seconde Timer1.Enabled=True ' Active le Timer1. End If Activity.LoadLayout("Main") '* Création et affichage de la listView * scvMain.Initialize(500) Activity.AddView(scvMain, 0, 40%y, 100%x, 60%y) For i=0 To PanelNb-1 Dim pnltest As Panel Dim label_Gauche As Label Dim btnON As Button Dim btnOFF As Button Dim btnBistable As Button pnltest.Initialize("pnlTest") scvMain.Panel.AddView(pnltest,0,5dip+i*PanelHeight,100%x,PanelHeight) pnltest.Tag=i If (i Mod 2)=1 Then pnltest.Color=Colors.Magenta Else pnltest.Color=Colors.Blue End If '* Affiche le texte "Relais n° X" à gauche.* If i>=0 AND i<5 Then label_Gauche.Initialize("lbl_Gauche") pnltest.AddView(label_Gauche,10dip, 5dip, 120dip, 40dip) label_Gauche.Tag=i label_Gauche.TextSize=20 label_Gauche.Text="Relais n° "&(i+1) End If '******************************************** '* Affiche le texte "OUTD n° X" à gauche.* If i>=5 AND i<=13 Then label_Gauche.Initialize("lbl_Gauche") pnltest.AddView(label_Gauche,10dip, 5dip, 120dip, 40dip) label_Gauche.Tag=i label_Gauche.TextSize=20 label_Gauche.Text="OUT"&(i-5) End If '******************************************** '* Affiche les boutons ON * btnON.Initialize("btnON") pnltest.AddView(btnON,120dip, 5dip, 50dip, 40dip) btnON.Tag=i btnON.Text="ON" '************************* '* Affiche les boutons OFF * btnOFF.Initialize("btnOFF") pnltest.AddView(btnOFF,175dip, 5dip, 50dip, 40dip) btnOFF.Tag=i btnOFF.Text="OFF" '************************* '* Affiche les boutons Bistable * If i>=0 AND i<5 Then btnBistable.Initialize("btnBistable") pnltest.AddView(btnBistable,230dip, 5dip, 80dip, 40dip) btnBistable.Tag=i btnBistable.Text="Bistable" End If '************************* Next scvMain.Panel.Height=PanelNb*PanelHeight '************************************************ Activity.Title="Interface Ethernet Multi IN OUT n°2" ' Titre de l'application ToastMessageShow("IP: " & IP & " et PORT: " & PORT, False) ' Affichage furtif de l'IP et du PORT. End Sub Sub Activity_Resume End Sub Sub Activity_Pause (UserClosed As Boolean) Timer1.Enabled=False ' Arrête le Timer1. UDPSocket1.Close ' Referme le Socket UDP. End Sub Sub UDP_PacketArrived (Packet As UDPPacket) ' Réception des paquets UDP Dim CARAC As String Dim CHAINE As String Dim IND0 As String Dim IND1 As String Dim IND2 As String Dim IND3 As String Dim IND4 As String Dim IND5 As String Dim IND6 As String Dim IND7 As String Dim INA0 As String Dim VINA0 As Double Dim INA1 As String Dim VINA1 As Double Dim INA2 As String Dim VINA2 As Double Dim INA3 As String Dim VINA3 As Double Dim INA4 As String Dim VINA4 As Double Dim INA5 As String Dim VINA5 As Double Dim MILLE As String Dim CENT As String Dim DIX As String Dim UNIT As String Dim TEMP As String Dim TEMPERATURE As Double Dim SIGNE As String CARAC = BytesToString(Packet.Data, Packet.Offset, Packet.Length, "UTF8") If CARAC<>" " Then ' Doit être différent de ESPACE pour le traitement des informations reçues. 'Label2.Text=CARAC ' Ne sert qu'au développement du programme pour afficher la chaine de caractères complete envoyée par le PIC. CHAINE = CARAC ' Transfert de la chaine dans une autre afin d'effectuer le traitement. '* Traitement : IND0 * IND0 = CHAINE.SubString2(0,1) ' Retourne le premier caractère de la chaine. If IND0="o" Then Panel1.Color=Colors.Green End If If IND0="f" Then Panel1.Color=Colors.Red End If '* Traitement : IND1 * IND1 = CHAINE.SubString2(1,2) ' Retourne le second caractère de la chaine. If IND1="o" Then Panel2.Color=Colors.Green End If If IND1="f" Then Panel2.Color=Colors.Red End If '* Traitement : IND2 * IND2 = CHAINE.SubString2(2,3) ' Retourne le troisième caractère de la chaine. If IND2="o" Then Panel3.Color=Colors.Green End If If IND2="f" Then Panel3.Color=Colors.Red End If '* Traitement : IND3 * IND3 = CHAINE.SubString2(3,4) ' Retourne le quatrième caractère de la chaine. If IND3="o" Then Panel4.Color=Colors.Green End If If IND3="f" Then Panel4.Color=Colors.Red End If '* Traitement : IND4 * IND4 = CHAINE.SubString2(4,5) ' Retourne le cinquième caractère de la chaine. If IND4="o" Then Panel5.Color=Colors.Green End If If IND4="f" Then Panel5.Color=Colors.Red End If '* Traitement : IND5 * IND5 = CHAINE.SubString2(5,6) ' Retourne le sixième caractère de la chaine. If IND5="o" Then Panel6.Color=Colors.Green End If If IND5="f" Then Panel6.Color=Colors.Red End If '* Traitement : IND6 * IND6 = CHAINE.SubString2(6,7) ' Retourne le septième caractère de la chaine. If IND6="o" Then Panel7.Color=Colors.Green End If If IND6="f" Then Panel7.Color=Colors.Red End If '* Traitement : IND7 * IND7 = CHAINE.SubString2(7,8) ' Retourne le huitième caractère de la chaine. If IND7="o" Then Panel8.Color=Colors.Green End If If IND7="f" Then Panel8.Color=Colors.Red End If '* Traitement : INA0 MILLE=CHAINE.SubString2(9,10) CENT=CHAINE.SubString2(10,11) DIX=CHAINE.SubString2(11,12) UNIT=CHAINE.SubString2(12,13) INA0=((1000*MILLE) + (100*CENT) + (10*DIX) + UNIT) VINA0=(5/1024) * INA0 VINA0=Round2(VINA0, 3) ' Arrondie le résultat à 3 chiffres après la virgule Label6.Text="INA0: "&INA0& " - Tension: "&VINA0& " Volts" '* Traitement : INA1 MILLE=CHAINE.SubString2(15,16) CENT=CHAINE.SubString2(16,17) DIX=CHAINE.SubString2(17,18) UNIT=CHAINE.SubString2(18,19) INA1=((1000*MILLE) + (100*CENT) + (10*DIX) + UNIT) VINA1=(5/1024) * INA1 VINA1=Round2(VINA1, 3) ' Arrondie le résultat à 3 chiffres après la virgule Label7.Text="INA1: "&INA1& " - Tension: "&VINA1& " Volts" '* Traitement : INA2 MILLE=CHAINE.SubString2(21,22) CENT=CHAINE.SubString2(22,23) DIX=CHAINE.SubString2(23,24) UNIT=CHAINE.SubString2(24,25) INA2=((1000*MILLE) + (100*CENT) + (10*DIX) + UNIT) VINA2=(5/1024) * INA2 VINA2=Round2(VINA2, 3) ' Arrondie le résultat à 3 chiffres après la virgule Label8.Text="INA2: "&INA2& " - Tension: "&VINA2& " Volts" '* Traitement : INA3 MILLE=CHAINE.SubString2(27,28) CENT=CHAINE.SubString2(28,29) DIX=CHAINE.SubString2(29,30) UNIT=CHAINE.SubString2(30,31) INA3=((1000*MILLE) + (100*CENT) + (10*DIX) + UNIT) VINA3=(5/1024) * INA3 VINA3=Round2(VINA3, 3) ' Arrondie le résultat à 3 chiffres après la virgule Label9.Text="INA3: "&INA3& " - Tension: "&VINA3& " Volts" '* Traitement : INA4 MILLE=CHAINE.SubString2(33,34) CENT=CHAINE.SubString2(34,35) DIX=CHAINE.SubString2(35,36) UNIT=CHAINE.SubString2(36,37) INA4=((1000*MILLE) + (100*CENT) + (10*DIX) + UNIT) VINA4=(5/1024) * INA4 VINA4=Round2(VINA4, 3) ' Arrondie le résultat à 3 chiffres après la virgule Label10.Text="INA4: "&INA4& " - Tension: "&VINA4& " Volts" '* Traitement de la température MILLE=CHAINE.SubString2(40,41) CENT=CHAINE.SubString2(41,42) DIX=CHAINE.SubString2(42,43) UNIT=CHAINE.SubString2(43,44) TEMP=((1000*MILLE) + (100*CENT) + (10*DIX) + UNIT) TEMPERATURE=TEMP / 10 TEMPERATURE=Round2(TEMPERATURE, 1) ' Arrondie le résultat à 1 chiffre après la virgule SIGNE=CHAINE.SubString2(37,38) If SIGNE="+" Then Label11.Text="+"&TEMPERATURE&"°C" End If If SIGNE="-" Then Label11.Text="-"&TEMPERATURE&"°C" End If End If End Sub Sub Timer1_Tick ' Récupération. Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"INPUT").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End Sub Sub btnON_Click ' Gestion des 13 Boutons ON Dim Send As Button Send=Sender If Send.Tag=0 Then ' Relais n°1 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S01N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=1 Then ' Relais n°2 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S02N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=2 Then ' Relais n°3 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S03N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=3 Then ' Relais n°4 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S04N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=4 Then ' Relais n°5 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S05N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=5 Then ' OUTD0 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R00N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=6 Then ' OUTD1 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R01N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=7 Then ' OUTD2 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R02N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=8 Then ' OUTD3 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R03N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=9 Then ' OUTD4 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R04N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=10 Then ' OUTD5 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R05N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=11 Then ' OUTD6 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R06N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=12 Then ' OUTD7 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R07N").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If End Sub Sub btnOFF_Click ' Gestion des 13 Boutons OFF Dim Send As Button Send=Sender If Send.Tag=0 Then ' Relais n°1 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S01F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=1 Then ' Relais n°2 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S02F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=2 Then ' Relais n°3 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S03F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=3 Then ' Relais n°4 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S04F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=4 Then ' Relais n°5 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S05F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=5 Then ' OUTD0 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R00F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=6 Then ' OUTD1 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R01F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=7 Then ' OUTD2 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R02F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=8 Then ' OUTD3 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R03F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=9 Then ' OUTD4 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R04F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=10 Then ' OUTD5 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R05F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=11 Then ' OUTD6 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R06F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=12 Then ' OUTD7 Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"R07F").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If End Sub Sub btnBistable_Click ' Gestion des 5 Boutons Bistable Dim Send As Button Send=Sender If Send.Tag=0 Then Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S01T").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=1 Then Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S02T").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=2 Then Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S03T").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=3 Then Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S04T").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If If Send.Tag=4 Then Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"S05T").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End If End Sub Sub Button1_Click ' Bouton permettant de mettre toutes les Relais actifs Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"N$").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End Sub Sub Button2_Click ' Bouton permettant de mettre toutes les Relais inactifs Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"F$").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End Sub Sub Button4_Click ' Toutes les sorties OUTD0 à OUTD7 à l'état haut. Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"VH").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End Sub Sub Button5_Click ' Toutes les sorties OUTD0 à OUTD7 à l'état bas Dim Packet As UDPPacket Dim DATA() As Byte DATA = (MDP&"VL").GetBytes("UTF8") Packet.Initialize(DATA, IP, PORT) UDPSocket1.Send(Packet) End Sub Sub Button3_Click ' Bouton Quitter l'application. Timer1.Enabled=False ' Arrête le Timer1. UDPSocket1.Close ' Referme le Socket UDP ExitApplication ' Tuer l'application End Sub