# Piloter la Carte USB 8 Relais en Python sous Linux

**URL:** <https://forum.gce-electronics.com/t/piloter-la-carte-usb-8-relais-en-python-sous-linux/4582>\
**Category:** Carte USB 8 Relais\
**Created:** [Mai 8, 2017, 2:36 UTC](https://forum.gce-electronics.com/t/piloter-la-carte-usb-8-relais-en-python-sous-linux/4582 "2017-05-08T14:36:40Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![captainigloo](https://forum.gce-electronics.com/user_avatar/forum.gce-electronics.com/captainigloo/32/1548_2.png) [@captainigloo](https://forum.gce-electronics.com/u/captainigloo)\
**Post date:** [Mai 8, 2017, 2:36 UTC](https://forum.gce-electronics.com/t/piloter-la-carte-usb-8-relais-en-python-sous-linux/4582/1 "2017-05-08T14:36:40Z")

</div>

Piloter la Carte USB 8 Relais en Python sous Linux

 ![](https://forum.gce-electronics.com/uploads/default/original/2X/d/d600bf60b605f3b3789f1e2f40a07a2cd4927afa.jpg)

Voici un script que j’ai retrouvé en triant tout mon bazar…

Il est très facile de décliner la méthode pour créer des automates…

```
#!/usr/bin/env pytho
# Pilotage GCE USB 8 Relay Board
import time
import serial

def init_serial(pPort):         
    global ser          
    ser = serial.Serial()
    ser.baudrate = 9600 
    ser.port = pPort
    ser.bytesize = 8
    ser.parity = 'N'
    ser.timeout = None
    ser.xonxoff = False
    ser.rtscts=False
    ser.dsrdtr=False
    ser.timeout = 1
    ser.open()          

    if ser.isOpen():
        print 'Connexion port : ' + ser.portstr  

init_serial('/dev/ttyUSB0')
while True:
    ser.close()
    ser.open()
    time.sleep(2) 
    cmd = raw_input('Saisir ma commande :\r\n')
    ser.write(cmd.encode('ascii')+'\r\n')
    if cmd =='q':
        ser.close()
        print ser.portstr +' est interrompu'
        exit()
    else:
        bytes = ser.readline() 
        print ('Renvoie :\r\n' + bytes) 

```

Sur la base Hexa ou ASCII on peut piloter la carte 🙂

```
*****************************************************************************
Configuration port série: 1 start, 8 bit, 1 stop (vitesse 9600 bauds)
*****************************************************************************
La trame est composée de 5 caractères (minuscule ou majuscule) pouvant etre envoyés en ASCII ou en Hexadécimal

****************
Code ascii
****************
                          
Start of frame: RLY
N° channel: 0 à 8
CMD: 0 ou 1

Exemple de trame:

RLY11 // commute le relais 1 en position travail
RLY10 // commute le relais 1 en position repos
RLY21 // commute le relais 2 en position travail
...........................................................................
RLY80 commute le relais 8 en position repos

En cas de mauvaise commande la carte renvoi un retour chariot et le caractère ?

****************
Code hexa
****************
Start of frame: 0x52 0x4C 0x59 ou 0x72 0x6C 0x79
N° channel: 0x31 à 0x38
Cmd: 0x30 ou 0x31

Exemple de trame:

0x52 0x4C 0x59 0x31 0x31 // commute le relais 1 en position travail
0x52 0x4C 0x59 0x31 0x30 // commute le relais 1 en position repos
0x52 0x4C 0x59 0x32 0x31 // commute le relais 2 en position travail
...........................................................................
0x52 0x4C 0x59 0x38 0x30 commute le relais 8 en position repos

Pour tout autre caractère ou chaines de caractères la carte renvoi le code suivant:
0x0D 0x3F
*******************************************************************************
Modification du :04/09/2009
*******************************************************************************

Rajout du mode mémoire: la carte garde la dernière configuration en mémoire en cas de coupure d'alimentation.

****************
Code ascii 
****************
M0 // Mode mémore désactivé
M1 // Mode mémoire activé

****************
Code hexa
****************
0x4D 0x30 // Mode mémore désactivé
0x4D 0x31 // Mode mémoire activé
*******************************************************************************

Rajout d'une commande pour connaitre l'état des relais.

****************
Code ascii 
****************?RLY // Renvoi l'état logique des 8 relais sous la forme >00000000 (le caractère le plus à droite correspond au relais 8)

****************
Code hexa
****************
0X3F 0x52 0x4C 0x59 // Renvoi l'état logique des 8 relais sous la forme >00000000 (le caractère le plus à droite correspond au relais 8)

******************************************************************************

```

END
