USB-µPIO mit Python auslesen
Verfasst: Mittwoch 14. Februar 2024, 00:28
Guten Abend,
ich habe einen USB-µPIO Temp 12, und bisher lese ich diesen per Powershell zuverlässig aus und speichere die Daten in einer Sqlite Datenbank.
Aufgrund einer Systemumstellung möchte ich nun den Temp 12 mit Python auslesen und scheitere daran, dass mir keine Daten geliefert werden.
Als Ergebnis wird folgendes geliefert:
Anmerkung:
Der String 'Bxxxxxxxxxxxx--------' muss als Bytes (b'Bxxxxxxxxxxxx--------') an die serielle Schnittstelle geliefert werden, da ansonsten ein Laufzeitfehler auftritt.
Hat jemand eine Idee, wie das Problem gelöst werden kann?
ich habe einen USB-µPIO Temp 12, und bisher lese ich diesen per Powershell zuverlässig aus und speichere die Daten in einer Sqlite Datenbank.
Code: Alles auswählen
$COMPORT='COM9'
$BAUDRATE=57600
$Parity=[System.IO.Ports.Parity]::None # System.IO.Ports.Parity
$DataBits=8
$StopBits=[System.IO.Ports.StopBits]::one # System.IO.Ports.StopBits
#Sicherstellen, dass $ComData leer ist (wenn das Script erneut ausgeführt wird)
$ComData=""
$port= new-Object System.IO.Ports.SerialPort $COMPORT,$BAUDRATE,$Parity,$DataBits,$StopBits
$port.open()
#Zwingend notwendig, erst einen Befehl zu senden, damit eine Antwort vom µPIO gesendet wird
$port.WriteLine("Bxxxxxxxxxxxx--------")
#Daten vom Comport lesen
$ComData=$port.ReadLine()
#Com Port schliessen
$port.Close()
$VLHK = $Daten[1].ToString().Trim()
$RLHK = $Daten[3].ToString().Trim()
$Speicher = $Daten[5].ToString().Trim()
$WW = $Daten[7].ToString().Trim()
$Zirku = $Daten[9].ToString().Trim()
$Brenner = $Daten[13].ToString().Trim()
$UP = $Daten[15].ToString().Trim()
$Fehler = $Daten[17].ToString().Trim()
$ZP = $Daten[19].ToString().Trim()
$SQL = "Insert into 'Temperaturen' (Datum, Zeit, VLHK, RLHK, Speicher, WW, Zirku, Brenner, UP, Error, ZP)
Values ('$Datum','$Zeit','$VLHK','$RLHK','$Speicher','$WW','$Zirku','$Brenner','$Up','$Fehler', '$ZP');"
#Insert into ausführen
invoke-SqliteQuery -DataSource $DataSource -Query $SQL -QueryTimeout 3
Write-Host "Daten in Tabelle Temperaturen eingefügt." -ForegroundColor Yellow
Code: Alles auswählen
import serial
serPort = serial.Serial(port='Com9', baudrate=57600, bytesize=8, timeout=3, parity='N', stopbits=1)
command = b'Bxxxxxxxxxxxx--------'
#print('Sende Befehl ' + str(command) + ' zum Abacom, Länge' + str(len(command)))
serPort.writelines(command)
data = serPort.readline()
print('Data read', str(data))
serPort.close()
Code: Alles auswählen
Data read b''
Der String 'Bxxxxxxxxxxxx--------' muss als Bytes (b'Bxxxxxxxxxxxx--------') an die serielle Schnittstelle geliefert werden, da ansonsten ein Laufzeitfehler auftritt.
Hat jemand eine Idee, wie das Problem gelöst werden kann?