
dalex
Hi,
These are intended to be for guidance only, so others can get the idea of how to convert C# or VB into Python. They are probably only useful to people who already use Python.
First step in to install IronPython from here:
http://ironpython.net/download/
Ironpython is simply a version of Python with extra .NET bindings.
At the IronPython Command prompt paste in one of the scripts below.
Enjoy!
David.
---------------
face_track.py
---------------
import clr
import sys
clr.AddReference('System.Windows.Forms')
from System.Windows.Forms import Application, Button, Form
from time import *
from thread import *
sys.path.Add(r"C:\[your path here]\EZ-SDK\DLL")
clr.AddReference ("EZ_B.dll")
import EZ_B
import FaceDetect
my_ezb = EZ_B.EZB()
_camera = EZ_B.Camera(my_ezb)
cameras = EZ_B.Camera.GetVideoCaptureDeviceList()
videoCaptureDeviceName = cameras[-1]
panel1 = Form()
panel2 = Form()
#these forms have only limited functionality here, e.g. trying to move the window will cause the window to freeze
p1 = start_new_thread(Application.Run,(panel1,))
p2 = start_new_thread(Application.Run,(panel2,))
_camera.StartCamera(videoCaptureDeviceName, panel1, panel2, 160, 120)
print "Video started:", videoCaptureDeviceName
while True:
if _camera.IsActive == False:
print 'Camera not active'
else:
f1 = _camera.CameraFaceDetection.GetFaceDetection()
if f1.isFound == False:
print 'No face detected'
else:
print f1.verticalLocation,f1.horizontalLocation
sleep(0.5)
------------------
RoboSapien.py
------------------
import clr
import sys
from time import *
sys.path.Add(r"C:\[your path here]\EZ-SDK\DLL")
clr.AddReference ("EZ_B.dll")
import EZ_B
def wait(my_ezb,seconds):
from time import sleep
seconds = int(seconds)
for i in xrange(seconds):
for j in xrange(10):
#regularly send a command to the board to keep it connected
#there is probably a better way to do this
my_ezb.Uart.SendSerial(my_ezb.Digital.DigitalPortEnum.D1, my_ezb.Uart.BAUD_RATE_ENUM.Baud_57600, "1")
sleep(0.1)
print i
def wait(my_ezb,seconds):
from time import sleep
seconds = int(seconds)
for i in xrange(seconds):
for j in xrange(10):
#regularly send a command to the board to keep it connected
#there is probably a better way to do this
my_ezb.Uart.SendSerial(my_ezb.Digital.DigitalPortEnum.D1, my_ezb.Uart.BAUD_RATE_ENUM.Baud_57600, "1")
sleep(0.1)
print i
def wakeup(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.WakeUp)
print 'Wake-up'
wait(my_ezb,pause)
def burp(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.Burp)
print 'Pardon'
wait(my_ezb,pause)
def fart(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.Fart)
print 'Oops'
wait(my_ezb,pause)
def highfive(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.HighFive)
print 'Gimme five!'
wait(my_ezb,pause)
def lefthandstrike(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.LeftHandStrike)
print 'Hiyah!'
wait(my_ezb,pause)
def righthandstrike(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.RightHandStrike)
print 'Hoyah!'
wait(my_ezb,pause)
def leftarmup(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.LeftArmUp)
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.Stop)
print 'Up'
wait(my_ezb,pause)
def rightarmup(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.RightArmUp)
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.Stop)
print 'Up'
wait(my_ezb,pause)
def leftarmdown(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.LeftArmDown)
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.Stop)
print 'Down'
wait(my_ezb,pause)
def rightarmdown(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.RightArmDown)
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.Stop)
print 'Down'
wait(my_ezb,pause)
def leftarmdown(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.LeftArmDown)
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.Stop)
print 'Down'
wait(my_ezb,pause)
def rightarmdown(my_ezb,pause):
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.RightArmDown)
my_ezb.RoboSapien.SendCommand(my_ezb.RoboSapien.RoboSapienCmdEnum.Stop)
print 'Down'
wait(my_ezb,pause)
my_ezb = EZ_B.EZB()
for i in xrange(20):
if my_ezb.IsConnected != True:
com_string = 'com'+str(i)
print 'Trying',com_string
my_ezb.Connect(com_string)
wait(my_ezb,5)
wakeup(my_ezb,15)
while my_ezb.IsConnected:
lefthandstrike(my_ezb,5)
righthandstrike(my_ezb,5)
leftarmup(my_ezb,3)
rightarmup(my_ezb,3)
leftarmdown(my_ezb,3)
rightarmdown(my_ezb,3)
-----------------------
Here are the files with the tabs in.
(Edit: I uploaded them here, but they don't appear, message me if you want them).