SLSS CANopen Analyser

  • Entwicklungsstand: in Entwicklung (letzte Aktualisierung: 08.12.2022)
  • Veröffentlichungen: (Python-Offline veröffentlicht / C# Live Analyser ausstehend)

 

Vorgeschichte

Mit meiner CAN Bus-Software SLSS CANAnalyser* schein ich doch bei so einigen CAN Interessierten einen Nerv getroffen zu haben.
Durch den kostenlosen Download und den „cheap’n’open hardware“ Ansatz habe ich mittlerweile einige nette Kontakte knüpfen können (sogar weltweit was ich immer noch Wahnsinn finde).

Da meine beruflichen „Wurzeln“ bis Anfang letzten Jahres eigentlich immer fest im Automotive Sektor verankert waren, war für mich bis dahin das Multi-Master-Prinzip und die unabhängige Botschaftszuordnung stets das was den CAN Bus ausmachte und wofür ich Ihn einsetzte. Diese grundsätzliche Auslegung findet man zum Beispiel auch in den Beschreibungen der CAN Übertragungsverfahren*, wie hier zum Beispiel auf Wikipedia!

Im Zuge eines Jobwechsels wurde ich dann im ersten Projekt jedoch gleich mit dem Thema CANopen* konfrontiert.
Das Wort „CANopen“ war mir zwar bekannt und bis dahin auch schon einige Male an diversen Stellen „untergekommen“, doch war ich immer weit genug entfernt um mich nicht tiefer mit dem Thema beschäftigen und auseinandersetzen zu müssen!
Da mein neuer Projektleiter jedoch eher die Einstellung „learning by doing“ vertritt (was ich sehr an Ihm mag) und in unserer Abteilung noch kein Wissen hinsichtlich CANopen vorhanden war, wurde ich gleich ins kalte Wasser geworfen und musste mich mit den „Eigenheiten“ des CANopen Protokolls vertraut machen.
Schnell stellte ich fest, dass der CAN Bus selbst und der Aufbau der darauf versendeten Botschaften (CAN Frames) immer noch dasselbe war, doch altbekannte Dinge wie das Multi-Master-Prinzip mittendrinnen obsolet und durch mir bis dahin unbekannte Sachen wie Guarding, Heart-Beat, Node-IDs, SDOs, PDOs oder das ominöse Objektverzeichnis (object dictionary) ersetzt worden waren! So musste ich selbst erst einmal lernen was CANopen überhaupt ausmacht, welche Vorteile und evtl. auch Nachteile der Einsatz von CANopen mit sich bringt und wie die Daten auf dem Bus zu interpretieren sind.

Mehr lesen

Python UDP-Communication Class

Vorgeschichte

2020 kam ein Freund auf mich zu und fragte mich, ob es nicht irgendwie möglich wäre seine smarte Haustürklingel in die von ihm installierte Hausautomatisierung zu integrieren. Beim Betätigen der Klingel sollte ein Bediendisplay aus dem Bildschirmschoner in den Anzeigemodus wechseln und so das Videobild der in der Klingelanlage verbauten Kamera angezeigt werden, ohne das man vorher auf den Bildschirm klicken muss. Da die eingesetzte Hausautomatisierungslösung auf CentOS aufgesetzt war, brauchte er eine Schnittstellenlösung welche dort leicht zu implementieren war. Damit war damals bereits der Grundstein für die Python UDP-Communication Class gelegt.

 

Warum UDP Kommunikation

Auf diese Frage gibt es eine ganz einfache Antwort: Die Klingel stellte nur die Möglichkeit, ein UDP-Datagramm an einen vorkonfigurierbaren Port zu senden, bereit. Das gezielte Erhalten einer Botschaft via TCP gab es schlichtweg nicht. Damit war die Auswahl auf UDP beschränkt und die Umsetzung bereits festgelegt.

Mehr lesen

SLSS SearchClass – Excelsuche leichtgemacht

Überlegungen und Vorgeschichte

Wie bei vielen anderen Menschen auch, gehört die Verwendung von Microsoft Excel bei mir zum Arbeitsalltag genauso dazu wie die morgentliche Tasse Kaffee oder das Online-Meeting via Microsoft Teams. Dabei bin ich in der Vergangenheit bei vielen meiner Listen an den Punkt gekommen, an welchem ich die aktuelle oder auch andere Exceldateien nach bestimmten Werten durchsuchen musste, oder dem Nutzer die Möglichkeit geben wollte dies zu tun. Jetzt bietet VBA* mit der Range.find Methode* schon eine recht gute Funktion zum Suchen nach bestimmten Werten an, doch musste ich hiermit entweder „das Grundgerüst“ für den Suchaufruf immer wieder neu schreiben und an die aktuelle Datei anpassen, oder den Code aus einer anderen Liste „recyclen“, wofür aber ebenfalls immer Anpassungen nötig waren.

Um mir diese Arbeit ein wenig zu erleichtern, kam mir die Idee eine Funktionsbibliothek oder Klasse zu programmieren, mit deren Hilfe ich die gewünschten Funktionen einfach in ein anderes Projekt, oder eine neue Liste importieren kann. Das Ergebnis ist die hier folgende SLSS SearchClass, in welcher ich initial erst einmal die für mich wichtigsten Funktionen umgesetzt habe.

Die folgenden Absätze geben einen tieferen Einblick in die Nutzungsmöglichkeiten und den Funktionsumfang der Klasse und sollten daher nicht als Schritt für Schritt Anleitung angesehen werden. Für die meisten Leute sollte sich die Anwendung der Klassenfunktionen eigentlich relativ leicht aus der im Downloadordner vorhanden Beispielsammlung (SLSS_SearchClass_X.X.X.X.xlsm) herauslesen lassen!   

KOMMENTAR DES AUTORS

Mehr lesen

SLSS PictureSort (Update 1.0.1.0 – 09/2021)

Vorgeschichte

Für die Entstehung von SLSS PictureSort gab es mehrere Gründe. Zum einen wollte ich meine erlernten C# Kenntnisse etwas weiter ausbauen, wofür ich natürlich ein passendes Projekt brauchte, zum anderen besitzen meine Frau und ich mittlerweile unüberschaubar viele digitale Fotos aus den unterschiedlichsten Quellen (Digitalkamera, Smartphones, WhatsApp, etc…), welche wir zwar immer fleißig auf unserem NAS gespeichert und dort auch grob sortiert haben, doch eine chronologische Anordnung, gerade bei den unzähligen Bildern unserer Kinder, wäre bei der Masse an Dateien eine reine Fleißaufgabe gewesen. Da meiner Ansicht nach Computer-Programme genau für solche Zwecke, nämlich Menschen lästige Fleißarbeiten abzunehmen, gemacht werden, war der beste Kompromiss aus Lernen und Nutzen gefunden.

Mehr lesen

SLSS Excel-Mailer – automatischer E-Mail-Versand mit Microsoft Excel

(für die Verwendung wird ein konfigurierter E-Mail-Account in MS Outlook benötigt)

Vorgeschichte

Bereits vor einigen Jahren bekam ich von einem Bekannten die Anfrage ob es möglich wäre eine Excel-Liste so zu erweitern, dass er aus dieser auch E-Mails an seine Kunden versenden könne. Nach kurzer Recherche war klar, dass das Versenden von E-Mails mittels VBA* kein großes Problem darstellt. Die größere Herausforderung bestand darin, dass in den zu versendenden E-Mails nicht nur vorgefertigter „Standard-Text“, sondern auch Inhalte aus verschiedenen Excel-Tabellenblättern automatisch eingefügt werden sollte. Da er diese Funktion in mehrere voneinander unabhängige Excel-Dateien integriert haben wollte, bot es sich an hierfür ein Modul zu erstellen, was mit „wenigen“ Handgriffen in eine bestehende Excel-Tabelle eingebaut werden kann. Dies war der Anfang des SLSS Excel-Mailer’s.

 

Funktionsumfang

Im Laufe der Zeit hat sich der Funktionsumfang des SLSS Excel-Mailers um so einige Funktionen erweitert. Das liegt mitunter daran, dass die neuen Funktionen den Bedienungskomfort erweitern und verbessern, als auch an dem Fakt, dass ich das Modul auch in andere Projekte integriert habe, für welche diese Funktionen sinnvoll waren und somit auch zum festen Bestandteil des Modules geworden sind. Der Versand der E-Mails erfolgt hierbei immer über den Microsoft Outlook*-Account des aktuell angemeldeten Benutzers / Rechners.

Mehr lesen

SLSS CANAnalyser (Update 1.1.0.14 – 01/2023)

 

Vorgeschichte

Da ich in der Vergangenheit sowohl beruflich, als auch in meiner Freizeit immer wieder mit CAN-Bus Systemen und den darüber versendeten Botschaften in Kontakt gekommen bin, entstand irgendwann der Wunsch / Bedarf nach einer Software, mit dessen Hilfe ich mir das Handling und den Umgang mit den Bus-Daten erleichtern kann. Bis dato habe ich CAN-Botschaften entweder im Terminal, später mit einem Pythonprogramm auf einer  Raspberry Pi*, wie ich sie zum Beispiel als zentrales Gateway bei meinem SLSS CarNet* Projekt verwende, oder mittels der seriellen Ausgabe eines  Arduino* Micro-Controller Boards, angezeigt und mitgeloggt. Die Auswertung der Daten erfolgte dann immer im Nachgang anhand der gemachten Aufzeichnung, oder durch das physische Überprüfen der Reaktionen, welche durch das Senden von bestimmten Botschaften ausgelöst werden sollten. Dies ist auf Dauer natürlich nur wenig komfortabel.

Für die professionelle Bearbeitung von CAN-Bus Daten gibt es natürlich auch professionelle Tools, welche alle gewünschten Funktionen unterstützen und mit verschiedenen, teilweise sogar hardwareseitig implementierten Methoden, sicherstellen, dass jedes Datenpaket welches über den CAN-Bus übertragen wird auch erkannt und mitgeloggt wird. Diese Tools kommen meist in den Entwicklungsabteilungen für Kraftfahrzeuge, Nutzfahrzeuge, Schiffe und auch anderen Maschinen zur grundlegenden Auslegung und Entwicklung des CAN-Bus zum Einsatz und werden ständig weiterentwickelt, geupdatet und verbessert. Da dieser Vorgang für die entwickelnden Firmen recht zeit- und kostenintensiv ist, werden diese Programme leider meist als zeitlich begrenzte Lizenzversionen verkauft und benötigen nicht selten herstellerspezifische Hardware, welche ebenfalls nicht ganz billig ist. Diese tollen und sehr nützlichen Tools sind damit leider für den Hobbybereich oder den sporadischen Einsatz einfach zu teuer.

Mehr lesen

Alexa-Skill für den Raspberry Pi mit Python

Vorgeschichte

Als Erweiterung für meine DIY-Hausautomatisierung* hatte ich schon längere Zeit den Wunsch, verschiedene Geräte auch per Sprachsteuerung ansprechen und steuern zu können. Da bei uns die Amazon Echo-Dots mittlerweile auch in fast jedem Raum Einzug gehalten haben, war die meiner Meinung nach perfekte Hardware eigentlich schon vorhanden. In meiner Vorstellung musste ich es daher „nur“ hinbekommen, dass die von Amazon übersetzten Sprachbefehle an meine Hausautomatisierung weitergeleitet und anschließend von mir per Script ausgewertet werden. Leider ist dies nicht ganz so einfach umzusetzen wie ich es mir gedacht habe.

Mehr lesen

Basti Kalender – Der Ersatz für den Microsoft Date and Time Picker

Warum ein eigener Kalender

Ich musste beim Erstellen vieler meiner VBA* Anwendungen dem Nutzer die Möglichkeit geben das aktuelle Datum oder auch ein bestimmtes Bearbeitungs- oder Zieldatum eingeben zu können. Um die Eingabe etwas komfortabler zu gestalten, nutzte ich dafür bis 2018 in allen Formularen den „Microsoft Date and Timer Picker“, welchen man durch die Auswahl von „Extras“ –> „Zusätzliche Steuerelemente“ den Steuerelementen der VBA* Toolbox hinzufügen konnte. Diese tolle Erweiterung öffnet beim Klicken auf die Dropdown Box einen „Mini Kalender“, mit welchem man durch Monate und Jahre navigieren kann. Beim Klicken auf einen bestimmten Tag wird dann das ausgewählte Datum in die Dropdown Box übernommen, wo es vom VBA*-Code ausgewertet werden kann.

Mehr lesen

Bilder mit VBA (Excel) verkleinern

Vorgeschichte

Dieses kleine Tool entstand als „Arbeitserleichterungsmittel“ für meine Arbeitskollegen. Auf unseren Prüfstands-Rechnern in der Arbeit ist es aus Sicherheitsgründen leider nicht gestattet Fremdsoftware, welche nicht explizit von der IT-Sicherheit freigegeben wurde, zu installieren. Nun müssen wir aber von diesen Rechnern aus des Öfteren Bilder von diversen Prüfstandsaufbauten auf eine datenbankbasierte Softwareplattform übertragen. Leider hat diese Plattform den Nachteil, dass es eine Beschränkung für die maximale Größe der hochzuladenden Dateien gibt. Diese Grenze ist hierbei so niedrig gewählt, dass selbst Fotos welche mit der niedrigsten einstellbaren Auflösung von unserer Digitalkamera aufgenommen wurden sind, noch zu groß waren.

Diese beiden Fakten zusammen führten dazu, dass wir anfänglich die Fotos noch einzeln mit MS-Paint verkleinerten, was bei mehreren Fotos natürlich mühsam und auch ein wenig nervig war. Zum Glück verfügten aber auf alle Rechner über eine Microsoft Office Installation und so bastelte ich in VBA* für Excel ein Tool, mit welchem die Bilder auf der Festplatte ausgewählt, prozentual verkleinert, und anschließend als neue Datei mit auswählbarer Dateierweiterung gespeichert werden konnten. Leider ist dies nicht gerade das wofür Excel eigentlich genutzt wird, doch dank VBA* ist auch diese „Zweckentfremdung“ ganz praktikabel geworden.

Mehr lesen

Visual Basic for Applications

Was ist VBA und wozu braucht man es

VBA*, kurz für „Visual Basic for Applications“, ist eine Scriptsprache welche zur Steuerung und Erweiterung von Programmabläufen in Microsoft Office Produkten (Excel, Word, PowerPoint, Access, etc.) entwickelt wurde. Sie ist seit Excel 95 fester Bestandteil der Office-Produktreihe und leitet sich, wie der Name es schon sagt, von Microsofts Visual Basic ab.

Mit VBA* ist es möglich Excel- oder Worddateien so zu erweitern, dass sie annähernd den gleichen Funktionsumfang wie klassisch programmierte Software bieten. Es verfügt über einen Formulareditor, mit welchem Formulare mit Buttons, Listboxen und vielen weiteren Ein- und Ausgabetools per Drag & Drop erstellt werden können. Des Weiteren kann mit VBA* auf die Funktionalität der Office-Produkte direkt zugegriffen werden. So ist es zum Beispiel möglich, aus Word oder Excel heraus, via Outlook Emails zu versenden ohne dieses dafür öffnen zu müssen. Der Funktionsumfang ist durch Verweise erweiterbar und bietet eine fast schon unüberschaubare Anzahl an Funktionen. 

Mehr lesen