User Tools

Site Tools


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

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

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

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

220306: PC-RPiPico

  • Blinkender RPiPico mit (noch lokalem!) Script 'blinky.py':
  • 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

220304: MicroPython File-Handling



















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…
  •  2203031631_SCD_Scriptor.jpg
















220302: SCD -

220224: SCD - Mischung von HW und SW

220224: SCD - Mischung von HW und SW

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!)

220223: SCD -

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

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

220217: SCD - Integration Hardware

220216: SCD - "Fertigstellung" PC-Software

2202170838_DeviceManagerComPorts.png

2202170829_UsbUartPCSimulation.jpg

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 -

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!

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

220201: RemoteRobotCar - RobotCarController

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

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

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)

220125: Inbetriebnahme RPiPico

220124: Inbetriebnahme RPiPico

.

project/scd_scriptingcommanddispatcher/scd-scriptingcommanddispatcher-pro.txt · Last modified: 2022/09/13 11:58 by 127.0.0.1