Abstrakt: V tomto článku naleznete ukázku použití modulu pro Python, který umožňuje komunikaci s FITkity. Jedná se o wrapper nad knihovnou libkitclient. Informace o dostupných třídách a metodách je proto možné čerpat z dokumentace této knihovny.
Terminál využívá multiplatformní knihovnu libkitclient, která slouží ke komunikaci s FITkitem a poskytuje jednotné uživatelské rozhraní. Jelikož tato knihovna komunikuje přímo s USB převodníkem, odpadá tak nutnost konfigurace virtuálních seriových portů.
Abychom mohli s kitem pracovat v prostředí jazyka Python, je nutné nainstalovat C knihovnu libkitclient a modul do Pythonu.
Na Windows je modul distribuován formou instalátoru, který je možné nalézt v privátní sekci Download. Jediné, co je nutné mít nainstalované pro správný chod jsou ovladače pro obvod FT2232. Návod popisující instalaci ovladačů naleznete zde
V linuxu je libkitclient distribuován formou balíčku, viz dokument Zprovoznění FITkitu v nativním prostředí Linuxu
import sys import threading from fitkit import * # Inicializace - manažer zařízení devices = pyDeviceMgr() ret = devices.discover() if (ret < 1): raise Exception("No device") # Výběr prvního zařízení dev = devices.acquire() if (dev is None): raise Exception("No device") print "VID: %04X PID: %04X SN: %s DECR: %s" % (dev.vid(), dev.pid(), dev['b'].serial(), dev['b'].product()) # Otevření komunikačního kanálu B (mikrokontroler) ch = dev['b'] ret = ch.open() if (ret != FitKitChannel.Ok): raise Exception("Can't open") ch.resetMCU() # Čtecí vlákno - obsluha def read_thread(*args): while (ch.isOpen()): try: data = ch.read(1, 200) if (data <> None): sys.stdout.write(data) sys.stdout.flush() except RuntimeError, e: #read terminated print "Exception",e break print "Ukonceni: Ctrl+C" #Spuštění vlákna treader = threading.Thread(name="readthread", target=read_thread) treader.start() try: while (ch.isOpen()): char = sys.stdin.read(1) ch.write(char, 1) except: ch.terminateReader() #reset MCU ch.setRts(False) ch.setDtr(False) ch.close()
Volání close() automaticky vyvolá terminateReader na read(), čímž se ukončí čtecí vlákno read_thread()