Hast du ein Oszilloskop, das sich über USB mit dem Computer verbinden kann oder das CSV Dateien auf einem USB Stick speichern kann?
Dann teste meine neue Open Source Software "Oszi Waveform Analyzer", die dein Oszi in einen Logic Analysator verwandelt.
Siehe angehängtes Bild OsziWaveformAnalyzer.png, das das Forum mir nicht erlaubt hier einzufügen.
Ein Tooltip zeigt Details über das Signal an und kann z.B. eine unbekannte Baudrate auf einen Blick ermitteln.
Oszi Waveform Analyzer hat mehrere A/D Konverter, die ein analoges Signal in ein digitales umwandeln können.
Das digitale Signal kann dann von einem der eingebauten Dekoder analysiert werden: UART, SPI, I2C, CAN bus (auch CAN FD).
Ein Rechtsklick auf einen Kanal zeigt ein Menü mit allen vorhandenen Operationen.
Siehe angehängtes Bild RightClickMenu.png, das das Forum mir nicht erlaubt hier einzufügen.
Als Beispiel einer dekodierten SPI Kommunikation siehe angehängtes Bild SPI_Mode_0_Communication.png
Dieser Screenshot zeigt den bi-direktionalen SPI Transfer eines Teensy Boards mit einem Philips PN532 RFID + NFC Transmitter Chip.
Die dekodierten UART, SPI oder I2C bytes können weiter analysiert werden mit einem Post Dekoder, der die Bedeutung der übertragenen Bytes anzeigt.
Ein Beispiel Post Dekoder für den PN532 Chip siehe Bild PostDecoderPn532Spi.png
Die übertragenen SPI Bytes werden analysiert und Details über die RFID Karte, die der PN532 erkannt hat, werden extrahiert.
Mein Open Source Project erlaubt es, eigene Dekoder oder Post Dekoder zuzufügen.
Der CAN Bus Dekoder ist eine große Hilfe beim Analysieren von Problemen mit dem CAN Bus (CAN Classic oder CAN FD). Er implementiert eine volle Fehlererkennung: Sample Point Timing Errors, Stuff Bit Errors, Parity Bit Errors und CRC Errors.
Außerdem kann Oszi Waveform Analyzer den bidirektionalen Half-Duplex Transfer auf einer Datenleitung aufsplitten in 2 getrennte Rx und Tx Kanäle. Ich zeige das am Beispiel der Kommunikation eines Pinpad mit einer Smartcard.
Dem Hersteller entgeht somit viel Geld wenn jeder kostenlose Software
nutzt
Ich weiß nicht von welchem Hersteller du sprichst.
Aber was mein Rigol angeht verdienen die Geld mit dem Verkauf der Oszilloskope aber nicht mit der zusätzlichen Software UltraScope, denn die ist kostenlos (und grotten primitiv).
Schade nur, dass man so ein Projekt nicht so programmiert, dass es auch für andere Systeme compilerbar ist (Mac, Linux). Der Aufwand wäre überschaubar, wenn man vom Anfang an so gedacht hätte (Java, C++, Xojo uva.).
Und jetzt komme bitte keiner, der meint, als Open Source könne man doch alles selber Compileren. Ja und nein: Das Projekt ist so komplex, da kann man es auch gleich neu schreiben, also eher nicht. Und die Sourcen sind voll mit Win-spezifischen Calls, die alle umgestrickt bzw. "gewrapppt" werden müssten.
Ich finde das Projekt und die darin investierte Energie trotzdem bewundernswert ...
Schade nur, dass man so ein Projekt nicht so programmiert, dass es auch
für andere Systeme compilerbar ist (Mac, Linux). Der Aufwand wäre
überschaubar, wenn man vom Anfang an so gedacht hätte (Java, C++, Xojo
uva.).
Zitat von der Webseite:
Windows 7 was the best operating system that Microsoft has ever released. Many people are still using it (like me).
Ja, sicher, auch jede Menge Hausfrauen und HausX benutzen das. Im professionellen Bereich koennte man auch an die Nutzer mit -nix basierten Systemen denken, die duerften da ueberwiegen.
Aber trotzdem, vollen Respekt, die SW sieht gut aus, wuerde die gern mal testen.
Ein .NET Projekt kann auch auf Mono laufen.
Ein paar kleine Anpassungen wären allerdings nötig.
Aber die halten sich in überschaubaren Grenzen.
Ich kann das nicht machen, da ich von Linux keine Ahnung habe und es mich auch absolut nicht interessiert.
Polemik - Begin
Abgesehen davon gibt es DAS Linux ja gar nicht. Es gibt Hundert Distributionen. Soll ich auf all denen testen? Wie viele Festplatten brauche ich um nur die Linuxe alle zu installieren?
Und Java ist so ziemlich das aller primitviste, was gegen das powervolle .NET Framework nich annährend anstinken kann. Abgesehen davon dass es grotten lahm ist. Also wer mir hier mit Java ankommt, der hat noch nie was ernsthaftes programmiert.
Und der Kommtar von wegen C++ ist einfach nur albern. C++ ist also Plattform unabhängiger als .NET? What? Davon habe ich noch nie gehört.
Polemik - Ende <<
Also wenn du so begeiterst bist von deinem Linux, dann könntest du dazu beitragen Oszi Waveform Analzyer auf Mono ans Laufen zu kriegen.
Gehen wir mal in die Details:
Was ist da an Windows - spezifischem Code drin?
Zuerst mal brauchst du einen USB TMC Treiber.
Der Treiber, den ich benuzte, ist von der IVI Foundation. Ich weiß nicht ob die auch einen für Linux haben, und wenn ja für welche der hundert Linuxe.
Wenn du also erst mal den Treiber hast, mußt du dann noch die Kommunikation mit dem Treiber schreiben. Es sollte dir einleuchten, dass die direkte Kommunikation mit einem Treiber IMMER Plattform abhängig ist. Die muß für Windows, MAC und Linuxe selbstverständlich getrennt geschrieben werden, da ein Plattform unabhängiges Framework für SCPI Kommunikation nicht exisitiert.
Aber zum Glück ist SCPI ein extrem primitives Prokoll. Das sollte in einer kleinen Klasse in Linux programmierbar sein.
In Windows sind dafür lediglich acht API Aufrufe in den Kernel nötig um die gesamte Kommunikation mit dem Oszilloskop zu machen.
Dann ist da noch der Code, der die angeschlossene USB Geräte auflistet.
Der muß natürlich auch neu geschreiben werden. Ich benötige dafür gerade mal 70 Zeilen Code und schon habe ich die Liste der verbundenen Oszilloskope. Wenn Linux so toll ist sollte das kein Problem sein.
Anderer Windows spezifischer Code ist das Erstellen eines Shortcuts zum Programm im Startmenü.
Die Funktion CreateShort() benötigt gerade mal 6 Zeilen Code. Also lächerlich.
Und das Regitrieren der Dateiendung .OSZI, so dass beim Doppelklick auf eine OSZI Datei automatisch das Programm gestartet wird besteht aus 5 Zeilen Code. Also lächerlich.
Eine andere Windows spezifische Sache ist das Öffnen des Browsers und Anzeigen der HTML Hilfe, wenn der User ein LinkLabel klickt.
Das siend weniger als 20 Zeilen Code. Also lächerlich.
Ich weiß nicht wie Linux RTF Code anzeigt im .NET RichTextBox Control?
Ich habe da einen Workaround eingebaut, der auf Linux nicht nötig ist, wenn Mono die Bugs von Microsoft nicht übernommen hat. Der Workaround kann wahrscheinlich einfach übersprungen werden.
Und das war es dann auch schon!
Ich würde sagen, für jemanden, der Ahnung von Linux hat, ist das durchaus und relativ schnell machbar.
Das große Klagen von wegen
und die Sourcen sind voll mit Win-spezifischen Calls,
ist also totaler Unfug.
Ich würde gern mal sehen wie DU eine Software, die ein USB Protokoll implementiert, so schreibst, dass sie vollkommen Plattform unabhängig auf allen Windows, allen MAC und allen Linux Versionen läuft. Und wie viele Monate du allein zum Testen brauchst.
wenn man vom Anfang an so gedacht hätte (Java, C++, Xojo uva.).
Sieht ja auf den ersten Blick echt cool aus!
Wo finde ich den Sourcecode?
Mit dem Handy könnte ich nichts auf der Seite finden. Vielleicht Stelle ich Mich aber auch zu blöd an 😄
Abgesehen davon gibt es DAS Linux ja gar nicht. Es gibt Hundert
Distributionen. Soll ich auf all denen testen?
Die unterscheiden sich im wesentlichen darin, welche Programme im Lieferumfang enthalten sind und wie sie vorkonfiguriert sind. Es reicht, wenn du auf einer gängigen Distribution (z.B Debian oder Ubuntu) testest. Mit 99% Wahrscheinlichkeit läuft das Programm dann auch auf allen anderen. Wahrscheinlich sogar auf Mac OS.
Es sollte dir einleuchten, dass
die direkte Kommunikation mit einem Treiber IMMER Plattform abhängig
ist. Die muß für Windows, MAC und Linuxe selbstverständlich getrennt
geschrieben werden
Nicht immer. Libusb gibt es z.B für Linux, Windows, Mac OS und Android. Viele Werkzeuge für Elektroniker (z.B Programmieradapter und Debugger) nutzen diesen.
danke für das Programm und den Quellcode.
Ich habe mir für mein eigenes Programm und dem RTB2000 jetzt auch das OSZI-Format für das Speichern der Daten programmiert. Vorerst nur für die Logikkanäle mit RLE-Kompression. Ein Test mit UART-Dekodierung hat gut funktioniert.
Planst du noch mehr Möglichkeiten für die Benutzeroberfläche, wie z.B. ein Menü für das Laden von Daten, oder Zoom-Funktion mit Mausrad? Mit der Farbwahl der Daten tue ich mir auch schwer beim Lesen. Mit schwarzen Hintergrund und relativ dunklen Texten plage ich mich. Dein Programm werde ich sicher noch öfter verwenden, gefällt mir.
Ich sehe dass hier kaum jemand daran interessiert ist,
konstruktiv an einer Version für Linux mitzuarbeiten.
Schade nur, dass man so ein Projekt nicht so programmiert, dass es auch
für andere Systeme compilerbar ist (Mac, Linux).
Kritisieren ist immer einfach.
Konstruktiv brauchbaren Code schreiben ist da viel schwieriger.
@Sherlock:
Libusb gibt es z.B für Linux, Windows, Mac OS und Android.
Als ich angefangen habe, die USB Kommunikation zu schreiben habe ich auch an fertige Bibliotheken wie WinUSB und Konsorten gedacht. Aber ich habe das dann verworfen, weil das SCPI Protokoll so extrem primitiv ist und diese Biliotheken totaler Overkill sind.
Im Grunde müssen nur Datenpakete über eine USB Bulk Verbinding gesendet werden. Windows macht das mit 3 API Commands: WriteFile(), WaitForSingleObject() und GetOverlappedResult(). Die selben API Befehle, die Windows verwendet, um eine Datei zu schreiben, könnnen auch über USB senden. (Das Gleiche gilt natürlich für das Lesen)
Je komplizierter der Code und je mehr Abhängkeiten, desto mehr Memory Usage, desto langsamer und vor allem desto mehr Bugs.
Wenn du meinen Code studierst wirst du feststellen, dass er in jeder Zeile optimiert ist, so simpel und so schnell wie möglich zu sein.
Wenn ich einen Code von 19 Zeilen benötige um ein Datenpaket an das Oszilloskop zu senden, glaube ich kaum, dass das in Linux viel mehr Code benötigt. Ich kenne die Linux Kernel Befehle nicht, aber ich vermute, dass es ähnlich simpel ist.
Statt LibUsb zu verwenden wäre es wesentlich einfacher und sinnvoller diese 19 Zeilen in Linux Code umzuschreiben und keinen zweiten Treiber zu benötigen und keine zusätzlichen Abhängigkeiten einzubauen.
Aber das Haupt Thema bleibt bestehen. Dazu hat keiner der Linux Freaks hier etwas geantwortet: Gibt es einen USB TMC Driver für Linux der ähnlich simpel zu bedienen ist? Falls ja, hat den jemand mal getestet?
Und dann nutzt du einen Wasserkopf von einem .net-Framework und C# um Decoder zu entwickeln? Kann man schon machen, aber die Wiederverwertbarkeit entspricht nicht KISS.
Aber das Haupt Thema bleibt bestehen. Dazu hat keiner der Linux Freaks
hier etwas geantwortet: Gibt es einen USB TMC Driver für Linux der
ähnlich simpel zu bedienen ist? Falls ja, hat den jemand mal getestet?
Ja, ich nutze seit ca. 15 Jahren USBTMC per Python, um eine gepimpte alte Rigol-Schwarte als Datenlogger/Analyzer zu missbrauchen.
Wenn du dein Programm salonfaehig im Sinne von CI/CD mit Tests und automatischem Bauen fuer die gaengigen Linuxversionen machen wolltest, muesstest du ueber eine geeignete, plattformunabhaengige Architektur nachdenken, so in etwa wie es Wireshark und diverse VCD-Tools machen. Dann laesst es sich wiederverwerten und Leute schreiben dann auch Plugins. Sonst bleibt es yet-another-Bastlitool, alle Arbeit in Ehren.
Hehe, so isses.
Aber im Ernst, habe meinen Selbstgeklöppelten zwar auch für 16 Kanäle ausgelegt, aber bis jetzt nur einmal 6 gebraucht (4bit SD bus).
Sonst zumeist 2, 3, selten 4.
Das ist jetzt erst einmal natürlich nur für mich von Belang, aber im Hobby-Bereich kann ich mir ähnliche limitierte Szenarien durchaus vorstellen.
Ich sehe dass hier kaum jemand daran interessiert ist,
konstruktiv an einer Version für Linux mitzuarbeiten.
Der Oszi Waveform Analyzer ist in C# geschrieben und nutzt .NET von Microsoft.
"Sponsored by Microsoft, Mono is an open source implementation of Microsoft's .NET Framework as part of the .NET Foundation and based on the ECMA standards for C# and the Common Language Runtime."*
Warum sollte jemand daran interessiert sein, an einer Version für Linux mitzuarbeiten?
Ich sehe dass hier kaum jemand daran interessiert ist,
konstruktiv an einer Version für Linux mitzuarbeiten.
Na ja, es ist ja ein schönes Projekt und gut umgesetzt (mal abgesehen von der Toolchain und der Programmiersprache).
Aber welchen Mehrwert bringt es mir gegenüber einen 10€ 8-CH 24MHz China LA und Pulseview?
Die wenigen Fälle, wo ich das Oszisignal zum LA sehen muß, klemme ich das Oszi halt mir dran.
Ich habe ein Rigol und fände es bestimmt interessant, das auch mal als LA verwenden zu können, aber Arbeit da reinstecken? Nein, so wichtig ist mir das nicht. Also bleibt diese SW eine (proprietäre) Windowslösung.
Ich sehe dass hier kaum jemand daran interessiert ist,
konstruktiv an einer Version für Linux mitzuarbeiten.
Naja, ich hab mal kurz auf deine Seite geschaut und zu lesen
aufgehoert als ich C#/Net gelesen habe. Das scheint mir keine unter
Linux sinnvoll einzusetzende Sprache zu sein, gar nicht davon zu
reden das ihre Kenntnis under Linuxusern sowas wie eine Art von
Verbreitung hat. Wir benutzen naemlich Linux weil wir nicht in
den Hintern von Mikrosoft wollen!
Aber das Haupt Thema bleibt bestehen. Dazu hat keiner der Linux Freaks
hier etwas geantwortet: Gibt es einen USB TMC Driver für Linux der
ähnlich simpel zu bedienen ist? Falls ja, hat den jemand mal getestet?
in_file= fopen("/dev/usbtmc0", "r+") Das war einfach! :-)
Es gibt aber auch eine Implementation von RS-Visa.
Mag jemand versuchen, mir den Reiz eines Logikanalysators mit gerade mal
vier Kanälen zu erklären?
Naja, fuer die gaengisten Sachen ist das sicher Unsinn weil es ja bereits im Oszi eingebaut ist und man dann auch auf Adressen oder Daten triggern kann und das triggern ist ja so ziemlich das wichtigste. Auswertung im Nachhinein ist IMHO etwas bemueht.
Andererseits kann man so natuerlich auch Sachen dekodieren die einem der Hersteller nicht mitgeliefert hat. Das mag schon mal praktisch sein.
Was die Begrenzung auf vier Kanaele angeht, ich hab sowohl fuer mein HMO2022 wie auch meinem RTB2004 die Logictastkoepfe da. (teurer wie viele einfache Rigols .-) ) Aber nutzen tue ich die so 1-2x im Jahr weil man heute fast nur noch serielle Busse hat. Nutzen tue ich sie allerdings wenn ich zusaetzlich zum digitalen Bus noch ein Verhalten auf den analogen Leitungen sehen muss.
Die analogen Daten von meinem RTB2000 kann ich jetzt auch im OSZI-Format speichern. Es gibt nur eine Einschränkung bei dem Format, es müssen alle Kanäle die gleiche Anzahl an Samples haben. Das betrifft z.B. den Math-Kanal mit einem Filter, oder einen Ref-Kanal mit danach geändeter Zeitbasis. Oder man liest nicht die Bildschirmdaten sondern aus dem Speicher. Ich ignoriere jetzt einmal einfach automatisch die nicht passenden Kanäle, oder speichere sie extra.
Ich finde das Programm gut für die Dokumentation, es benötigt keine Installation und ist schnell.
Nochmals danke an Elmü.
Im
professionellen Bereich koennte man auch an die Nutzer mit -nix
basierten Systemen denken, die duerften da ueberwiegen.
Das ist wohl eher Dein Wunschdenken. Der Desktopbereich wird von Windows und MacOS mit zusammen 86% dominiert. Linux lieg bei etwa 3,7% (Zahlen von Ende Januar 2025). Den Rest teilen sich die anderen Systeme. Die Zahlen zeigen recht eindeutig was da überwiegt.
Das ist wohl eher Dein Wunschdenken. Der Desktopbereich wird von Windows
und MacOS mit zusammen 86% dominiert.
Das wiederum ist Dein Wunschdenken; Du kannst mit Sicherheit davon ausgehen, daß sich das Bild anderes darstellt, wenn man nur die Zielgruppe der Oszilloskopanwender ansieht.
Diese Zielgruppe dürfte doch deutlich anders strukturiert sein als der Durchschnitt, zu dem immerhin auch reine Office-Anwender, Hochleistungsgamer und Internetkommentatoren gehören. Viele von diesen Leuten wissen noch nicht mal, was ein Oszilloskop ist.
Man bedenke: Hier im Forum ist mit Jörg W. auch ein FreeBSD-Entwickler an Bord.
ich habe eine Frage zu der Sortierung der Kanäle. Ich speichere die sortierten Nummern der Kanäle, aber die Reihenfolge im Programm ist anders.
Gespeicherte Reihenfolge der Kanaldaten in der Datei:
0 Ch1
1 Ch2
2 Ma1
3 Re1
4 D0
Positionen am Oszilloskop, von oben nach unten:
2 Ma1
1 Ch2
4 D0
3 Re1
0 Ch1
Die sortierten Werte der Positionen stehen auch so in der Datei:
2 1 4 3 0
Die Darstellung im Programm ist aber durcheinander:
4 D0
1 Ch2
0 Ch1
3 Re1
2 Ma1
Sortiere ich die Kanäle im Programm und speichere die Datei, wird beim Öffnen die richtige Reihenfolge der Kanäle angezeigt, aber die Werte in der Datei sind durcheinander.
Im Schnitt ist das wohl so. Unter Entwicklern sieht es nach meiner Erfahrung im Job anders aus. Und auch privat: Von meiner Homepage wird die Linux Version vom Arduino+ESP8266 Bundle viel öfter abgerufen, als die Windows Version.
Ich habe gerade eine neue Version hochgeladen, wo sich jetzt alles Windows spezifische in einer einzigen Datei befindet. Für Mono habe ich eine Template Datei angelegt. Es sind nur ein paar wenige Funktionen darin. Wenn jemand von Linux Ahnung hat, sollte es nicht länger als 3 Stunden dauern, die Funktionstemplates mit Code zu füllen.
Ich habe inzwischen gelesen dass der TMC Treiber der IVI Foundation in Linux seit Kernel version 4.20 bereits integriert ist.
in_file= fopen("/dev/usbtmc0", "r+") Das war einfach! :-)
Na dann sollte der Rest ja ein Kinderspiel sein.
@Harald K.
Mag jemand versuchen, mir den Reiz eines Logikanalysators
mit gerade mal vier Kanälen zu erklären?
Mein Oszilloskop hat 4 analoge + 16 digitale Kanäle.
Wenn du dir natürlich ein Einsteigermodell kaufst, kannst du auch nicht viel erwarten.
Allerdings habe ich im realen Elektronik Alltag noch nie mehr als 4 Kanäle gebraucht. Für SPI brauche ich Clock, MISO, MOSI und ChipSelect. Anonsten brauche ich sogar weniger Kanäle.
@Peter D.
Es gibt nur eine Einschränkung bei dem Format, es müssen alle
Kanäle die gleiche Anzahl an Samples haben.
Warum sollten die Kanäle unterscheidliche Anzahl von Samples haben? Du meinst, dass ein Kanal in der Mitte einfach aufhört, während die anderen weiter Daten haben ?
@Matthias
Hantek: Trotz Treiber Installation bekomme ich kein Gerät unter Capture
Detected USB Device angezeigt um die SCPI Commands zu testen.
Da müßtest du mal etwas mehr Details liefern.
Was wird für dein Oszi in der Systemsteuerung im DeviceManager angezeigt? (Screenshot)
Ich habe eine Webseite gefunden wo die Installation für ein Hantek Oszi erklärt ist und die verwenden den IVI Treiber. Ich wüßte also nicht warum das nicht funktionieren sollte.
Installier dir mal USBlyzer (www.usblyzer.com) Das Programm läuft in der Demo Version kostenlos 30 Tage. Dann suchst du links im Baum dein Oszilloskop. Wenn du es auswählst siehst du unten den USB Descriptor. Den kannst du rechts-klicken und in eine HTML Datei exportieren. Poste die Datei mal hier.
@Peter D.
ich habe eine Frage zu der Sortierung der Kanäle. Ich speichere die
sortierten Nummern der Kanäle, aber die Reihenfolge im Programm ist
anders.
Was meinst du mir "Reihenfolge im Programm"?
Du meinst die Reihenfolge von oben nach unten auf dem Bildschirm?
Was auf dem Oszilloskop oben oder unten ist hängt davon ab, wo du die Kanäle mit den Einstellknöpfen hinschiebst. Mein Programm überträgt die Kanäle in der Reihenfolge Analog Channel 1, Analog Channel 2, Analog Channel 3, etc.. Digital Channel 1, Digital Channel 2, Digital Channel 3, etc..
So erscheinen sie immer bei dir nach dem Capture. Dann kannst du im Rechts-Klick Menü deine eigene Reihenfolge definieren. Und die wird auch so in der OSZI Datei gespeichert.
aber die Werte in der Datei sind durcheinander.
Ich vestehe nicht was du damit meinst.
Die Datei hat nur binäre Daten, wie schaust du dir die an und woran siehst du was in welcher Reihenfolge in der Datei steht? In einem Hex Editor? Und wieso ist es für dich relevant in welcher Reihenfolge die Daten in der Datei stehen?
Beim Speichern in einer Oszi Datei werden die Kanäle in deiner selbst gewählten Reihenfolge gespeichert. Allerdings werden zuerst die analogen und dann die digitalen Känäle gespeichert weil die digitalen gemeinsam komprimiert werden, zumindest im Mask Mode. Deine original Reihenfolge wird dann beim Laden der OSZI wiederhergestellt, da die Reihenfolge auch mitgespeichert wird.
Es gibt nur eine Einschränkung bei dem Format, es müssen alle
Kanäle die gleiche Anzahl an Samples haben.
Warum sollten die Kanäle unterscheidliche Anzahl von Samples haben? Du
meinst, dass ein Kanal in der Mitte einfach aufhört, während die anderen
weiter Daten haben ?
Beim RTB2000 sind z.B. die Envelope-Daten immer nur 1200 Samples, oder ein Math-Kanal mit einem Low-Pass-Filter beginnt nicht mit dem ersten Sample am Bildschirm. Dafür müsste man die Eigenschaften jedes Kanals speichern und beim Anzeigen berücksichtigen.
Das war aber nur eine Bemerkung und keine negative Kritik. Mir ist es aufgefallen beim Testen mit meinem Programm und dem Speichern der Kanäle im Oszi-Format. Eine Alternative wäre die Kanaldaten vorher passend umzurechnen, vielleicht mache ich das noch.
ich habe eine Frage zu der Sortierung der Kanäle. Ich speichere die
sortierten Nummern der Kanäle, aber die Reihenfolge im Programm ist
anders.
Was meinst du mir "Reihenfolge im Programm"?
Du meinst die Reihenfolge von oben nach unten auf dem Bildschirm?
In deinem Oszi-Format gibt es im File Header die 'Channel Order'-Bytes. Ich dachte damit kann ich die Reihenfolge der Kanäle beim Anzeigen im Programm vorgeben. Der erste gespeicherte Kanal in der Datei hat den Index 0. Wenn ich den Index 0 in z.B. die dritte Position in 'Channel Order' speichere, sollte der Kanal eben als dritter von oben im Programm angezeigt werden. Aber das funktioniert nicht, die Reihenfolge ist beim Anzeigen eine andere.
Ich habe mir jetzt Visual Studio 2013 installiert, damit kann ich dein Programm kompilieren. Es ist das erstemal das ich mir ein C#-Programm anschaue, ist ein schöner Code.
Unter Entwicklern sieht es nach meiner
Erfahrung im Job anders aus.
Bei kleinen Fricklern (nicht negativ gemeint) wird das wohl so sein. In großen Firmen wurden die *nixe successive abgeschafft. In der Firma (46000 Angestellte) wo ich bis zur Rente gearbeitet habe, wurden die letzten Unixsysteme vor gut 15 Jahren abgeschafft und durch Windows ersetzt. Es gab dann noch einen SW-Entwickler der seine HP Workstation noch ein paar Jahre länger in Benutzung hatte. Die Entwicklung von Unixsoftware für unsere Geräte wurde vor 25 Jahren eingestellt und der Support für selbige vor 20 Jahren. Das hat zwar ganz sicher nicht jedem gefallen, ist aber eben der Lauf der Zeit.
Bei kleinen Fricklern (nicht negativ gemeint) wird das wohl so sein. In
großen Firmen wurden die *nixe successive abgeschafft.
Das ist falsch. Ich bin in einer grossen Firma. Da gibt die Firma dir natuerlich das Betriebssystems deines Arbeitsrechner vor und das ist LEIDER Windowskram.
Aber ausserhalb des Arbeitsrechners, die vielen kleinen Embeddedsysteme fuer alles und jedes, Produktion, Testaufbauten, was auch immer, haben so gut wie immer Linux drauf. Teilweise auch anderes Unix. Ich bin mir nicht ganz sicher weil ich damit nicht direkt zutun habe, aber ich glaube die Bestueckungsautomaten arbeiten mit HP-UX oder sowas. Ich meine wuerdest du dir fuer ernste zeitkritische Sachen etwas von Microsoft an Knie nageln? noway!
Jemand der also in der Entwicklung arbeitet hat automatisch Linuxkenntnisse/Kontakte und das erklaert natuerlich wieso diese Gruppe ploetzlich auch privat ein gewisses Interesse daran entwickelt.
Vanye
p.s: Ich glaube sogar unsere Kaffeemaschinen booten ein Linux und die Oberflaeche ist dann interpretiertes Java welches vom Lispinterpreter in Emacs ausgefuehrt wird. Anders kann ich mir jedenfalls diese peinliche Geschwindigkeit nicht vorstellen mit der sich der Hersteller der Kaffeemaschine zum Kunden traut. Hm..oder doch noch WinCE? :-D
Ich glaube sogar unsere Kaffeemaschinen booten ein Linux und die
Oberflaeche ist dann interpretiertes Java welches vom Lispinterpreter in
Emacs ausgefuehrt wird.
Ich habe weder von irgendwelchen Geräten, embedded Systemen, Raspi & Co. oder ähnlichen geredet. Ja auf diesen ist i.d.R. unixoides System drauf. Ich sprach aber eher vom Desktop und da spielen die Unixoiden eben eine untergeordnete Rolle. Wir hatten früher in der Firma viele Desktops mit HP-UX und Solaris. Die wurden aber alle durch Windows PC's ersetzt.
Ich habe bei einem eigenen USBTMC-Gerät den IVI-Treiber installiert. Das Oszi-Programm zeigt bei der Auswahl nur die Seriennummer des Geräts an. In dem Handbuch vom Hantek sind Screenshots ohne Herstellername und Seriennummer abgebildet, es ist nur die Modelbezeichnung und Firmwareversion vorhanden. Darum wird wahrscheinlich auch nichts zur Auswahl angezeigt.
Edit: Es wird die Seriennummer von dem 'Geräteinstanzpfad' angezeigt.
die Frage wegen der Sortierung der Kanäle hat sich erledigt, ich habe es jetzt verstanden.
Jetzt verstehe ich auch, warum z.B. bei den CAN-Beispielen der analoge und digitale Kanal die gleiche Farbe haben, und sich gemeinsam neu positionieren.
In großen Firmen wurden die *nixe successive abgeschafft.
Bei Vodafone, QVC, Medion und Telefonica nicht. Sind die groß genug?
Die Entwickler, die einen Windows Desktop vorgesetzt bekamen, haben darin primär mit einer Linux VM (heute auch WSL) gearbeitet. Das sind zwar keine reinen Linux Rechner, aber auch nicht "abgeschafft".
Hantek: Trotz Treiber Installation bekomme ich kein Gerät unter Capture
Detected USB Device angezeigt um die SCPI Commands zu testen.
Da müßtest du mal etwas mehr Details liefern.
Was wird für dein Oszi in der Systemsteuerung im DeviceManager
angezeigt? (Screenshot)
Ich habe eine Webseite gefunden wo die Installation für ein Hantek Oszi
erklärt ist und die verwenden den IVI Treiber. Ich wüßte also nicht
warum das nicht funktionieren sollte.
Installier dir mal USBlyzer (www.usblyzer.com) Das Programm läuft in der
Demo Version kostenlos 30 Tage. Dann suchst du links im Baum dein
Oszilloskop. Wenn du es auswählst siehst du unten den USB Descriptor.
Den kannst du rechts-klicken und in eine HTML Datei exportieren. Poste
die Datei mal hier.
Also hier im Screenshot wie weit ich bin.
Für den Hantek-Treiber musste ich die Kernelisolierung in w11 abschalten.
Die VISA-Treiber finden das Hantek aber nicht :-(
Den USBlyzer (www.usblyzer.com) kann ich nicht herunterladen, der Downloadlink führt immer wieder auf die gleiche Website, kann es sein das diese Software nicht mehr gibt/zu erwerben ist?
Beim RTB2000 sind z.B. die Envelope-Daten immer nur 1200 Samples,
Könntest du das mal genauer erklären?
Was sind Envelope-Daten?
Wozu brauchst du die?
Und die werden vom Oszilloskop als eigener Kanal übertragen?
ein Math-Kanal mit einem Low-Pass-Filter beginnt nicht mit dem ersten
Sample am Bildschirm.
Wie muß ich mir das vorstellen?
Dass der Kanal später anfängt als die anderen Kanäle und links einfach keine Daten sind ?
(Screenshot?)
Eine Alternative wäre die Kanaldaten vorher passend umzurechnen
Das denke ich auch.
Wenn du dir mal den Code im OsziPanel anschaust, der die Kurven zeichnet, der ist schon extrem komplex.
Da jetzt noch Kurven mit anderer Sampleanzahl zu zeichnen und dann auch noch in der OSZI Datei jeden Kanal mit eigner Samplerate zu speichern, wäre der absolute Überkiller.
Wenn ich den Index 0 in z.B. die dritte Position in 'Channel
Order' speichere, sollte der Kanal eben als dritter von oben im Programm
angezeigt werden. Aber das funktioniert nicht, die Reihenfolge ist beim
Anzeigen eine andere.
Wenn du es richtig machst, funktioniert das.
Ich verstehe allerdings nicht, warum du an der Kanalreihenfolge manipulieren willst?
Du kannst doch viel einfacher im Menü deine Reihenfolge der Kanäle definieren und es dann so abspeichern.
Wieso willst du die 'Channel Order'-Bytes ändern?
ist ein schöner Code.
Yep.
Ist nach dem KISS Prinzip geschrieben.
Jetzt verstehe ich auch, warum z.B. bei den CAN-Beispielen der analoge
und digitale Kanal die gleiche Farbe haben, und sich gemeinsam neu
positionieren.
Es ist der selbe Kanal. Jeder Kanal kann analoge oder digitale Daten oder beides speichern.
(Steht auch so in der Hilfe)
Ich habe einen Fork des Oszi-Projekts erstellt, und eine kleine Änderung
gemacht. Ich wollte auch die Samplefrequenz in der Infoleiste sehen.
Das ist eine sehr schlechte Idee!
Gerade eben habe ich eine neue Version hochgeladen, die sich auch über TCP mit dem Oszilloskop verbinden kann.
Und schon ist dein Fork veralteter Code.
Warum ein komplettes Projekt klonen für eine winizge Änderung?
Warum schreibst du mir nicht eine Email und wenn du eine gute Idee hast, baue ich das ein ?
Hallo Matthias
An deinem Screenshot aus der Systemsteuerung sehe ich bereits, dass dein Hantek nicht den IVI Treiber benutzt.
Denn der würde angezeigt als "USB Test and Measurement Device (IVI)" und nicht als "Hantek2xx2"
Deshalb würde ich gern mal den USB Descriptor von deinem Scope sehen.
Das ist in der Tat seltsam.
Da steht "You can evaluate it free of charge for 33 days", aber der Download funktioniert nicht.
Ich habe dir den shareware Installer auf meine Hompage hochgeladen.
https://netcult.ch/elmue/USBlyzer_2.2_Setup.exe
Abgesehen davon kannt du die neue Version von Oszi Waveform Analyzer runterladen und versuchen dich über LAN zu verbinden wenn dein Oszilloskop auch eine RJ-45 Buchse hat.
Bitte aber unbedingt vorher die Hilfe lesen!
Im Kapitel "Waveform Transfer over TCP" findest du wichtige Hinweise dazu.
Hallo die anderen
Ich sehe dass dieser Thread von einigen mißbraucht wird als ein religöser Kaffeklatsch über Linux.
Warum macht ihr dafür nicht euren eigenen Thread auf?
Die meisten Linux Freaks sind wie die Zeugen Jehovas.
Sie glauben die Wahrheit gefressen zu haben und wollen die Welt von ihrer Religion überzeugen.
Aber die Realität zeigt, dass sich nur ein winziger Prozentsatz der Weltbevölkerung für dieses Hobby Betriebssytem interessiert.
Fragt doch mal die 99% der Anderen, warum sie lieber Windows benuzten als Linux.
Und lernt daraus!
Linux könnte in der Tat eine Alternative sein, wenn es nicht so benutzerfeindlich und voller Bugs wäre und wenn es brauchbare Dokumentation gäbe.
Ich war ein paar Mal gezwungen für meinen Job mit Linux zu arbeiten und ich habe es jedes Mal gehaßt und war jedes Mal super froh wenn ich das hinter mich gebracht hatte.
Wir benutzen naemlich Linux weil wir nicht in
den Hintern von Mikrosoft wollen!
Das ist so ein DÄMLICHER Kommetar!
Glaubst du etwa, dass es Microsoft darauf angewiesen ist, dass DU Windows benutzt?
Du glaubst ja unwahrscheinlich relevant zu sein!
Es ist Microsoft so was von egal, was du mit deinem PC machst.
Die allermeisten Windows Benuzter bezahlen ihr Windows ja sowieso nicht und treten Microsoft allein damit in den Hintern.
Da es hier nur 2 Personen gibt die ernsthafte Beiträge schreiben, melde ich mich von diesem Kaffeeklatsch ab.
Wenn jemand ernsthaft an meinem Programm interessiert ist, bitte schreibt mir eine Email.
Sorry, deine Kommentare sind allerdings ganz genauso daneben.
Wenn du sowas in deinem Thread nicht haben möchtest (was ich verstehen kann), dann enthalte dich doch bitte selbst entsprechender Polemik. Wie du schon richtig festgestellt hast, diese Polemik braucht keiner und bringt nichts.
(Ich hatte den Thread mit ein wenig Interesse verfolgt, obwohl ich keinen Oszi zum LA umfummeln muss, weil ich schon zwei LAs habe.)
Nein, nur wenn man ihn aus dem Zusammenhang reisst. Denn wie ich dir erklaert habe es gibt Gruende warum jemand der Linux nutzt kein Interesse an einem Source hat der in einer Microsoftsprache geschrieben ist die noch dazu irgendeine Microsoftumgebung vorraussetzt. Sowas wuerde ich nicht auf meinem Rechner haben wollen.
Wie muß ich mir das vorstellen?
Dass der Kanal später anfängt als die anderen Kanäle und links einfach
keine Daten sind ?
(Screenshot?)
hier ist ein Screenshot von dem R&S RTB2000 mit Analog-, Envelope-, Referenze- und Math-Kanal. Anbei auch einige Eigenschaften der Kanäle. Die Kanäle haben teils unterschiedliche Samples. Die Envelope-Daten eine andere Samplerate, die Startzeit des Math-Kanals ist eine andere.
Wenn du es richtig machst, funktioniert das.
Ich verstehe allerdings nicht, warum du an der Kanalreihenfolge
manipulieren willst?
Du kannst doch viel einfacher im Menü deine Reihenfolge der Kanäle
definieren und es dann so abspeichern.
Wieso willst du die 'Channel Order'-Bytes ändern?
Ich kann jetzt mit meinem Programm die Daten in der gleichen Reihenfolge bzw. Position wie am Oszilloskop angezeigt, im OSZI-Format speichern. Ich muss dann nicht später wieder die 'logische' Reihenfolge im Oszi-Programm einstellen. Das macht es für mich einfacher, darum die Fragen zu den 'Channel Order'-Bytes.
Ich habe einen Fork des Oszi-Projekts erstellt, und eine kleine Änderung
gemacht. Ich wollte auch die Samplefrequenz in der Infoleiste sehen.
Das ist eine sehr schlechte Idee!
Gerade eben habe ich eine neue Version hochgeladen, die sich auch über
TCP mit dem Oszilloskop verbinden kann.
Und schon ist dein Fork veralteter Code.
Das macht nichts, mit Git sollte sich das leicht lösen lassen. Für mich ist dein Programm ein Grund mehr mit Git zu machen. Bis jetzt habe ich es nur einmal für ein anderes Projekt eingesetzt, aber nur nach Anleitung verwendet. Verstanden habe ich die ganzen Vorgänge noch nicht. Da mich dein Programm interessiert, und ich C# nicht kenne, ist das eine nette Möglichkeit damit zu lernen. Sollte ich einmal eine gute Änderung zustandebringen, kann ich dir ja einen Pull Request senden.
Linux könnte in der Tat eine Alternative sein, wenn es nicht so
benutzerfeindlich und voller Bugs wäre und wenn es brauchbare
Dokumentation gäbe.
Das ist deine Meinung. Es gibt millionen Menschen, die das ganz anders sehen. Niemand verlangt, dass die ganze Welt die gleiche Meinung hat.
Falls du konkrete Fragen hast, helfen wir dir gerne, die Lösung oder Doku zu finden. Erstelle dafür besser einen neuen Thread mit aussagekräftigem Titel.
Wer ein Programm für möglichst viele Entwickler bereit stellen will, der sollte Linux nicht auslassen, denn Linux ist ein System von Entwicklern für Entwickler. In diesem Benutzerkreis ist der Anteil von Linux hoch (ich schätze >= 30%). Außerdem ist die Unterstützung von Mac OS dann auch nicht mehr weit. Tatsächlich lassen sich viele Linux Programme ohne Anpassung direkt für Mac OS compilieren und ausführen. Insofern ist aus meiner Sicht Windows die lästige Ausnahme, nicht die Regel.
Aber die Realität zeigt, dass sich nur ein winziger Prozentsatz der
Weltbevölkerung für dieses Hobby Betriebssytem interessiert.
Fragt doch mal die 99% der Anderen, warum sie lieber Windows benuzten
als Linux.
Und lernt daraus!
Linux könnte in der Tat eine Alternative sein, wenn es nicht so
benutzerfeindlich und voller Bugs wäre und wenn es brauchbare
Dokumentation gäbe.
Ich war ein paar Mal gezwungen für meinen Job mit Linux zu arbeiten und
ich habe es jedes Mal gehaßt und war jedes Mal super froh wenn ich das
hinter mich gebracht hatte.
Deutlicher kann man nicht zeigen, dass man zu einer objektiven Aussage nicht fähig ist.
Ich sehe dass dieser Thread von einigen mißbraucht wird als ein
religöser Kaffeklatsch über Linux.
Warum macht ihr dafür nicht euren eigenen Thread auf?
Die meisten Linux Freaks sind wie die Zeugen Jehovas.
Sie glauben die Wahrheit gefressen zu haben und wollen die Welt von
ihrer Religion überzeugen.
Du scheinst ziemlich beratungsresistent.
Sollte auch nun nach 20 Jahren nicht an dir vorbeigegangen sein, dass zumindest, was Embedded, FPGA und Chipdesign angeht, ernsthafte Entwickler mit Linux deutlich effizienter arbeiten (koennen). Das hat mit Religion so gar nichts zu tun. Es ist schlicht pragmatischer, per 'apt-get' einen C Compiler zu installieren, und eine Software noch nach 10 Jahren in der automatisierten Test-Build-Pipeline zu halten. So arbeiten ernsthafte alte Hasen, die mit dem Fortschritt gehen und ihre wertvolle Lebenszeit sinnvoll einteilen wollen.
Alles andere ist Gefrickel, und du solltest diesbezueglich deinem Code eine vernuenftig portable Architektur geben, auch wenn du selbst ganz doll davon ueberzeugt bist. Sonst bleibst du damit ein einsamer Kaempfer. Kann man machen, aber: Es gab hier schon zig solche Labview-Klickibunti-Threads, this is yet another. Wird meistens recht schnell still drum.
C und Java Compiler laufen unter Linux übrigens auffällig schneller, als unter Windows. Wenn man nur noch 5 statt 15 Minuten warten muss, dann kann das sogar rasch finanziell relevant werden.
hier sind drei kleine Änderungen die ich gemacht habe.
help.txt
Bei einem Pfad mit Leerzeichen wird die Hilfe nicht angezeigt.
sample-frequency.txt
Zeigt die Sample-Frequenz am Ende in der Info-Leiste an.
uart.txt
Ignoriert die Toleranzen für die Dekodierung.
Ich konnte von einem Gerät die UART-Kommunikation nicht mit dem Oszi-Programm dekodieren. Die Länge des Start-Bit war oft außerhalb der Toleranz, wobei mein RTB2000 alles richtig dekodieren konnte.
Git verwende ich nur noch lokal, darum sind die Ausgaben von 'git show' hier im Anhang.
Wenn du dein Programm salonfaehig im Sinne von CI/CD mit Tests und
automatischem Bauen fuer die gaengigen Linuxversionen machen wolltest,
Will er gar nicht.
Es sind die ewigen Linux-Fanbois, die zwar die gratis Software für ihr gratis Betriebssystem haben wollen, aber zu doof sind eine Zeile code zu programmieren.
Es sind die ewigen Linux-Fanbois, die zwar die gratis Software für ihr
gratis Betriebssystem haben wollen, aber zu doof sind eine Zeile code
zu programmieren.
Du meinst so wie bei Darktable wo die Windoof Anbeter jahrelang rumbettelt haben: Wir wollen doch auch eine Windofs version weil es wir nicht immer Photoshop monatlich mieten wollen.
Aber der Autor hatte da lange keinen Bock drauf weil aus der Windowsecke immer nur ICH WILL kommt, aber keinerlei Mitarbeit.
wenn man bei nur einer vorhandenen Waveform, z.B. "1kHz Oszi Calibration Test Output Rigol DS1000E", im Kontextmenü "Math Operations" auswählt, gibt es eine Fehlermeldung.
bei den 'Math Operations' ist mir aufgefallen, dass man als 'Result Channel' denn vorgeschlagenen Namen 'Math Result' nicht ändern muss, wenn als 'Input Channel' ein Math-Kanal mit gleichen Namen verwendet wird. Das Ergebnis ist dann falsch oder zumindest anders, als wenn man immer einen Math-Kanal mit neuen Namen erstellt.
Im Screenshot wurden Kanal 1 und 2 addiert, und dann wieder subtrahiert. Mit zwei Math-Kanälen stimmt Kanal MA2 wieder mit CH1 überein, CH1 wird komplett von MA2 verdeckt.
Wenn man diese Operation mit nur einen Math-Kanal durchführt, stimmt das Ergebnis nicht, siehe MA3.
Vielleicht sollte man einen neuen Namen im Dialog erzwingen, wenn ein falsches Ergebnis möglich ist.
Nur mal so grob: es scheint doch definitiv einfacher, was in Linux für Windows zu entwickeln. Nicht, das das immer so toll ist - aber es gibt halt Werkzeuge und Hilfen für die Übertragung - wie auch Tutorials, beispielsweise gegen welche Dlls man verlinken muss.
Man merkt übrigens oft, wenn die Linux-Seite kaum Verständnis für die Windows-Seite hat, andererseits laufen bestimmte Sachen wie Rust, Haskell, Java oder Python definitiv besser auf Linux. Meine ich jedenfalls. Je nachdem eben.
Tatsächliche Importorientierung (von Windows aus) kann man über Debian bzw. Ubuntu machen, wobei für Ubuntu dankenswerter Weise viel Information zur Orientierung bereitsteht. Wenn man programmiertechnisch einsteigen möchte, sollte man sich vielleicht erstmal Arch ansehen - wo auch eine gute Dokumentation für verschiedene Anliegen zu finden ist.