Skip to content

Instantly share code, notes, and snippets.

@treeherder
Last active August 29, 2015 14:03
Show Gist options
  • Save treeherder/7d9fc7c8699d049ef37a to your computer and use it in GitHub Desktop.
Save treeherder/7d9fc7c8699d049ef37a to your computer and use it in GitHub Desktop.
fledgling rpc for some automated tasks.. works great so far.
import xmlrpclib, time
server = xmlrpclib.ServerProxy('http://localhost:8000',allow_none=True)
print(server.system.listMethods())
server.capture(time.time())
server.tx("/1Z5000R")
import cv2, cv, serial
import numpy as np
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
class Camera():
def __init__(self):
self.cap = cv2.VideoCapture(0)
def capture(self, name):
flag, ret = self.cap.read()
cv2.imwrite("{0}.jpg".format(name), ret)
def finish(self):
self.cap.release()
class Motor():
def __init__(self):
self.ser = serial.Serial("/dev/ttyUSB0") #usb->rs438
def rx(self, size): #read from motor db9
ret_msg= self.com.readline()
self.ser.flushInput()
return ret_msg
def tx(self, message): #write to motor port
self.ser.flushInput()
self.ser.write(message+"\r\n")
class Analyzer(Motor, Camera):
pass
# RPC methods start here ----------->
# Restrict to a particular path.
# not sure why this is important, but it says to do it in the documentation
class RequestHandler(SimpleXMLRPCRequestHandler):
rpc_paths = ('/RPC2',)
# instantiate server
server = SimpleXMLRPCServer(("localhost", 8000),
requestHandler=RequestHandler,allow_none=True)
server.register_introspection_functions()
#server.register_function(cam, 'cam')
#better off as a class
server.register_instance(Analyzer, allow_dotted_names=True)
server.serve_forever() #justserverthings
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment