SerialTool met Python®.


Inhoudsopgave


Wat is Python?

Python® is een geïnterpreteerde, objectgeoriënteerde, high-level programmeertaal met dynamische semantiek. De ingebouwde high-level datastructuren, gecombineerd met dynamische typering en dynamische binding, maken het zeer aantrekkelijk voor Rapid Application Development, maar ook als scripting- of “glue”-taal om bestaande componenten met elkaar te verbinden.
De eenvoudige en gemakkelijk te leren syntaxis van Python legt de nadruk op leesbaarheid en vermindert daardoor de kosten van applicatie-onderhoud. Python ondersteunt modules en packages, wat modulariteit en hergebruik van code stimuleert. De Python-interpreter en de uitgebreide standaardbibliotheek zijn gratis beschikbaar, zowel in bron- als binaire vorm, voor alle belangrijke platformen en mogen vrij worden gedistribueerd.
Voor meer gedetailleerde informatie over Python® kun je terecht op hun website: www.python.org

Juridische kennisgeving: “Python” is een geregistreerd handelsmerk van de PSF. SerialTool is niet gelieerd aan of gesponsord door PSF. SerialTool gebruikt Python als compatibele programmeertaal om scripts uit te voeren en vereist dat er een officiële versie van Python op je pc is geïnstalleerd.

SerialTool en Phyton

Python-code-editor voor SerialTool.


Heb je ooit de seriële poort willen gebruiken met een fantastische grafische interface die de gegevens van en naar de seriële poort kan weergeven?
Als je dit nodig hebt en je eigen programma wilt maken om de seriële poort eenvoudig te bedienen zonder extra libraries te installeren, in een taal die voor iedereen toegankelijk is, dan is SerialTool met Python het hulpmiddel dat je zocht.
Sommige programma’s die de seriële poort gebruiken, bieden een vorm van scripting: je kunt code schrijven en laten uitvoeren, maar vaak ken je de gebruikte taal niet of moet je uren besteden om uit te zoeken hoe je een paar regels code integreert. Met SerialTool en geïntegreerde Python kun je je script in Python schrijven en zonder beperkingen profiteren van alle functies van SerialTool.
SerialTool integreert basisfuncties in de vorm van een bibliotheek (al geïmporteerd en geïntegreerd) en met een paar regels kun je naar de gewenste seriële poort zoeken, deze openen, lezen en schrijven. SerialTool verzorgt alle grafische afhandeling van inkomende en uitgaande pakketten, terwijl jij je Python-code gebruikt om zonder beperkingen de gewenste functies uit te voeren.
Om het schrijven en testen in Python te vergemakkelijken, biedt SerialTool een teksteditor waarin je je scripts kunt laden en bewerken. De geïntegreerde editor herkent de Python-syntaxis en maakt het schrijven van code eenvoudiger.

Meer in detail over seriële poort en Python

Als we dieper ingaan op de functies die SerialTool en de geïntegreerde Python-bibliotheek bieden, beginnen we met een praktisch voorbeeld.
Stel dat je aan een klant of collega software wilt leveren waarmee firmware kan worden geüpload naar een door jou ontwikkeld apparaat dat via de seriële poort wordt bijgewerkt. Dit is een vrij veelvoorkomend scenario waarin je software vanaf nul moet maken, bij voorkeur multiplatform, en verschillende aspecten moet integreren: grafische interface en gebruikersinteractie, bestandsselectie en fout- of bevestigingsmeldingen.
In dit geval maakt Python, in tegenstelling tot sommige andere talen, het werk eenvoudiger, maar vereist het ook dat externe bibliotheken worden geïnstalleerd en bijgehouden.
SerialTool lost dit probleem aan de basis op door eenvoudige functies te bieden voor snelle en intuïtieve selectie van de seriële poort, dialoogvensters voor het laden en opslaan van bestanden en messageboxen om de gebruiker te informeren over de voortgang van het programma.
Dit zijn zeer eenvoudige functies die snel kunnen worden aangeroepen en native zijn op de platformen waarop SerialTool kan worden geïnstalleerd (Windows, MacOS en Linux). Hiermee verdwijnen afhankelijkheden van externe libraries en wordt de basisinteractie met de gebruiker in slechts een paar regels code eenvoudig, snel en intuïtief.

Terug naar ons basisvoorbeeld: we beginnen met het sluiten van alle actieve poorten en zoeken naar beschikbare seriële poorten met de functie SerialTool.scan, gevolgd door de selectie door de gebruiker van de te gebruiken seriële poort via de functie SerialTool.gui_selectport.
Op dat moment weten we welke poort de gebruiker wil gebruiken; we hoeven deze alleen nog te openen met de functie SerialTool.open met de gewenste parameters of de parameters die al in de GUI zijn ingesteld. Zodra de seriële poort is geopend, kunnen we met de functie SerialTool.gui_loadfile het te laden bestand vragen, het bestand openen met de native Python-functies en met SerialTool.gui_showmessage om bevestiging vragen voor het uitvoeren van de firmware-download.
Vervolgens schrijven we de buffer uit het bestand met SerialTool.write, waarbij we het aantal te schrijven bytes doorgeven, en wachten we (indien van toepassing) op het antwoord van het apparaat dat geüpdatet wordt met het SerialTool.read-commando, tot het einde van de update.
Enkele eenvoudige commando’s volstaan om in enkele minuten je eigen programma te schrijven om jouw apparaat of een apparaat van een derde partij te updaten.
Klinkt dat ingewikkeld? SerialTool levert geïntegreerde, goed becommentarieerde voorbeelden.

Geïntegreerde voorbeelden voor de seriële poort in Python

Om het begrip en het behalen van resultaten te versnellen, bevat SerialTool direct bruikbare en becommentarieerde voorbeelden die het gebruik van de geïntegreerde functies meteen duidelijk maken. Een groot voordeel is dat de geïntegreerde functies geen externe Python-libraries nodig hebben om een seriële poort aan te sturen.
Met een basisinstallatie van Python werken onze voorbeelden al. In de meegeleverde voorbeelden zijn alle functies beschikbaar die de SerialTool-bibliotheek voor Python in onze software biedt. Je hoeft alleen enkele delen van de voorgestelde code aan te passen om je scripts te personaliseren en in een paar minuten is je programma voor de seriële poort klaar.
De voorbeelden die in SerialTool zijn opgenomen, worden versie na versie uitgebreid, zodat je altijd een direct overzicht hebt van de beschikbare functies en hun gebruik, zonder op internet te hoeven zoeken.
Een speciale documentatie van de SerialTool-functies is beschikbaar op onze pagina SerialTool API voor Python.

Installatie van Python

Veel tutorials beginnen met de installatie van Python op je pc (als het nog niet geïnstalleerd is) en de configuratie tot een minimaal bruikbare omgeving. Wij hebben dit bewust tot het einde bewaard, omdat SerialTool via het menu Python Environment de bestaande configuratie voor je kan zoeken en testen zodra Python op je pc is geïnstalleerd.
Zoals gezegd is Python een gratis, geïnterpreteerde taal en is de interpreter op je pc vereist. Voor wie al vertrouwd is met de taal zijn er weinig extra uitleg nodig, maar voor wie Python en zijn ontwikkelomgeving voor het eerst probeert, zijn de stappen vrij eenvoudig.
Voor Windows hoef je alleen de nieuwste versie van Python te downloaden (3.12 op het moment van schrijven) en het installatiebestand volledig uit te voeren.
Voor MacOS is Python meestal al aanwezig (vaak versie 2) en moet het worden bijgewerkt naar de nieuwste versie (3.12 op het moment van schrijven) door het installatiepakket van de officiële Python-website te downloaden en te installeren (zoals in Windows).

Opmerking voor MacOS-gebruikers: in de huidige versie van SerialTool voor MacOS is het Python 3.12-framework al geïntegreerd om te voldoen aan de Apple-vereisten voor code signing. Als je een andere versie wilt gebruiken die op je systeem is geïnstalleerd, kun je dit aanpassen in het menu "Python Environment".

Voor Linux moet Python via de commandline worden geïnstalleerd, bijvoorbeeld op Ubuntu met sudo apt-get install python3 of op Fedora met sudo dnf install python3
Als je twijfels of problemen hebt bij de installatie van Python, kun je altijd terecht op de officiële site of op de vele online tutorials.

Python-omgeving instellen en configureren.


Zodra de installatie is voltooid en je via het menu "Python Environment" hebt gecontroleerd dat alles werkt, hoef je alleen op de knop "Check Installation" te drukken om de huidige Python-instelling te importeren en op te slaan voor volgende starts van SerialTool.

Je bent klaar! Laad de eerste voorbeelden en druk op de knop [RUN] om je avontuur met SerialTool en Python te starten en je eerste programma voor de seriële poort te schrijven.

Enkele aanvullende informatie

