TXT 4.0 Programmierung in C++

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
Torsten
Beiträge: 313
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

TXT 4.0 Programmierung in C++

Beitrag von Torsten » 18 Feb 2022, 20:39

Hallo,

außer in Robo Pro Coding und in Python kann der TXT 4.0 auch direkt in C++ programmiert werden. Einen Compiler (gcc 8.2.0) und alle erforderlichen Include-Dateien und Libraries zur Ansteuerung der Ein- und Ausgänge des Controllers bringt der TXT 4.0 schon von Haus aus mit.

Die Struktur der untersten Python-Ebene des TXT 4.0 lehnt sich eng an die Struktur von ftrobopy an. Aufgrund der Verwendung von SWIG zur Realisierung des Python/C++-Interfaces zur Ansteuerung der Motorplatine des TXT 4.0, findet man dieselbe Klassenstruktur auch auf der C++-Ebene wieder.

C++-Beispielprogramm (motor.cpp) zur Ansteuerung eines Motors am Eingang M1:

Code: Alles auswählen

#include <unistd.h>
#include <iostream>
#include <ft/ft.hpp>

int main(void) {
  ft::TXT txt("auto");
  ft::Motor m1(txt, 1);
  m1.startSpeed(512);
  usleep(2000000); // in Mikrosekunden
  m1.setSpeed(0);
}
Außer der Definition der Klassenstruktur in der Datei /usr/include/ft/ft.hpp auf dem TXT 4.0 gibt es bisher von fischertechnik keine offizielle Dokumentation dazu. Man muss sich die Funktionen also selbst aus dem Source-Code heraussuchen. Einem geübten C++-Programmierer sollte das aber nicht allzu viel Mühe bereiten ;)

C++-Programme lassen sich direkt auf der Kommandozeile des TXT 4.0 compilieren:

Code: Alles auswählen

g++ motor.cpp -o motor -lTxtControlLib
Ausführen lassen sich die compilierten Programme dann mit:

Code: Alles auswählen

./motor
Kopiert man die C++-Datei (mit der Endung .cpp) und das compilierte Binary gleichen Namens (ohne .cpp-Endung) in einen Pfad unterhalb von /opt/ft/workspaces lassen sich die Programme durch auswählen der .cpp-Datei auch über das Touch-GUI des TXT 4.0 starten.

Viele Grüße
Torsten

Edit: gcc --> g++

Antworten