[GELÖST] ROBOTICS TXT Controller programmieren via USB

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
bude
Beiträge: 9
Registriert: 18 Feb 2016, 17:23

[GELÖST] ROBOTICS TXT Controller programmieren via USB

Beitrag von bude » 18 Feb 2016, 17:42

Hallo Community,

ich bin neu dabei mit meinem Fischertechnikset. Ich möchte gerne den ROBOTICS TXT Controller über die USB Schnittstelle ansteuern und programmieren, stoße dabei aber auf Probleme. Vielleicht könnt ihr mir helfen.

Mein Rechner ist ein Windows 7 (x64). Die verwendetet .NET-Bibliothek verwende ich von der fischertechnik.de Homepage, siehe http://www.fischertechnik.de/ResourceIm ... ?raid=7792 (im Abschnitt ROBO TX Controller). Der ROBOTICS TXT läuft auf der Version 4.2.3.0.

Die Treiber für den ROBOTICS TXT werden von Windows 7 erkannt und installiert. Ein COM-Port wird dafür aber nicht belegt.

Wie verbinde ich den ROBOTICS TXT mit der Bibliothek FtMscLibExNet.dll bzw. FtMscLibEx.dll? Der Code den ich üblicherweise in Foren sehe verlangt einen COM Port. Da mein Windows 7 keinen COM Port für den USB Anschluß belegt, weiß ich nicht wie ich den ROBOTICS TXT überhaupt ansprechen soll.

Code: Alles auswählen

FtMscLibEx ex = new FtMscLibEx();
ex.ftxOpenComDeviceNr(?was kommt hier rein?, 38400, ref errCode2);
Ich habe ebenfalls versucht alle möglichen COM Ports ausgeben zu lassen mit

Code: Alles auswählen

FtMscLibEx ex = new FtMscLibEx();
for (uint index=0; index < 100; index++)
{
	// boolean value for r
	uint r = ex.ftxIsLibInit();
	Console.WriteLine(r);

	StringBuilder buff= new StringBuilder(100);
	StringBuilder buff2 = new StringBuilder(100);

	r = ex.ftxEnumComPorts(index, buff2, 100);
	if (r < 100)
	{
		Console.WriteLine(" found " + buff2.ToString());
	}
}
Die obige Abfrage liefert mir die COM Ports für die Verbindung via Bluetooth, aber keine USB Ports. Kann man den ROBOTICS TXT überhaupt so programmieren? Wenn ja, wie? Oder verwendet man lieber eine andere Programmiersprache? Vielleicht habt ihr auch andere Tipps oder Ideen?
Zuletzt geändert von bude am 19 Feb 2016, 20:57, insgesamt 1-mal geändert.

bude
Beiträge: 9
Registriert: 18 Feb 2016, 17:23

Re: ROBOTICS TXT Controller programmieren via USB

Beitrag von bude » 18 Feb 2016, 21:57

Ich bin einen Schritt weitergekommen. Das Problem ist unabhängig von der Programmiersprache. Der ROBOTICS TXT wird unter Windows als Netzwerk (via USB) erkannt. Windows erkennt es nicht als COM-Anschluss an. Die textuellen Programmiersprachen für den ROBOTICS basieren aber auf diesen COM-Anschlüssen.

Wie kann man hier weiterverfahren? Kann man Windows 7 'beibringen' einen USB-Anschluss (bzw. das Netzwerk) als COM-Anschluss zu identifizieren?

bude
Beiträge: 9
Registriert: 18 Feb 2016, 17:23

Re: ROBOTICS TXT Controller programmieren via USB

Beitrag von bude » 19 Feb 2016, 07:26

Hallo elektrolutz,

vielen Dank für die Information.

Ich bin gerade etwas verwundert... Lese ich in diversen Nachrichtenportalen, wie http://www.vdi-nachrichten.com/Technik- ... -vertiefen , http://www.maschinenmarkt.vogel.de/mit- ... ndex2.html , http://www.fischer.de/de-DE/Unternehmen ... n-die-Welt von der Programmierung des TXT mit Java, Visual Basic und ähnliche.

