Hallo Leute!
Nach tagelangem Probieren und stundenlangem Recherchieren im Netz weiß ich jetzt nicht mehr weiter und hoffe auf eure Hilfe!
Habe ein altes Digitalmultimeter, mit dem man über eine RS232 Schnittstelle kommunizieren kann (9600 7N2).
Das funktioniert so, dass man einen Request in Form eines "D" samt carriage return an das Messgerät sendet und es antwortet darauf
nach unbestimmter Zeit (ca. 2 ms bis 30 ms) mit 4 mal 14 Byte, leider immer ohne CR oder LF.
Habe die Kommunikation mit einem alten PC, der noch eine RS232 Schnittstelle hat, probiert - funktioniert einwandfrei mit QBASIC.
Habe das deshalb verwendet, weil's in der Anleitung des Multimeters so angegeben war.
Der QBASIC-Code lautet:
10 OPEN "COM1:9600,N,7,2,RS,CS,DS,CD" FOR RANDOM AS #1
20 PRINT #1, "D"
30 IN$ = INPUT$(4 * 14, #1)
40 PRINT IN$
50 CLOSE #2
Da ich sehr hardwareorientiert bin, habe ich auch mit einem Oszilloskop RX und TX angeschaut - Signale sind, wie sie sein sollen.
Allerdings möchte ich das Auslesen des Messgerätes etwas modernisieren und mit einem Raspberry Pi samt Python machen.
Das Senden des "D" samt CR funktioniert mit Python und Pyserial, sagt jedenfalls mein Oszi.
Das Messgerät antwortet auch, aber ich bekomme nur bx00 zurück.
Habe alles Mögliche mit Pyserial probiert: mit/ohne timeout, read, readline,...
Aber leider ohne Erfolg!
Hier mein Python Code:
import time
from datetime import datetime
import serial
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_TWO,
bytesize=serial.SEVENBITS)
ser.write(b'D\r')
#time.sleep(0.002)
out = ''
while TRUE:
if ser.inWaiting() > 0:
out = ser.read()
print (datetime.now(), out.decode('utf-8'))
time.sleep(0.05)
Display More
Bekomme aber leider keine Werte zurück bzw. nur '0'. Wie gesagt: Mein Oszi zeigt, dass das Messgerät zurücksendet.
Ich verwende einen Rapspberry Pi4 mit 4GB samt LogiLink RS232 zu USB Adapter.
Debian Bullseye und Python 3