Classe et accès aux méthodes de la classe par héritage
Bonjour à tous,
Voilà je bosse sur une application graphique (PyQt/PySide) qui devra me permettre d'effectuer un certain nombre de test via la framework unittest ou PyUnit.
Je dois utiliser pexpect pour lancer un serveur JTAG et lui envoyer des commandes, j'ai donc écrit la classe ModTelnet qui se connecte et ses méthodes send, receive, et stop pour respectivement envoyer/recevoir des commandes et arrêter la connection serveur comme le montre le code ci-dessous :
Code:
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
| """
Communication with embedded board
"""
import sys
import time
import threading
import Queue
import pexpect
import serial
import fdpexpect
from pexpect import EOF, TIMEOUT
class ModTelnet():
def __init__(self):
self.is_running = False
self.HOST = 'localhost'
self.port = '4444'
def connect(self):
#connect to board with JTAG and OpenOCD
self.is_running = True
password = 'xxxx'
myfile = 'openocd.cfg'
self._ocd = pexpect.spawn('sudo openocd -f %s' % (myfile))
i = self._ocd.expect(['password', EOF, TIMEOUT])
if i == 0:
self._ocd.sendline(password)
time.sleep(1.0)
self._connect_to_tn()
elif i == 1:
print ' *** OCD Connection failed *** '
raise Disconnected()
elif i == 2:
print ' *** OCD Connection timeout *** '
raise Timeout()
def _connect_to_tn(self):
#connect to telnet session @ localhost port 4444
self._tn = pexpect.spawn('telnet %s %s' % (self.HOST, self.port))
condition = self._tn.expect(['>', EOF, TIMEOUT])
if condition == 0:
print 'Telnet opened with success'
elif condition == 1:
print self._tn.before
raise Disconnected()
elif condition == 2:
print self._tn.before
raise Timeout()
def receive(self):
#receive data (= msg) from telnet stdout
data = [ EOF, TIMEOUT, '>' ]
index = self._tn.expect(data, 2)
if index == 0:
return 'eof', None
elif index == 1:
return 'timeout', None
elif index == 2:
print 'success', self._tn.before.split('\r\n')[1:]
return 'success',self._tn.before
def send(self, command):
print 'sending command: ', command
self._tn.sendline(command)
def stop(self):
print 'Connection stopped !'
self._ocd.sendcontrol('c')
if __name__ =='__main__':
try:
tn = ModTelnet()
tn.connect()
except:
print 'Cannot connect to board!'
exit(0) |
C'est sûrement tout bête comme problème...mais je n'arrive pas à utiliser mes classes send, receive et stop sans générer une erreur du style
"ModTelnet has no 'send' attribute"
Alors comment doit-je faire? sachant qu'il me faut absolument pouvoir accéder à ces méthodes depuis un autre module ??
Merci pour toutes vos réponses !
Cordialement