Gibt es eine andere Programmiersprache für die Anwendung mit dem TXT? Ich habe auf der fischertechnik-Homepage lediglich etwas für C++ gefunden.

Markus Burkhardt
Beiträge: 171
Registriert: 12 Jan 2016, 09:13

Re: ROBOTICS TXT Controller programmieren via USB

Beitrag von Markus Burkhardt » 19 Feb 2016, 08:51

Hallo bude,

die Programmierung des TXT funktioniert über Sockets. Im C-Programming-Expert-Kit findest du die Struktur, die zum bzw. vom TXT gesendet wird. Wenn du also eine andere Programmiersprache verwenden möchtest, muss diese Struktur nachgebildet werden.

Viele Grüße
Markus

bude
Beiträge: 9
Registriert: 18 Feb 2016, 17:23

Re: ROBOTICS TXT Controller programmieren via USB

Beitrag von bude » 19 Feb 2016, 13:56

Danke für deine Antwort. Gibt es Beispielprogramme für die Steuerung der Motoren mit C++? Im Paket sind zwar welche dabei, diese bewegen die Motoren jedoch nicht...

Markus Burkhardt
Beiträge: 171
Registriert: 12 Jan 2016, 09:13

Re: ROBOTICS TXT Controller programmieren via USB

Beitrag von Markus Burkhardt » 19 Feb 2016, 14:13

Hallo bude,

ich habe das auch schon eine Weile nicht mehr getestet, die sollten aber funktionieren. Bekommst du eine Fehlermeldung oder passiert einfach nichts?

Viele Grüße
Markus

bude
Beiträge: 9
Registriert: 18 Feb 2016, 17:23

Re: ROBOTICS TXT Controller programmieren via USB

Beitrag von bude » 19 Feb 2016, 15:37

Hallo Markus,

folgender Programmcode

Code: Alles auswählen

int main()
{
    // Create transfer area (for maximum number of extensions)
    TransArea = new FISH_X1_TRANSFER[IF08_MAX];
    
    // Create communication handler
    ComHandler = new ftIF2013TransferAreaComHandler( TransArea, IF08_MAX, "192.168.7.2" );

    // Initialize communication handler
    ComHandler->BeginTransfer();

    // Loop for 10 seconds
    int iLoop;
    for( iLoop=0; TransArea[0].IFTimer.Timer10ms<10; iLoop++ )
    {
        // Set output 0 (O1)
        // Note: for setting M1 to reverse direction, O2 (ftX1out.duty[1]) must be set
        // Note: the range of the motor duty cycle values is 0..512
	TransArea[1].ftX1out.duty[0] = 256;
        TransArea[1].ftX1out.duty[1] = 256;

        
        // Do the transfer. The transfer is done at most once every 10ms.
        if( !ComHandler->DoTransferSimple() )
            break;

        // Print I/O values for master and extension, only every 4th IO (console IO is slow)
        if( iLoop%3 == 0 )
        {
            ComHandler->PrintIO( 0 );
            ComHandler->PrintIO( 1 );
        }
    }
	cout << "Version: " << ComHandler->GetVersion() << endl;
    // This should be around 10s/10ms = 1000
    // The PrintIO might slow down things, so for maximum speed, remove the PrintIO
    cout << iLoop << "transfers done" << endl;

    // Clean up communication handler
    ComHandler->EndTransfer();

    // Delete transfer area and communication area
    delete ComHandler;
    delete [] TransArea;

    return 0;
}
bringt folgendes Ergebnis

Code: Alles auswählen