Om het schrijven van scripts te vergemakkelijken, heeft de ingebouwde editor de typische functies van een IDE, maar biedt hij op dit moment nog geen debugging.
Bij de beschikbare opties is het aan te raden om altijd de optie “Automatically close serial ports when the script finishes execution.” te activeren. Als je script schrijffouten tegenkomt, zorgt SerialTool er dan voor dat eventuele open seriële poorten worden gesloten, zodat je deze niet bij een volgende uitvoering handmatig hoeft te sluiten.
Om een script te stoppen en af te sluiten is het niet aan te raden om sys.exit() te gebruiken, omdat dit SerialTool volledig zou afsluiten, aangezien Python erin geïntegreerd is. Als je vanuit de broncode de uitvoering moet stoppen, gebruik dan de functie SerialTool.stopscript.
Bevind je je in een lus, dan kun je de uitvoering ook stoppen via de knop [STOP] in de GUI.
Omdat Python direct in SerialTool is geïntegreerd, is het belangrijk te onthouden dat je script onderdeel wordt van de processen van SerialTool. In dat kader is het cruciaal dat je bij While True-lussen altijd een kleine pauze inlast (typisch 0,1 seconden) met time.sleep(0.1) (uit de time-bibliotheek), zodat de hoofd-GUI-processen kunnen blijven draaien; anders loop je het risico de applicatie volledig te laten vastlopen.
Maak je geen al te grote zorgen: in onze voorbeelden worden de kritieke punten duidelijk aangegeven waar deze kleine vertragingen moeten worden toegevoegd.

F.A.Q.

Is de integratie van Python beperkt tot bepaalde functionaliteit?
NEE. Alle functionaliteiten van Python-scripts zijn rechtstreeks beschikbaar, inclusief het laden van externe libraries (indien aanwezig op het systeem).

Werken SerialTool en Python op alle besturingssystemen?
JA. Op alle platformen waar SerialTool en Python beschikbaar zijn, kan het worden gebruikt, dus op Windows, MacOS en Linux.

Moet ik Python noodzakelijk downloaden en installeren?
JA. De Python-interpreter moet aanwezig zijn op de pc waarop je hem wilt gebruiken. SerialTool is gebaseerd op Python3 en de compatibiliteit met Python2 hangt rechtstreeks af van de compatibiliteit tussen de twee versies. Voor gebruikers van Python2 is het in elk geval aan te raden om Python3 te gebruiken.

Hoe communiceert Python met SerialTool?
Het Python-script communiceert via de SerialTool-bibliotheek, die direct in onze software is geïntegreerd, door de gewenste functies aan te roepen. De via Python ingestelde parameters, waaronder het openen en sluiten van de seriële poort, zijn direct gekoppeld aan de hoofd-userinterface. Met andere woorden: je bestuurt SerialTool rechtstreeks vanuit Python via de SerialTool-bibliotheek en de bijbehorende functies.

Kan ik de functies van SerialTool blijven gebruiken?
JA. Alle SerialTool-functies blijven beschikbaar: AutoAnswer, Alarm, SerialScope, pakketweergave, Gegevenslogging, Pakketten naar het netwerk sturen, enz. blijven beschikbaar en selecteerbaar via de gebruikersinterface.

Is het mogelijk om meerdere poorten tegelijk te gebruiken?
JA. De basisfunctionaliteit van SerialTool is het gelijktijdig beheren van meerdere seriële poorten. Vanuit Python kun je met de functie SerialTool.assignPort het poortnummer koppelen aan de seriële poort die je wilt gebruiken.

Moet ik altijd de GUI gebruiken om de poorten te openen en in te stellen vóór gebruik?
NEE. Zoals eerder gezegd, is het beheer van seriële poorten direct toegankelijk vanuit Python.

Kan ik ook RTS- en DTR-parameters instellen?
JA. De bibliotheek laat je toe om de RTS- en DTR-lijnen zowel bij het openen van de seriële poort als tijdens de uitvoering van het script rechtstreeks te sturen.

Kan ik de implementatie van extra functies in de SerialTool-bibliotheek aanvragen?
JA. Elke verdere uitbreiding van de SerialTool-bibliotheek voor Python wordt in overweging genomen en, waar mogelijk, geïmplementeerd op basis van de ontwikkelingsplanning van SerialTool.

Welke vorm van support kan ik krijgen?
Ons team is beschikbaar om je te helpen bij de integratie van je scripts, om het schrijven van scripts te vergemakkelijken of eventuele fouten te identificeren. Support omvat niet het schrijven van volledige Python-scripts in opdracht; de ondersteuning is gericht op de integratie van Python met SerialTool.