[GLLUG] Reading USB serial port broken
Henrik Morsing
henrik at morsing.cc
Wed Sep 25 09:40:24 UTC 2019
On Tue, Sep 24, 2019 at 09:16:15PM +0100, James Courtier-Dutton wrote:
>
[...]
>Would you be able to post the python script so we can see how you are
>setting up the tty and how you read/write bytes to it?
[...]
Sure, little script at the bottom. Looking through this, I have actually managed to solve the problem. Thanks.
I was planning to change the communication from timed to the Arduino saying "READY" and the Python script waiting for "READY" to proceed, but somewhere looking at this, a sleep() after opening the port had disappeared which meant the Python script sent its command too early and they both ended up waiting for each other.
I think the tail command meant the port was already open and the Arduino ready for a command, hance the Python/munin script was flying.
Thanks
import sys
def output():
received_data = "begin"
port = serial.Serial('/dev/ttyACM0', 115200, rtscts=0, dsrdtr=True, timeout=5)
port.write('munin;')
time.sleep(1)
received_data = port.readline()
while received_data != "end":
if re.match("arduino_[a-z]+_temp", received_data):
print(received_data)
received_data = port.readline().rstrip('\r\n')
port.close()
def config():
print("graph_title MVHR temperature")
print("arduino_extract_temperature.label Extract temp")
#print("arduino_extract_humidity.label Extract humidity")
print("arduino_feed_temperature.label Feed temp")
#print("arduino_feed_humidity.label Feed humidity")
print("arduino_supply_temperature.label Supply temp")
#print("arduino_supply_humidity.label Supply humidity")
print("arduino_loft_temperature.label Loft temp")
#print("arduino_loft_humidity.label Loft humidity")
try:
rc = sys.argv[1]
except:
rc = ""
if rc == "config":
config()
else:
output()
More information about the GLLUG
mailing list