Files
BleedingHeart/Interface/Comm.py
Cynopolis 857047683b Backup before switching to flexx for GUI
Added serial communication class that can succesfully communicate with the arduino. Started work on pygame GUI but I've decided to switch direction to using Flexx instead.
2020-03-20 11:55:04 -05:00

60 lines
2.2 KiB
Python

import serial
from time import sleep
class Comm:
current_pressure = -1
target_pressure = -1
motor_speed = -1
def __init__(self, port, baud_rate):
# Setup serial
self.comm = serial.Serial(port, baud_rate)
#read a line from the serial bus to sync arduino with python script
for x in range(0,5):
self.comm.readline()
self.getPID()
return
def getPID(self):
message = self.comm.readline().decode().strip()
#message = 'Current Pressure: 80, Target Pressure: 15, Motor Speed: 255'
#print(message)
if message[0:7] == 'Current':
startIndex = message.find(':')
endIndex = message.find(',')
self.current_pressure = float(message[startIndex+1:endIndex])
startIndex = message.find(':', endIndex)
endIndex = message.find(',', endIndex+1)
self.target_pressure = float(message[startIndex+1:endIndex])
startIndex = message.find(':', endIndex)
self.motor_speed = float(message[startIndex+1:len(message)])
#print("1", self.current_pressure, "2", self.target_pressure, "3", self.motor_speed)
return (self.current_pressure, self.target_pressure, self.motor_speed)
else:
return (self.current_pressure, self.target_pressure, self.motor_speed)
def setPressure(self, pressure):
pressure = float(pressure)
msg = 'PRSR ' + str(pressure) + '\r\n'
while self.getPID()[1] != pressure:
self.comm.write(msg.encode())
return
def setHeartRate(self, BPM):
msg = 'BEAT ' + str(BPM) + '\r\n'
response = 'Heart Rate set to ' + str(BPM) + ' BPM.'
ans = ''
while ans != response:
self.comm.write(msg.encode())
ans = self.comm.readline().decode().strip()
return
def fill(self, time):
msg = 'FILL ' + str(time) + '\r\n'
response = 'Filling for ' + str(time) + ' seconds.'
ans = ''
while ans != response:
self.comm.write(msg.encode())
ans = self.comm.readline().decode().strip()
return
#comm = Comm('COM11', 115200)