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 : 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
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