Ich möchte einen Motorcontroller über die "serielle Schnittstelle" ansteuern. Hierbei wird ein usb/seriel-converter verwendet.
Dieser scheint auch nicht mein Problem zu sein. Nach Auslösen des write-befehls verabschiedet sich mein Programm. Keine
Rückmeldung mehr. Bin in MotorOn wird nicht mehr ausgedruckt.
Bei erneutem Starten des Programms kommt die Fehlermeldung auf port kann nicht zugegriffen werden, was ja auch korrekt ist,
denn bis zum Schliessen kommt es ja nicht.
Code: Alles auswählen
import usb.core
import usb.util
import serial
class Oriental(object):
def __init__(self):
self.dev = usb.core.find(idVendor=0x403,idProduct=0x6001)
print 'dev is named :',self.dev
if self.dev is None:
raise ValueError('USB - Port not found !')
else:
#print'ELSE'
self.available = []
for i in range(256):
try:
print'tryNr =',i
self.serial = serial.Serial(i)
#print'1'
self.available.append((i,self.serial.portstr))
print'available =',self.available
self.serial.close()
print type(self.available)
#return self.available
if self.available is not None:
break
except serial.SerialException:
#print'Exception'
pass
def Port(self):
p = self.available[0]
port = list(p)
self.port = port[1]
print self.port
return self.port
def MotorOn(self,port):
self.port = port
self.serial = serial.Serial(self.port,9600,8,'N',1,timeout=5)
self.open = self.serial.isOpen()
print 'self.serial is open ?',self.open
self.serial.flushOutput()
self.serial.write("CURRENT=1")
print 'bin in MotorOn'
def Move(self,motion):
self.motion = motion
print 'motion is :',self.motion
self.serial.flushOutput()
self.serial.write(self.motion)
def Close(self,port):
self.port = port
self.serial.Serial.close(self.port)
if __name__ =="__main__" :
motion=("VS=10.0;TA=1.0;TD=1.0;VR=2.0;MI")
a = Oriental()
p=a.Port()
a.MotorOn(p)
a.Move(motion)
a.Close(p)
Folgende Meldungen erscheinen in der Konsole :
dev is named : <usb.core.Device object at 0x00000000025F7A20>
tryNr = 0
tryNr = 1
tryNr = 2
tryNr = 3
tryNr = 4
available = [(4, 'COM5')]
<type 'list'>
COM5
self.serial is open ? True