##// END OF EJS Templates
Update RC model, RC api for testing...
Update RC model, RC api for testing git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@208 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71

File last commit:

r185:66e7f4294add
r185:66e7f4294add
Show More
api.py
98 lines | 2.2 KiB | text/x-python | PythonLexer
'''
API to configure new Radar controller
@author: Juan C. Espinoza
'''
import os
import json
import requests
from struct import pack
from base64 import b64encode
class RCApi(object):
def __init__(self, ip, port=80):
self.url = 'http://{}:{}/'.format(ip, port)
self.params = None
def load(self, filename):
self.params = json.load(open(filename))
print 'RC Configuration: {}'.format(self.params['name'])
def status(self):
url = os.path.join(self.url, 'status')
req = requests.get(url)
return req.json()
def read(self):
url = os.path.join(self.url, 'read')
req = requests.get(url)
return req.json()
def stop(self):
url = os.path.join(self.url, 'stop')
req = requests.post(url)
return req.json()
def reset(self):
url = os.path.join(self.url, 'reset')
req = requests.post(url)
return req.json()
def start(self):
url = os.path.join(self.url, 'start')
req = requests.post(url)
return req.json()
def write(self):
url_write = os.path.join(self.url, 'write')
url_divider = os.path.join(self.url, 'divisor')
values = zip(self.params['pulses'],
[x-1 for x in self.params['delays']])
payload = ''
for tup in values:
vals = pack('<HH', *tup)
payload += '\x05'+vals[0]+'\x04'+vals[1]+'\x05'+vals[2]+'\x04'+vals[3]
req = requests.post(url_divider,
data={'divisor':int(self.params['clock_divider'])-1})
if 'ok' not in req.text:
print 'Error sending divider'
return False
req = requests.post(url_write,
data=b64encode(payload))
return req.json()
if __name__ == '__main__':
ip = '10.10.10.100'
filename = '/home/jespinoza/Downloads/rc_150EEJ.json'
rc = RCApi(ip)
rc.load(filename)
print rc.status()
print rc.reset()
print rc.stop()
print rc.write()
print rc.start()