project:scd_scriptingcommanddispatcher:scd-scriptingcommanddispatcher-pro
Table of Contents
SCD-ScriptingCommandDispatcher: Pro
Vortragsreihe: RRC
- RRC-Hauptfolie
- Folie Übersicht
- Folie Kapitel1
- Folie Thema11 → Filmsegment11
- Folie Thema12 → Filmsegment12
- …
- Folie Thema1N1 → Filmsegment1N1
- Folie Kapitel2 → Filmsegment2
- Folie Thema21
- Folie Thema22
- …
- Folie Thema2N2
- …
- Folie KapitelN → FilmsegmentN
Ideen
- Ergänzende Idee(Android, Java):
- Unser RRC möchten wir später ja mit einem Host (PC, Tablet, Handy mit entsprechendem BS) steuern…
- Daher brauchen wir Applications unter Windows, Android, Linux, Ios, welche diese Steuerung des RRC ausführen.
- Daher mein Vorschlag:
- - wir schreiben unter Android eine Demo-App und veröffentlichen diese App im PlayStore
- - unter Führung des Ios-Kenners Werner unternehmen wir entsprechendes im AppleStore
- - danach kommt der Windows AppStore als Ergänzung.
- (alle Schritte mit Hilfsmittel Zoom über WebMeeting dokumentieren)
- AS5600 Encoder für DiametralMagnete
- alle Teile für Nema17 vorhanden
- OOO Projekt generieren
- QtDesigner auf English umstellen - bisher überhaupt nichts passendes gefunden
- allgemeines Konzept: mit SDCard: AVL-AnalogVoltageLogger
- 2202031045 - Walter Gespräch über Jan Heise / Boris Dabrowski
- Borys Dabrowski:
- HW: ArduinoDue mit 74HC4067
- SW: ADConversion von 20 gemultiplexten AnalogVoltages
- Idee zu Boris Dabrowski:
- RSR-RadioSpectrometerReporter / RSA-RadioSpectrometerAnalysis
- ArduinoDue mit 74HC4067 über UartUC an Esp32(uP/C++)Controller vernetzen
- ADueRadioSpectrometerController (C++)
- Esp32RadioSpectrometerDispatcher (erst uP, dann C++)
- Scriptor (MicroPython) über UartUC vernetzen
- RPiPicoRadioSpectrometerScriptor
- Software PC-GUI (Python) schreiben
- RadioSpectrometerCommander
- Jan Heise:
- MicroPython
- RRC - Energy-Management
- LiIo-Accus
- Controller regulated Supply
- Supply-Shutdown UnderVoltage-Detection
- RRC - RemoteRobotCar
- RCC - RobotCarController
- eigene Platine RCC-RobotCarController:
- Basis: Esp32UnoBoard
- 2x Left-Motors (MLB, MLF)
- 2x Right-Motors (MRF, MRB)
- 8x Ultrasonic-Sensor (LB, LM, LF, FF, RF, RM, RB, BB)
- 2x Mini-MotorDriver TB6612, L298-Ersatz (bestellt!)
- 2x PositionEncoder (PEL, PER) direkt an Motoren mit Lichtschranken gekoppelt
- 1x Keyboard4x4
- 1x LCDisplayI2C
- später (Austausch MicroPython gegen Cplusplus): Lan mit W5500-Modul
- KEINE SDCard!!!
2202xx: RemoteRobotCar - CommanderPC
- Gui Python Qt: Eingabe von Commands an RRC-Controller(UartUC)
- Gui Python Qt: Eingabe von Commands an RRC-Controller(WlanUdp)
2202xx: RemoteRobotCar - CommanderAD
- Gui Python Qt: Eingabe von Commands an RRC-Controller(BtUart)
2202xx: Mini-Projekt: Eigenes Widget für ein TabPage erstellen
- Erzeugung eines Custom-Controls
2202xx: WICHTIG: Dispatcher.AnalyseResponse programmieren (uP)!!!!
2202xx: WICHTIG: Dispatcher.AnalyseResponse programmieren (C++)!!!!
220307: Constants in MicroPython
- from micropython import const
220308: WebPages OHSW.de
- Themenhierachie
- Mathematik-Grundlagen-Dreisatz:
- a/b = u/(h-b)
2203xx: WebPages OHSW.de
- RPiPico: Reset-Button bei der Programmierung unter VSCode
- implement: MFS_CopyFileToCFS
- implement: CFS_CopyFileToMFS
- OOO PC-Response konsequent für alle Commands
- OOO UC-Response konsequent für alle Commands
… jetzt Umstellung auf TRR - TransmitReceiveRing-Protocol
220320: PcSCDScriptorRemoter/PcRPiPico
220319: PcSCDScriptorRemoter/PcRPiPico: Einbau CFS-Load/Save/Execute
- X PC-Response Problem gelöst: Result nun für Load/Save CFS registriert
- X SDCard einbauen
220318: PcSCDScriptorRemoter/PcRPiPico: CFS-Load/Save/Execute
- SDCard-Module OOP-Gestaltung
- Neugestaltung CFS_OpenWrite / CFS_WriteLine / CFS_CloseWrite:
- MFS/CFS: auf jeden Fall statt os auf jeden Fall uos verwenden!!!
- Neuprogrammierung MFS/CFS:
220317: PcSCDScriptorRemoter/PcRPiPico: CFS-Load/Save/Execute
- Neugestaltung CFS_OpenWrite / CFS_WriteLine / CFS_CloseWrite
- Problem mit SDCard-Module
220317: PcSCDScriptorRemoter/PcRPiPico: MFS-Load/Save/Execute
- Verbesserung MFS_OpenRead / MFS_ReadLine / MFS_CloseRead
- Neugestaltung MFS_OpenWrite / MFS_WriteLine / MFS_CloseWrite
- MFS_ExecuteFile:
220316: PcSCDScriptorRemoter - PcRPiPico
- Neugestaltung MFS_OpenRead / MFS_ReadLine / MFS_CloseRead
220315: PcSCDScriptorRemoter - PcRPiPico
- Restart mit:
- PcSCDScriptorRemoter: 2203130856_PcSCDScriptorRemoter_orderedpresavemfs.zip
- PcRPiPico: 2203091434_RPiPicoSCDScriptor_01V14_pclocalscriptor.zip
- Neues HS Command: @ST CMD {PI} → Response: $ST CMD 0/1 {PI}
- Funktion: WaitForCommandResponseFinished
- PcSCDScriptorRemoter:
- Gui-Erweiterung Local:SetLSOn/Off → Scriptor:SetLSOn/Off
- DispatcherBase-PushCommand (Push eleminieren, ersetzen mit CommandResponse):
- self.CommandPushed = True → self.CommandResponse = commandline
- AnalyseCommand: keine Abfrage auf TokenCount mehr
- AnalyseRxLine: für alle RxLines: Tokens = [rxline[4:7], rxline[8:]] (maximal zwei Token)
- PcRPiPico:
- AnalyseCommand: keine Abfrage auf TokenCount mehr
220314: PcSCDScriptorRemoter - PcRPiPico
- MFS: Save : Muell
- Sackgasse: aktuelle Version zwar mit einigermassen Save, aber Load Katastrophe → Neuanfang Save/Load!
220313: PcSCDScriptorRemoter - PcRPiPico
- X Define.Error/Warning/Debug/Message
- nach PcSCDScriptorRemoter-01V20 nun auch Nach-/Auf-Bearbeitung der PcRPiPico-Version mit beidseitigen Commands(!)
- MFS: Save/Load/Execute/CopyToCFS
- CFS: Save/Load/Execute/CopyToMFS
220312: PcSCDScriptorRemoter - PcRPiPico
- Script_OnLoadFilePCCommand mit Leben füllen…
- Script_OnSaveFilePCCommand mit Leben füllen…
220311: PcSCDScriptorRemoter - PcRPiPico
- Commands Load/SavePC, FSM mit Thread
- !!! TimeOut bei Ausbleiben des $-Response!
- Commands Load/Save/Execute/Copy einbauen - mit Thread und FSM!
- OOO SaveFile to PC: ebenfalls mit FSM TextBox-Text Open/LineByLine/Close (mit TimeOut) auf HD speichern!
- möglichst in CPCFile kapseln!
- ——————————–
- doch zuvor: Simulation-Motor mit Commands in PcSCDScriptorRemoter: CPCMotor.py
- ——————————–
- Software-Handshake mit Commnands bei Script-Abarbeitung
- Notwendigkeit: open/closeRead und readline(!)
- Test bei Blinky-Script:
- Handshake nach jedem Command (auch local in PC!) (WaitForCommandFifoEmpty!!!) after each SetOn/SetOff
- Execute-Button auf PC-Side integrieren
220310: PcSCDScriptorRemoter - PcRPiPico
220309: PcSCDScriptorRemoter - PcRPiPico
220309: PcSCDScriptorRemoter - PcRPiPico
- X TxCommand → Command → Fifo: Commands
- X CommandFiFo definieren und mit FSM (SoftwareHS) kontrolliert abarbeiten lassen
- X SingleCommand, .. MultiCommand testen
- X (Re-)Aufbau des CommandFifos
220308: PcSCDScriptorRemoter - PcRPiPico
- Basis PC: 2203061511_PcSCDScriptorRemoter_01V03 und
- Basis MC: 2203061511_RPiPicoSCDScriptor_01V03
- Gui: Buttons für CopyMFS→CFS vv
- Command LedSystemOn/Off
220307: RPiPico - RPiPicoFileMfsSdc
- Lesen und Schreiben von Files auf MFS-MemoryFileSystem und (parallel!) SDC-SDCard
- Einbau der optimierten Library sdcard.py aus '2203071151_RPiPicoSDCard_01V02' in '2203061153_RPiPicoFile_01V02_filedirectory'
- → jetzt übertragen MFS und SDC nach 2203061511_PcSCDScriptorRemoter_01V03
- → jetzt übertragen MFS und SDC nach 2203061511_RPiPicoSCDScriptor_01V03
220307: RPiPico - SDCard
- download library 'sdcard.py':
- Anleitung für Anschluss SDCard3V3-Module:
- Version: 2203071106_RPiPicoSDCard_01V01.zip
- Version: 2203071151_RPiPicoSDCard_01V02.zip
220306: PC-RPiPico
- Blinkender RPiPico mit (noch lokalem!) Script 'blinky.py':
- PcSCDScriptorRemoter: 2203061511_PcSCDScriptorRemoter_01V03.zip
- RPiPicoSCDScriptor: 2203061511_RPiPicoSCDScriptor_01V03.zip
- PcSCDScriptorRemoter: neben 'ExecuteScript' auch 'Load/SaveScript'
- dafür werden die Ergänzungen in CFile notwendig:
- SaveLine (jeweils einzelne Zeile mit eigenem Open/Close) (vorher: SaveText/Lines : ganze Text mit einem Open/Close)
- LoadLine (jeweils einzelne Zeile mit eigenem Open/Close) (vorher: LoadText/Lines : ganze Text mit einem Open/Close)
220306: MicroPython File-Handling
- OOP CFile-Handling (WriteText, ReadText, AppendText, WriteLines, ReadLines, AppendLines)
- CDirectory-static Class (list, Make, Change, FileExists, RenameFile, RemoveFile)
220304: MicroPython File-Handling
- File-Handling (WriteFile, ReadFile, AppendFile) in MicroPython (auf dem RPiPico) 👍
220303: SCD - Remote Scriptor
- Single-Betrieb mit PcSCDScriptorRemoter und RPiPicoSCDScriptor, verbunden über UartCB:
- SCD-ScriptingCommandDispatcher:
- prinzipiell scheint die MicroPython-Script-Verarbeitung in einem Thread (hier auf einem RaspberryPiPico(!)) sauber zu funktionieren
- 👍
- damit erreicht:
- - PC: 2201272140_PcTerminalUartUsb_01V00 (Python) sendet XSC-Command “XSC blinky.py” (ExecuteScript blinky) über UsbUart zum RPiPico
- - RPiPico: 2203031502_RPiPicoSCDScriptor_01V11 (MicroPython) empfängt über UsbUart Execute-Command und führt das (lokal gespeicherte) Script “blinky.py” aus…
220302: SCD -
220224: SCD - Mischung von HW und SW
- nach PassThrough: Single-Connect mit AnalyseRxLine
- mit Hard-und Software-Chain - geschafft!!!!! :
220224: SCD - Mischung von HW und SW
- SCDUnoBoard: zuerst: PassThrough RxLine → TxLine ohne Analyse
220224: SCD - Mischung von HW und SW
- SCD in MicroPython schreiben für Esp32SCDHardware, Version 02Vxx !!!
- Vorlage für Esp32-MicroPython: PC-Version ScriptingDeviceDispatcher
- Vorlage für Esp32-MicroPython: 2202180922_Esp32SCDHardware_01V02_commandchain.zip
- Vorlage für Esp32-MicroPython: 2201232053_Esp32ScriptingCommandDispatcher_01V11_base.zip
- erster Esp32SCDHardware-Test: Durchreichen von TxLines und RxLines ohne Interpretation
220224: SCD - Test (erfolgreich!)
- Probe: Debug-Ausgabe:
- OnBusy: TxCommand: print('++++++++')
- WaitingResponse = command
- AnalyseResponse: print('——-')
- WaitingResponse = ''
- alle Devices funktionieren sauber mit Fifo-Abarbeitung!
220223: SCD -
- erst einmal geschafft:
- speziell: <@XH LSO> : 10x LSO/LSF → TxCommands, Abarbeitung
220222: SCD -
- Idee: neue Struktur:
- neben RxLines und TxLines noch TxCommands als Fifo(!) aller auszuführenden Commands
- in OnBusy neue Abfrage: if 0 < len(self.TxCommands)): und
- mit und: if not(IsWaitingForResponse()):
- → pop next command und push TxLines, Set WaitingResponse := command (→ isWaiting!)
220221: SCD - TimeOut
- NC caller eleminiert
- TimeOut-Error bei UartCB-Unterbrechung
- Error-Condition kann ich im Moment nicht ohne Folge-/Abbruch-Fehler einbauen → ohne Error !!!
- Event wieder einbauen - Problem Scriptor und Hardware!
220221: SCD - Chain Error
- SCDHardware einfügen (von SCDController übernehmen)
- entfernt: unnötiger Filter in TxLine
220220/21: SCD - Software-Emulation Neue Version
- SCDCommander: @, $, kein !
- SCDController: @, $, kein !
- neue gemeinsame Dispatcher-Class
- DEF.Error : globale Fehlerfunmktion eingebaut (später: System-Reset?)
- Version: 541
- COM21 und COM22
220219: SCD - Hardware (Software-Emulation)
- Angleichung SCDHardware an SCDController
- weiter Usb-Ftdi-Adapter (COM52) für SCDHardware
- Fehler Response: Entweder Command finished oder weiterleiten!
- Sicherung 420 :
- Versuch, alle unnötigen Ausgaben zu eleminieren mit DEBUG_ Konstanten!
- Aufgabe - Neuanfang!
220219: SCD - Response
- neue alleinige SCD-Programmierung ohne HW
- Versuch zur Symmetrisierung SCDHardware, SCDController
- kein Durchblick → neuer Versuch:
- Einbau Template $-Response in SCDController
- Dispatcher… → Dispatcher
220218: SCD - Response
- in allen Devices $-Response als Antwort auf @-Command einbauen
- SCDCommander:
- DispatcherThread mit Software-HS für RxLines und TxLines
- Fehler in UartUC-Chain: Hänger (_last)
- neue alleinige SCD-Programmierung ohne HW
220218: SCD - Integration Hardware
- Esp32SCDHardware
- Weiterleitung der !HA SLS On/Off
- Ringabbruch in Hardware (nicht Scriptor) (diesen Wiederholungsabbruch in alle SCDs einbauen!!!
220217: SCD - Integration Hardware
- Esp32UnoBoard mit MicroPython
- Ersatz für Hardware-Controller (SCDHardware) → eine UartUC
- uP-Software: Minimaler Dispatcher mit @<s><t> LSO/LSF:
- @<s>H LSO : LedSystem On
- @<s>H LSF : LedSystem Off
220216: SCD - "Fertigstellung" PC-Software
- X SCDCommander (UartPC:COM21)
- X SCDController (UartPC:COM22 | UartUC:COM51)
- X SCDHardware (UartUC:COM52)
- X SCDScriptor (UartUC:COM53)
- Symmetriesierung aller Scripte
- Starten der Applications: SCDCommander → SCDController → SCDHardware → SCDScriptor
- Forward von !PA SLS On/Off an alle Devices!!!
- LedSystem to all Devices
220215: SCD
- Minimalsystem:
- SCDCommander(UartPC, COM21): OnOpen, OnClose, OnRx, OnTx
- SCDController(UartPC, COM22): OnOpen, OnClose, OnRx, OnTx
- ScriptingCommandDispatcher133
- btnTxLSO/F - OHNE UartPC! - LedSystemOn/Off
- lokal: LSO/LSF
- erweitern: !PA LSO/F → auch nüber UartUC an alle Devices
- last: ScriptingCommandDispatcher136
220215: SCD
- (erste Morgenübungen!)
- Neuer Versuch zur Defintion eines Tx-/Rx-Protokolls
- —————————————————–
- Command(@) / Response($):
- —————————————————–
- Command S → T
- S(Tx)<@ST C PI>
- D0
- DJ(Rx)<@ST C PI> :
- if DJ == T :
- Execute
- Response T(Tx)<$ST C PI>
- else Forward DJ(Tx)<@ST C PI>
- …
- DI(Rx)<$ST C PI>
- if DI == S(!) :
- Finish Command
- else Forward DI(Tx)<$ST C PI>
- …
- Spezialfall: Bridge (UartPC : UartUC)
- wird behandelt wie Element einer SingleChain
- …
- —————————————————–
- Event(!)(Target):
- —————————————————–
- S(Tx)<!ST C PI>
- —————————————————–
- Event(All):
- —————————————————–
- S(Tx)<!ST C PI>
220214: SCD
- (erste Morgenübungen!)
- Einschub: TxD> → UartPC-TxD / UartUC-TxD>
- Einschub: RxD> → UartPC-RxD / UartUC-RxD>
- Neue Commands in SCDCommander:
- @PP LSO/LSF - PC-UartPC-PC: ein/ausschalten der PC-LedSystem
- @PC LSO/LSF - PC-UartPC-UC: ein/ausschalten der UC-LedSystem
- @PH LSO/LSF - PC-UartPC-UC - UC-UartUC-HC: ein/ausschalten der HC-LedSystem
- umbau WNDCommander auf sechs Buttons
- grosses Problem:
- Übersichtlichkeit der Tx/Rx-Daten geht verloren,
- Notwendig ist ein neues Konzept/Modell zum Datentransfer über UartPC und UartUC !!!!!!!
220213: SCD -
- Erster Zugriff von SCDCommander → UartPC → SCDController → UartUC → SCDHardware
220212: SCD -
- Erweiterung von UartPC → UartPC und UartUC
- Umbenennung: symbole:
- P - PC-Commander (P)
- I - Esp32-Interface-Controller (uP, C++)
- H - Stm32-Hardware-Controller (C++)
- S - RPiPico-Scriptor (uP)
- Command Commander: <@HLSO → Controller: LSO
220212: SCD -
- Commander: Tx:“@HC LSO” → Controller: Rx:“@HC LSO” Tx:“$CH LSO” und Tx:“!CH SLS On”
- Commander: Tx:“@HC LSF” → Controller: Rx:“@HC LSF” Tx:“$CH LSF” und Tx:“!CH SLS Off”
- Problem: return OnTx mit Rückgabeparameter txline beseitigt
220212: SCD -
- Tx / Rx / !-Response
- def TxCommand(self, source, target, command)
- def TxResponse(self, source, target, response)
- def TxEvent(self, source, target, event)
- bisher direkte TxRx-Reflexion, nun
- SCDController (neben SCDCommander)
- int Commander: Tx:“@HC LSO” → Controller: Rx:“@HC LSO” Tx:“$CH LSO” und Tx:“!CH SLS On”
- int Commander: Tx:“@HC LSF” → Controller: Rx:“@HC LSF” Tx:“$CH LSF” und Tx:“!CH SLS Off”
220211: SCD -
- Vorbereitung KaLi - RRC
220210: SCD -
- Aufräumen, _Esp32RobotCarController
- ScriptingCommandDispatcher: SCDCommander, SCDController, SCDHardware, SCDScriptor
- Umbennung: _PcScriptingCommandDispatcher → _ScriptingCommandDispatcher (da alle 4 Applikation parallel behandelt werden)
- Basis: 2202091649_PcScriptingCommandDispatcher_02V02 → ScriptingCommandDispatcher
- SCD(alle4): Uart
- SCD(alle4): Dispatcher
- Uart: erhält RxLines und TxLines
- Uart-OnRxLine(-) : RxLine muss im Parent-Module gepopt werden
- Uart-OnTxLine: muss (eventuell geänderte Line als return an Uart zurückgeben
- 1. in UartThread RxLins(!) aufstocken, solange Zeichen in Rx available
- 2. Abfrage auf zu sendende TxLines
- 3. Abfrage auf vorhandene RxLines (vgl.1.!) → OnRxLine
- SCDCommander: Tx und Rx ok, jetzt Analyse Rx: S, T, C
220209: SCD - Aufteilung vier Applikationen
- jede Application bekommt eine wählbare Monitorposition
- jede Application bekommt eine (wählbare) Uart
- automatischer Programmstart aller vier Applikationen
- automatische Plazierung aller vier Applikationen
220209: SCD - NeuFormulierung
- jede Device erhält eigene (Simulations-)Application
- Aufsplittung von PcScriptingCommandDispatcher →
- PC: SCDCMD - SCDCommander (UartPC/WlanUdp/BtUart/LanUdp)
- UC: SCDCNT - SCDController (UartPC/WlanUdp/BtUart/LanUdp), (UartUC)
- UC: SCDHDW - SCDHardware (UartUC)
- UC: SCDSCR - SCDScriptor (UartUC)
------------------------------------- SDCCMD: COM21 UartPC: TxA RxA | | SDCCNT: COM22 UartPC: RxB TxB ------------------------------------- SDCCNT: COM31 UartUC: RxC TxC | | SDCCMD: COM32 UartUC: | RxD TxD | | SDCSCR: COM33 UartUC: TxE RxE -------------------------------------
220208: SCD - Formulierung
- X Basis: 2202071952_PcScriptingCommandDispatcher_02V02
- X Umbenennung: CMD, SCR, CTR, HDW
- Uart-Umformulierung (Weiterführung von gestern):
- RxLines
- TxLines
220208: SCD - Theorie
- Project: enhält eine bis mehrere Devices
- Device: enthält Units: ein Processor, eines oder mehrere Interfaces, einen Dispatcher
- Processor: verteilt die ProcessTime auf die Aufgaben der Units auf
- Interface: Datenschnittstelle zwischen Local-Device und External-Devices
- Dispatcher:
- RxLine: Dispatcher erhält vom Interface RxLines, sammelt und verarbeitet diese lokal an Subdevices oder leitet die RxLines über UartUC-Bus an andere Devices weiter
- TxLine: Dispatcher erhält von SubDevices TxLines und gibt diese über Interfaces oder UartUC-Bus weiter
- SubDevices: logische Segment der übergeordneten Device
- DatenTypen:
- @ Commands
- $ Response
- ! Event
220206: RRC - PC:RobotCarCommander und Esp32RobotCarController
- PcPcScriptingCommandDispatcher
- UartPC(COM51)
- UartUC(COM52)
- btnWindowSize 4x
- btnWindowPosition 4x
220206: RRC - PC:RobotCarCommander und Esp32RobotCarController
- einfachste “schnelle” Vorgehensweise:
- Esp32 missbrauchen als Esp32Scriptor
- Hardware: auf Uart1: UartUC (Uart2: UartPC, Uart0: Usb-Program&Debug-Interface)
- —————————————————————————
- PCMultiInterfaceDispatcher:Tx(UsbPC)→-UartPC→(UartPC)Rx:Esp32MultiInterfaceDispatcher
- PCMultiInterfaceDispatcher:Rx(UsbPC)←UartPC-←(UartPC)Tx:Esp32MultiInterfaceDispatcher
- —————————————————————————
- PCMultiInterfaceDispatcher:Tx(UsbUC)→-UartUC→(UartUC)Rx:Esp32MultiInterfaceDispatcher
- PCMultiInterfaceDispatcher:Rx(UsbUC)←UartUC-←(UartUC)Tx:Esp32MultiInterfaceDispatcher
- —————————————————————————
- PCMultiInterfaceDispatcher:Tx(UsbPC)→-UartUC→(UartPC)Rx:Esp32MultiInterfaceDispatcher
- PCMultiInterfaceDispatcher:Rx(UsbPC)←UartUC-←(UartPC)Tx:Esp32MultiInterfaceDispatcher
- PCMultiInterfaceDispatcher:Tx(UsbUC)→-UartUC→(UartUC)Rx:Esp32MultiInterfaceDispatcher
- PCMultiInterfaceDispatcher:Rx(UsbUC)←UartUC-←(UartUC)Tx:Esp32MultiInterfaceDispatcher
- — Distribution ——————————————————————-
- PCMultiInterfaceDispatcher:Tx(UsbPC)→-UartPC→(UartPC)Rx:Esp32MultiInterfaceDispatcher
- PCMultiInterfaceDispatcher:Rx(UsbUC)←UartUC-←(UartUC)Tx:Esp32MultiInterfaceDispatcher
- PCMultiInterfaceDispatcher:Tx(UsbUC)→-UartUC→(UartUC)Rx:Esp32MultiInterfaceDispatcher
- PCMultiInterfaceDispatcher:Rx(UsbPC)←UartPC-←(UartPC)Tx:Esp32MultiInterfaceDispatcher
- — Distribution ——————————————————————-
- PCMultiInterfaceDispatcher:Tx(UsbPC)→→→(UartPC)Rx:Esp32MultiInterfaceDispatcher
- Esp32MultiInterfaceDispatcher:Rx(UartUC)←←←(UartPC)Tx:Esp32MultiInterfaceDispatcher
- Esp32MultiInterfaceDispatcher:Tx(UartUC)→→→(UsbPC)Rx:PCMultiInterfaceDispatcher
- — Distribution ——————————————————————-
- PCMultiInterfaceDispatcher:Tx(UsbPC)→→→(UartPC)Rx:Esp32MultiInterfaceDispatcher
- Esp32MultiInterfaceDispatcher:Rx(UartUC)←←←(UartPC)Tx:Esp32MultiInterfaceDispatcher
- Esp32MultiInterfaceDispatcher:Tx(UartUC)→→→(UsbUC)Rx:PCMultiInterfaceDispatcher
- PCMultiInterfaceDispatcher:Rx(UsbPC)←←←(UsbUC)Tx:PCMultiInterfaceDispatcher
220205: RRC - PC:RobotCarCommander und Esp32RobotCarController
- Konzepte formuliert:
- VSCode mit zwei MicroPython-PyMakr-Projekten (und zwei Schnittstellen-unterschiedlichen) pymakr.conf erfolgreich wechselseitig eingesetzt
- O KeyEvent checken
- Esp32RobotCarController(MicroPython): Interfaces: UartPC/BtUart/WlanUdp und UartUC(UCBus)
- Weiterleiten von Commands an Esp32RobotCarController(Tx)→UartUC→(Rx)Stm32RobotCarController(C++)
- Responses und Events weiterverteilen: Stm32RobotCarController(C++)(Tx)→UartUC→(Rx)Esp32RobotCarController
- funktioniert: PCGui(Python)→Button(LedOn/Off)→UartUsb→Esp32(MicroPython): LedOn/Off
- jetzt: PCGui(Python)→Button(LedOn/Off)→UartUsb→Esp32(MicroPython)→UartUC→Stm32(C++): LedOn/Off
- Trick: statt Stm32F103C8T6(C++) besser Esp32(uP) wegen Umstellung von VSCode (C++ ↔ PyMakr)
220205: RemoteRobotCar - RobotCarCommander
- COM40 - UartProgramDebug, Program&Debug-Interface PC-ESP32
- COM3 - UartPC, Command-Response-Interface PC-ESP32
- COMx - UartUC, nur mit Einheiten des UartUC-Busses (Chain) verbunden!
- X Dispatcher: SystemTimeManagement
- X Esp32RobotCarController.py
- X Esp32RRCallbacks.py
- X Esp32RRCDispatcher.py
- X Esp32RRCGlobals.py
- X LSO, LSF funktionieren…
- X bei Response: Rx:S-T → Tx:T-S
- X StateLedSystem → GUI Led: red ↔ grey
- Version PC: 2202051214_RobotCarCommander_01V00.zip
- und ESP32: 2202051214_Esp32RobotCarController_01V00.zip
220204: RemoteRobotCar - RobotCarCommander
- OOP-HW-Classes
220203: RemoteRobotCar - RobotCarCommander
- OOP-Hierachy
- RRC
- MotorL
- MotorR
- EncoderL
- EncoderR
- DistanceFL
- DistanceFR
- DistanceBL
- DistanceBR
- an alle Module des RRC wird CB-Methodenliste(Rx/Tx…) übergeben
- Main:
- OnRxCommand(@)
- OnTxCommand(@)
- OnRxResponse($)
- OnTxResponse($)
- OnRxEvent(!)
- OnTxEvent(!)
- OnRxComment(#)
- OnTxComment(#)
220202: RemoteRobotCar - RobotCarCommander
- PC-Gui, Python, Spyder
- Transfer zwischen
- und ESP32: 2202021600_Esp32RobotCarController_00V05.zip
220201: RemoteRobotCar - RobotCarController
- CBMotor - BaseClass mit allen Motor-Methoden
- CHMotor - Motor-Methoden → Motor-Funktion Hardware
- CSMotor - Motor-Methoden → Motor-Simulation Software
- RobotCar : Sammel-Class für H/S-Motor, H/S-Encoder, H/S-Distance
- BRobotCar
- HRobotCar
- HMotor(BMotor)
- HEncoder(BEncoder)
- HDistance(BDistance)
- SRobotCar
- SMotor(BMotor)
- SEncoder(BEncoder)
- SDistance(BDistance)
- <@HE APR> / <@HE LSO> / <@HE LSF> funktionieren
- X Wiedereinbau: LCDisplayI2C
- X Wiedereinbau: Keyboard4x4
- Erweiterung: Simulation Motor/Encoder(/Distance) mit Commands und Simulationsfunktion
220201: RobotCarController - AddOn: Simulator
- Compiler-Directive: ACTIVE_SIMULATOR
- Software-Simulator: CSimulatorMotor (entsprechend: CSimulatorEncoder/Distance…)
- CMotor → CSimulatorMotor(Main) : Bestandteil des Main-Programms
- Callbacks bei Motor-Funktonen(Move, Stop → Main → CSimulatorMotor)
220131: DCMotor... -> RC...
- RCController - RobotCarController
- RCSimulator
- RCScriptor
- RCCommander
220131: DCMotorController
- Esp32UnoBoard (Symbol: E) mit MicroPython(tiny-Version), später Cplusplus(pro-Version)
- Software Basis: 2201232053_Esp32ScriptingCommandDispatcher_01V11_base
- Entfernung des Scripting-Interface - hier nur reine RxCommand-Verarbeitung
- VSCode mit Pymakr, COM20
- MP-Image-Installation mit Thonny: v1.18(2022-01-17).bin
- RxCommands:
- @<all>E LSO : LedSystemOn
- @<all>E LSF : LedSystemOff
- @<all>E MML <pwm> : MoveMotorLeft <velocity in 0% .. 100%>
- @<all>E MMR <pwm> : MoveMotorRight <velocity in 0% .. 100%>
- @<all>E SML : StopMotorLeft
- @<all>E SMR : StopMotorRight
- @<all>E STP : StopAllMotors
- @<all>E RSD <orientation> : ReadSensorDistance <sensor-orientation>
- Sensor-<orientation> in Front(left, middle, right): <FL>, <FM>, <FR>
- Sensor-<orientation> in Middle: <ML>, <MM>, <MR>
- Sensor-<orientation> in Back: <BL>, <BM>, <BR>
- Sensor-<orientation> in Front(all): <FF> := [<FL> <FM> <FR>]
- Sensor-<orientation> in Middle(all): <MM> := [<ML> <MM> <MR>]
- Sensor-<orientation> in Back(all): <BB> := [<BL> <BM> <BR>]
220130: DCMotorSriptor: Done
- X UI-Aufteilung in zwei Tabsheets: Terminal und FileHandler
- X Software-Handshake TxData-RxData:
- Erkennung eines TXCommands
- Senden des TxCommands über UartUC, warten auf Antwort
- Empfang eines RxResponse, Beendung des TxCommands
- X Script-Verarbeitung:
- exec(open(scriptname).read()), exec im …ScriptorMain(globals(), locals())
- Execution einer (OOP-)Hierachie von (Micro-)Python-Scripts
- Jeder TxCommand wird in einer Class-Method als Todo→UartUC gesendet
- Software-Handshake jedes TxCommands
- X Version: 2201301949_DCMotorScriptor_00V11.zip
220129: DCMotorSriptor: ToDo
- Drei PC-Programme mit Austausch über UartUC-Bus:
- DCMotorCommander
- DCMotorSimulator
- DCMotorSriptor
- PC, Python: aus DCMotorSimulator(PC) ScriptingFileInterface extrahieren und
- in eigenes PC-Programm packen: DCMotorSriptor
- später Transfer: (PC)DCMotorSriptor → RPiPicoDCMotorSriptor
- DCMotorCommand → Command → DCMotorSriptor
- DCMotorSriptor enthält Commands für ScriptingFileInterface:
- XSF - Execute: Scriptor empfängt Command zur Ausführung eines lokalen Scripts
- @ST XSF <script> → $ST XSF <script>
- WSF - Write: Scriptor legt lokales Script an (W)
- @ST WSF <script> → $ST WSF <script>
- ASL - Append: Scriptor hängt Line an lokales Script
- @ST ASL <line> → $ST ASL <line>
- RSF - Read: Scriptor öffnet lokales Script zum Lesen (R)
- @ST RSF <script> → $ST RSF <script>
- RSL - Read: Scriptor liest lokale ScriptLine
- @ST RSL → $ST RSL
- … → !ST RSL <line>
- CSF - Close: Scriptor schliesst R/W-geöffnetes lokales Script
- @ST CSF → $ST CSF
- DSF - DeleteScriptFile: Löschen eines lokalen Scripts
- @ST DSF <script> → $ST DSF <script>
- LSD - List: Rückgabe aller lokalen Scripts eines Directory
- @ST LSD <directory> → $ST LSD <directory>
- … → !ST LSD <file>
- CRD - Create Directory
- RVD - Remove Directory
- RSD - RemoveScriptsDirectory: Löschen aller lokalen Scripts eines Directories
- @ST RSD <directory> → $ST RSD <directory>
220128: DCMS, DCMC : CommandDispatcher
- in beiden Programmen vorhanden
- Analyse der eingehenden RxLines
- Analyse Header:
- Command @, Resonse $, Event !,…
- Source H, R, E, S
- Target H, R, E, S, A(ll)
- 1. wenn Source == self → Chain durchlaufen, keine Aktion, Ende
- 2. wenn Source != self →
- wenn Target == A(ll) → weiterleiten
- wenn Target == self → lokale Aktion, kein Weiterleiten, Ende
- wenn Target != self → weiterleiten
- Unterschiedliche Aktionen für Commands bei unterschiedlichen Programmen
- daher CDispatcher in jedem Programm unterschiedlich und spezifisch für jedes Programm
220128: DCMotorSimulator
- DCMotorCommander →copy→ DCMotorSimulator
- CommandDispatcher
- Basis 2201272140_PcTerminalUartUsb_01V00
- enthält ScriptingFileInterface
- Commands für ScriptingFileInterface:
- XSF - Execute
- WSF - Write
- ASF - Append
- OSF - Read
- CSF - Close
- VSF - Verify
- Alternativ:
- Upload
- Download
- Verify
- Delete
220128: DCMotorCommander
- X DCMotorCommander: Trennung von RxLines und Dispatcher!
- X DCMotorCommander: Klassenhierachie: WindowMain - Uart - Thread
- X DCMotorCommander: RxLines und TxLines
- Basis 2201272140_PcTerminalUartUsb_01V00
220128: SCD-Software-Hierachie
- Beispiel: IT01
- PC: IT01Commander (Python, UsbUC)
- PC: IT01Simulator (Python, UsbUC), entspricht IT01Scriptor auf PC-Seite
- RPiPico: IT01Scriptor (MicroPython, UartUC)
- Esp32: IT01InterfaceController (C++, UartUC)
- Stm32(F407): IT01HardwareController (C++, UartUC)
- Beispiel: DCMotor
- PC: DCMotorCommander (Python, UsbUC)
- PC: DCMotorSimulator (Python, UsbUC), entspricht DCMotorScriptor auf PC-Seite
- RPiPico: DCMotorScriptor (MicroPython, UartUC)
- Esp32: DCMotorInterfaceController (C++, UartUC)
- Stm32(F103): DCMotorHardwareController (C++, UartUC)
- Beispiel: BricksRoboter
- PC: BricksRoboterCommander (Python, UsbUC)
- PC: BricksRoboterSimulator (Python, UsbUC), entspricht BricksRoboterScriptor auf PC-Seite
- RPiPico: BricksRoboterScriptor (MicroPython, UartUC)
- Esp32: BricksRoboterInterfaceController (C++, UartUC)
- Stm32(F103): BricksRoboterHardwareController (C++, UartUC)
220128: PCSimScriptingCommandDispatcher / DCMotorCommander
- Vorteil: einfacher/schnneller zu schreiben als RPiPicoSCD
- Vorteil: BildWidgets veranschaulichen (speziell) die Arbeitsweise des Messaufbaus
220128: PCScriptingCommandDispatcher
- Basis: PCTerminalUartUsb
- PCScriptingCommandDispatcher: Python, Qt
220128: RPiPicoScriptingCommandDispatcher
- Basis: 2201251757_RPiPicoUartUC_00V03, _last
- !!! Verschieben, zuerst PCSimScriptingCommandDispatcher(Python, Qt) schreiben,
- danach Ergebnisse in RPiPicoScriptingCommandDispatcher einfliessen lassen
220127: PC-Python-Qt6: PcTerminalUartUsb
- X Qt: Panel, Text, Combobox
- X Verknüpfungen Qt-Python
- X Version: 2201272140_PcTerminalUartUsb_01V00.zip
220126: PC-Qt6-Try: PcTerminalUartUsb
- X Spyder:Python QtDesigner:Qt6, Link auf desktop:
- X ShortCut[C:\ProgramData\Anaconda3\Library\bin\designer.exe]
- nicht: ShortCut[C:\ProgramData\Anaconda3\Library\bin\assistent.exe]
- nicht: ShortCut[C:\ProgramData\Anaconda3\Library\bin\busviewer.exe]
- / Button-Event
220125: UartUC-Protocol
- Definition Command: “@[target][source] [command] {[parameter]}{0..3}”
- mit [target] in {“H”{Host|PC}, “C”{Controller}, “S”{Scriptor}, “A”{All}}
- mit [source] in {“H”{Host|PC}, “C”{Controller}, “S”{Scriptor}, “A”{All}}
- mit [command] in {“LSO”, “LSF”, …}
- mit [paraemeter] in {String}{text, int8/16/32, uint8/16/32, float32, double64}
220125: PC-UC-Simulation: PcUcSimulator(CL)
- Erste Tests mit PyQt6 / PyQt6Designer erfolgreich →
- Nächstes PC-Python-Qt6-Modul: PcUartTerminal
220125: Inbetriebnahme RPiPico
- BasisVersion ohne OOP 2201251613_RPiPicoUartUC_00V01.zip
220124: Inbetriebnahme RPiPico
- mit VSCode und MicroPython: 2201251315_RPiPicoDemo_01V01.zip
.
project/scd_scriptingcommanddispatcher/scd-scriptingcommanddispatcher-pro.txt · Last modified: 2022/09/13 11:58 by 127.0.0.1