Hantek Protokoll DSO Serie mit Python
Verfasst: Dienstag 8. Juli 2025, 21:17
Hallo
ich nutze Python 3.12 und habe ubuntu. Ich versuche seit ein paar tagen, die Daten von meinem DSO1062D Oszilloskop über dessen USB Schnittelle auf mein Computer zu bekommen. Leider gibt es nach meinen Recherchen keine funktionierende Software mit der man das unter linux/Windows direkt machen kann. Die mitgelieferte Software TTScope funktioniert schlecht und kann die kurven nur als Bilder exportieren. Diese mit opencv unn numpy umzuwandeln ist mir zu aufwändig und zu ungenau. aber ich habe diesen Artikel gefunden, indem das protokol von den hantek/tektronix/Voltkraft DSO Oszilloskopen erklärt ist https://www.mikrocontroller.net/article ... _Protokoll
darauf basierend habe ich mir dieses kleine python test Progrämmchen geschrieben, das die DSO Einstellungen lesen sollte:Wenn man es ausführt bekommt man manchmal die angefragten daten auch geprinted. Meistens gibt es aber diese Fehlermeldung aus:Das programm funktionirt meistens immer ein paar mal hintereinander und dann wieder etwas länger nicht. Ich hatte auch mal ein testprogramm dass sich immer zwei mal ausführen lassen hat und dann beim dritte mal die Fehlermeldung ausgespuckt hat. Bei den meisten anderen Komandos verhählt sich mein Programm/Oszilloskop ähnlich
Ich würde mich sehr über ein feedback,mwas ich falschgemacht haben könnte, oder was ich noch testen könnte freuen
LG sauterle
ich nutze Python 3.12 und habe ubuntu. Ich versuche seit ein paar tagen, die Daten von meinem DSO1062D Oszilloskop über dessen USB Schnittelle auf mein Computer zu bekommen. Leider gibt es nach meinen Recherchen keine funktionierende Software mit der man das unter linux/Windows direkt machen kann. Die mitgelieferte Software TTScope funktioniert schlecht und kann die kurven nur als Bilder exportieren. Diese mit opencv unn numpy umzuwandeln ist mir zu aufwändig und zu ungenau. aber ich habe diesen Artikel gefunden, indem das protokol von den hantek/tektronix/Voltkraft DSO Oszilloskopen erklärt ist https://www.mikrocontroller.net/article ... _Protokoll
darauf basierend habe ich mir dieses kleine python test Progrämmchen geschrieben, das die DSO Einstellungen lesen sollte:
Code: Alles auswählen
import usb.util
BULK_OUT = 0x02
BULK_IN = 0x81
dev = usb.core.find(idVendor=0x049f, idProduct=0x505a)
if dev is None:
raise ValueError("Device not found")
if dev.is_kernel_driver_active(0):
dev.detach_kernel_driver(0)
dev.set_configuration()
cmd = [0x53, 0x02, 0x00, 0x01, 0x56]
dev.write(BULK_OUT, cmd)
data = dev.read(BULK_IN, 1024)
print(data)
Code: Alles auswählen
Traceback (most recent call last):
File "/home/lsauter/PycharmProjects/DSO_Software/test1,5.py", line 101, in <module>
_ = read_bulk(dev) # Ignore, but should parse for real application
^^^^^^^^^^^^^^
File "/home/lsauter/PycharmProjects/DSO_Software/test1,5.py", line 28, in read_bulk
return dev.read(BULK_IN, length, timeout=TIMEOUT)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lsauter/PycharmProjects/DSO_Software/.venv/lib/python3.12/site-packages/usb/core.py", line 1043, in read
ret = fn(
^^^
File "/home/lsauter/PycharmProjects/DSO_Software/.venv/lib/python3.12/site-packages/usb/backend/libusb1.py", line 850, in bulk_read
return self.__read(self.lib.libusb_bulk_transfer,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lsauter/PycharmProjects/DSO_Software/.venv/lib/python3.12/site-packages/usb/backend/libusb1.py", line 958, in __read
_check(retval)
File "/home/lsauter/PycharmProjects/DSO_Software/.venv/lib/python3.12/site-packages/usb/backend/libusb1.py", line 602, in _check
raise USBTimeoutError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBTimeoutError: [Errno 110] Operation timed out
Ich würde mich sehr über ein feedback,mwas ich falschgemacht haben könnte, oder was ich noch testen könnte freuen
LG sauterle