Transfer ID=0 I=0 1 1 0 0 0 0 0 C=4756 0 0 0 O=0-0 0-0 0-0 0-0
Transfer ID=1 I=0 0 0 0 0 0 0 0 C=0 0 0 0 O=256-256 0-0 0-0 0-0
Transfer ID=0 I=0 1 1 0 0 0 0 0 C=4756 0 0 0 O=0-0 0-0 0-0 0-0
Transfer ID=1 I=0 0 0 0 0 0 0 0 C=0 0 0 0 O=256-256 0-0 0-0 0-0
Transfer ID=0 I=0 1 1 0 0 0 0 0 C=4756 0 0 0 O=0-0 0-0 0-0 0-0
Transfer ID=1 I=0 0 0 0 0 0 0 0 C=0 0 0 0 O=256-256 0-0 0-0 0-0
Version: 67240704
9transfers done
SendCommand: Error receiving response
Erklärung zu DoTransferSimple statt DoTransferCompressed. DoTransferCompressed bringt den Fehler CRC Error. Daher habe ich den Code angepasst.

Was passiert am ROBOTICS TXT? Er macht nichts und steht still am Platz... ohne sich zu bewegen.

Viele Grüße
Bugra

bude
Beiträge: 9
Registriert: 18 Feb 2016, 17:23

Re: ROBOTICS TXT Controller programmieren via USB

Beitrag von bude » 19 Feb 2016, 20:57

Hab's gelöst:

Code: Alles auswählen

TransArea[1].ftX1out.duty[0] = 256;
TransArea[1].ftX1out.duty[1] = 256;
muss zu

Code: Alles auswählen

TransArea[1].ftX1out.duty[0] = 256;
TransArea[1].ftX1out.duty[1] = 0;
geändert werden. Dann klappt es. Danke nochmal.

Torsten
Beiträge: 310
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ROBOTICS TXT Controller programmieren via USB

Beitrag von Torsten » 22 Feb 2016, 22:14

Hallo Bugra,
bude hat geschrieben:Gibt es eine andere Programmiersprache für die Anwendung mit dem TXT? Ich habe auf der fischertechnik-Homepage lediglich etwas für C++ gefunden.
es gibt inzwischen auch noch andere alternative Möglichkeiten den TXT zu programmieren, z.B. Python (siehe viewtopic.php?f=8&t=3005 ) oder auch Scratch, bzw. Snap (siehe viewtopic.php?f=8&t=3386). Einer der Vorteile ist, dass man mit Python nicht auf Windows angewiesen ist, sondern den TXT auch bequem z.B. von Linux oder Mac OS aus programmieren kann.

Viele Grüße
Torsten

Markus Burkhardt
Beiträge: 171
Registriert: 12 Jan 2016, 09:13

Re: [GELÖST] ROBOTICS TXT Controller programmieren via USB

Beitrag von Markus Burkhardt » 23 Feb 2016, 09:10

Hallo Bugra,

es freut mich, dass du das Problem gefunden hast! Ein Motorausgang funktioniert ja mit zwei Ausgängen, die zwischen 0 und 512 gesteuert werden können. Und deren Differenz ergibt dann Drehgeschwindigkeit (zumindest besteht da eine Proportionalität) und Drehrichtung. Wenn beide gleich sind, ist die Differenz 0 und der Motor steht.

Viele Grüße
Markus

jomapapa
Beiträge: 9
Registriert: 24 Apr 2016, 22:33

Re: [GELÖST] ROBOTICS TXT Controller programmieren via USB

Beitrag von jomapapa » 07 Apr 2017, 21:39

Hallo!

Die Motoren und Schalter kann ich wie hier beschrieben prima ansteuern.

Was mir aber fehlt, sind die anderen Elemente, konkret das Magnetventil.

In RoboPro gibt es dafür ja einen eigenen Baustein, in dieser API finde ich aber leider nichts.

Wenn ich am RoboPro mit dem Motor-Baustein ein "Rückwärts" mit Tempo 255 setze, kann ich damit auch ein Magnetventil aktivieren.
Die Hoffung währte nur kurz, das das auch mit der API klappt - leider tut sich da einfach gar nichts.

Hat das jemand mal (in genau dieser Sprache) geschafft?

Antworten