Snažim se o toto.
Arduino má teplotní čidla.
Naměřené hodnoty posilám po ser.portu
Serial.println("teplota_voda ,"+ teplota_voda)
Serial.println("teplota_kotel,"+ teplota_kotel);
teplota_voda ,51.9
teplota_kotel,62.8
Potřebují v python skript, který tuto komunikací bude zachytávat a zachycené hodnoty ukládat do souboru
Každé čidlo bude mit svůj soubor.
teplota_voda
teplota_kotel
Teploty se nebudou do souboru přidávat ale přepisovat, tedy bude v soubory vždy jen jedna hodnota.
Už jsem něco zkoušel.
- Kód: Vybrat vše
#!/usr/bin/python
# -*- encoding: utf-8 -*-
import serial
import sys
ser = serial.Serial('/dev/ttyUSB0',9600)
while True:
read_serial=ser.readline()
#print read_serial
x = (read_serial[0:13] )
if x == "teplota_kotel":
print "kotel"
y = (read_serial[14:] )
print(y)
soubor=file('/dev/shm/teplota_kotel','w')
soubor.write(y)
soubor.close()
if x == "teplota_voda ":
print "voda"
y = (read_serial[14:] )
print(y)
soubor=file('/dev/shm/teplota_voda','w')
soubor.write(y)
soubor.close()
Problém 1
Fungovat to funguje.
Když však ukončím skript vyskočí toto.
- Kód: Vybrat vše
^CTraceback (most recent call last):
File "/home/pi/serialmonitor", line 10, in <module>
read_serial=ser.readline()
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 446, in read
ready,_,_ = select.select([self.fd],[],[], self._timeout)
KeyboardInterrupt
Problém 2
Když spadne komunikace po té ser. lince, skript se zhroutí a spadne.
Nějak se mi nedaří to nacpat do Try.
Pomuže někdo?