Thanks Tim, and John for your quick responses!
Tim, I tested your function and it works! Though I don't completely
understand how. Could you possibly explain this?
John, I test your MEDUIM_WAYand it works as well. How is it that
putting the string together this way translates into a hex value to be
transmitted to the serial port? When I manually tried to put a string
together I couldn't get this to happen. I was trying:
controlString = '!SC' + '\\' + ch.__str__() + '\\' + rate.__str__()
...etc
also I noticed you added another line to the code which appears to
split the low and high bytes for me? If so thanks! Could you also offer
an explanation on how this works. I tried a google search and couldn't
get a decent explanation. I implemented this a little differently as
you can see in my Position class. Could you possibly offer any info on
the benefits/drawbacks of the different methods?
Thanks again to both of you for your quick responses and help.
Will
import serial
import types
class Position:
def __init__(self, num):
Takes the position as an int, and splits the low and high
bytes
into instance members.
self.lowByte = num 0x00FF
self.highByte = (num 0xFF00) 8
def __str__(self):
Mainly for debugging purposes. Allows meaningful output when
printed
return 'Low: ' + self.lowByte.__str__() + '\nHigh: ' +
self.highByte.__str__()
def makeString(a):
Takes in a list, and intelligentlly smashes everything
together.
Outputs everything as a hex string.
Posted by: Tim Chase on comp.lang.python
return ''.join([type(x) != types.IntType and
str(x) or chr(x) for x in a])
def getVer(localpsc):
Gets the version from the PSC. Mainly just to verify a
connection
localpsc.write('!SCVER?\r')
localpsc.read(8) #Discard the echo!
s = localpsc.read(3)
print s
def moveServo(localpsc, ch, rate, position):
Takes in a serial object, the desired channel, the ramp rate,
and
the desired position of ther servo. Moves the servo to the desired
postion.
#localpsc.write('!SC', ch, rate, position.low, position.high, '\r')
#controlString = makeString(['!SC', ch, rate, position.lowByte,
position.highByte, '\r'])
#localpsc.write(controlString)
#localpsc.flushInput() #discard the echo!
Following line from John Machin
controlString = !SC%c%c%c%c\r % (ch, rate, position.lowByte,
position.highByte)
localpsc.write(controlString)
psc = serial.Serial(1, 2400)
mypos = Position(2500)
moveServo(psc, 0, 5, mypos)
psc.close()
--
http://mail.python.org/mailman/listinfo/python-list