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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
| Const Device = CB280
Dim Donnees As Byte ' D0->D7 present sur bascules
Dim Num_Voie As Integer ' Numero de la voie 1 a 32
Dim Adresse_Switch As Integer ' Adresse
Const Port_Donnees As Byte = 4 ' port 4 P32->P39 broche 44->51
Dim RRS485 As String*7 'reception donnee RS485 7 caracteres
Dim RETERNET As String*7 'reception donnee par port Ethernet
Dim i As Integer
Dim Recadr As Integer 'Adresse recu
Dim Recvoie As Integer 'Numero de voie recu
Dim Rectype As String*1 'Type 's' ou 'r'
Dim Vo As Integer
Dim Entree As Integer 'Nombre d'entree de la matrice
Dim Sortie As Integer 'Nombre de sortie de la matrice
Dim Commande As String 'Commande a envoyer vers les switchs
Dim Repeat As Byte
Dim WRS485 As String*7
For i=1 To 47
Output i
Next
For i=1 To 8
Out i,1
Next
For i=10 To 12
Out i,1
Next
For i=14 To 39
Out i,1
Next
For i=45 To 47
Out i,1
Next
Out 13,1
'Debug "LOG12003 ED0: ",Dec Adresse_Switch,Cr
'******************* Ouverture des COM *************************
Opencom 1,9600, 3, 50, 20 ' port1, 9600Bds, 1bit arret, sans parit buffer sortie 10
On Recv1 Gosub RECNET ' Interuption reception caractere port Ethernet
Set Until 1,7 ' Attend la reception de 7 caracteres
Wait 2000
Opencom 0,9600, 3, 50, 20 ' port1, 9600Bds, 1bit arret, sans parit buffer sortie 10
On Recv0 Gosub RECRS485 ' protocole RS485, chanel 0, port controle P9 broche
'Set Rs485 0,13
Set Until 0,7
'************************************************************************
Do
Loop
'************************************************************************
RECNET:
RETERNET=Getstr(1,7)
'Debug RETERNET,Cr
'Debug "hello",Cr
Rectype = Mid(RETERNET,1,1)
Recadr = Val(Mid(RETERNET,2,2))
Recvoie = Val(Mid(RETERNET,6,2))
If Recvoie = 91 Then
Entree = 6
Sortie = 2
Commande = "r" + Dp(Sortie,2,1) + "11" + Dp(Entree,2,1)
Putstr 1, Commande
Elseif Recvoie = 90 Then
Vo = Eeread(Recadr*2,2)
Commande = "r" + Dp(Recadr,2,1) + "11" + Dp(Vo,2,1)
Putstr 1,Commande
Elseif Recvoie = 97 Then
Eewrite Recadr*2,0,2
Commande = "s" + Dp(Recadr,2,1) + "1100"
Putstr 0, Commande
Commande = "r" + Dp(Recadr,2,1) + "1100"
Putstr 1, Commande
Else
Commande = "s" + Dp(Recadr,2,1) + "11" + Dp(Recvoie,2,1)
'Putstr 0, Commande
Debug RETERNET,Cr
Debug "",Cr
Out 13,0
End If
Return
RECRS485:
RRS485= Getstr(0,7)
Rectype = Mid(RRS485,1,1)
Recadr = Val(Mid(RRS485,2,2))
Recvoie = Val(Mid(RRS485,6,2))
Num_Voie = Recvoie
Adresse_Switch = Recadr
Eewrite Recadr*2, Recvoie,2
Commande = Rectype + Dp(Recadr,2,1) + "11" + Dp(Recvoie,2,1)
Putstr 1, Commande
Out 13,1
Return |
Partager