You've already forked AiraPulsar
Update
This commit is contained in:
91
testfield/legacy/server/arduino_api/arduino_api.py
Normal file
91
testfield/legacy/server/arduino_api/arduino_api.py
Normal file
@@ -0,0 +1,91 @@
|
||||
import json
|
||||
import serial
|
||||
import serial.tools.list_ports
|
||||
import time
|
||||
|
||||
data_table = dict()
|
||||
|
||||
class Motor(object):
|
||||
angle = None
|
||||
def __init__(self, code):
|
||||
self.angle = 0
|
||||
self.code = code
|
||||
data_table[code] = self.angle
|
||||
def get(self):
|
||||
self.angle = data_table[self.code]
|
||||
return self.angle
|
||||
def set(self, angle):
|
||||
self.angle = angle
|
||||
commander("svo", self.code, "s", angle)
|
||||
return self.angle
|
||||
|
||||
class Engine(object):
|
||||
speed = None
|
||||
def __init__(self, code):
|
||||
self.speed = 0
|
||||
self.code = code
|
||||
data_table[code] = self.speed
|
||||
def get(self):
|
||||
self.speed = data_table[self.code]
|
||||
return self.speed
|
||||
def tune(self, new_speed):
|
||||
self.speed = new_speed
|
||||
commander("eng", self.code, "s", new_speed)
|
||||
return self.speed
|
||||
|
||||
class Battery:
|
||||
def get():
|
||||
power_left = 0.9
|
||||
return power_left
|
||||
def stat():
|
||||
status = "Unplugged"
|
||||
return status
|
||||
|
||||
class Serial:
|
||||
ino = serial.Serial("COM7", 9600, timeout=2)
|
||||
if ino.is_open:
|
||||
print("串口初始化成功")
|
||||
def close():
|
||||
Serial.ino.close()
|
||||
def write(data):
|
||||
n = Serial.ino.write(data.encode())
|
||||
print(f"写入 {n} 字节", data.encode())
|
||||
def readln():
|
||||
data = Serial.ino.readline()
|
||||
print(f"读入: {data.decode('utf-8', 'ignore')}\n")
|
||||
return data.decode('utf-8', 'ignore')
|
||||
|
||||
def commander(type, device, option, num = -1):
|
||||
d = f""""type":"{type}", "device":"{device}", "option":"{option}", "num":{num}"""
|
||||
d = "{" + d + "}"
|
||||
Serial.write(d)
|
||||
if option == "q":
|
||||
b = Serial.readln()
|
||||
if b.strip() != "":
|
||||
print("BIS", b)
|
||||
b = json.loads(b)
|
||||
for i in b.keys():
|
||||
data_table[i] = b[i]
|
||||
|
||||
def debug():
|
||||
ports_list = list(serial.tools.list_ports.comports())
|
||||
if len(ports_list) <= 0:
|
||||
print("无串口设备。")
|
||||
else:
|
||||
print("可用的串口设备如下:")
|
||||
for comport in ports_list:
|
||||
print(list(comport)[0], list(comport)[1])
|
||||
#Serial.init()
|
||||
#time.sleep(1)
|
||||
#print("hi",a)
|
||||
#Serial.readln()
|
||||
Serial.close()
|
||||
"""/*
|
||||
data["t(ype)"]: svo/eng
|
||||
data["d(evice)"]: al, ar, tl, tr
|
||||
data["o(ption)"]: s(et)/q(uery)
|
||||
data["n(um)"]: SHORT
|
||||
*/"""
|
||||
|
||||
if __name__ == "__main__":
|
||||
debug()
|
Reference in New Issue
Block a user