ftCommunity | Wiki | RoboPro: Kommunikation via serieller Schnittstelle mit dem PC

Wiki

Thema: RoboPro: Kommunikation via serieller Schnittstelle mit dem PC

Version 5

von: thkais

am: 21.09.2007, 16:57:23 Uhr


Mit der am RoboInterface vorhandenen seriellen Schnittstelle lassen sich während der Laufzeit eines RoboPro-Programmes Daten zu einem PC oder anderen geeigneten Gerät übertragen. Momentan ist es allerdings nicht möglich, beliebige Daten zu verwenden, man muss das von RoboPro vorgegebene 7-Byte-Protokoll verwenden.
Dieses Protokoll setzt sich wie folgt zusammen:

1. Byte.... 0x90 .... Startbyte, muss immer diesen Wert haben
2. Byte.... 0x00 .... Hardware-ID (war bislang immer 0)
3. Byte.... 0x00 .... Sub-ID (In RoboPro die Funkrufnummer bzw. Gruppe)
4. Byte.... ...... .... Befehl Low-Byte
5. Byte.... ...... .... Befehl High-Byte
6. Byte.... ...... .... Daten Low-Byte
7. Byte.... ...... .... Daten High-Byte

Mit eben diesem Protokoll ist es auch möglich, Daten zum RoboInterface zurückzusenden.

Hier nun zwei kleine Beispiele, wie man mit einem PC eine Datenübertragung aufbauen könnte:

Beispiel 1

Senden vom PC zum RoboInterface.
Das PC-Programm ist in C geschrieben und soll nur als Beispiel dienen.


// Beispiel 1: Senden
// Senden vom PC zum RoboInterface
//

#include <stdio.h>
#include <stdlib.h>

#define uchar unsigned char
#define uint unsigned int

#define RoboRight 0xFFFE
#define RoboLeft 0xFFFD
#define RoboStop 0xFFFC
#define RoboOn 0xFFFB
#define RoboOff 0xFFFA
#define RoboEqual 0xFFF9
#define RoboPlus 0xFFF8
#define RoboMinus 0xFFF7
#define RoboAdd 0xFFF6
#define RoboDelete 0x2184 // Nobody knows, why its not 0xFFF5
#define RoboChange 0xFFF4

void fputint (int value, FILE *Handle)
{
fputc(value & 0xFF, Handle);
fputc(value >> 8, Handle);
}

void fputrobopro (uchar HwID, uchar SubID, int command, int value, FILE *Handle)
{
fputc(0x90,Handle); // Startbyte
fputc(HwID,Handle); // Hardware-ID
fputc(SubID,Handle);
fputint(command,Handle);
fputint(value,Handle);
}

int main (void)
{
FILE *StreamHandle;

StreamHandle = fopen("COM5:38400,8,N,1","w"); // Öffnen der seriellen Schnittstelle, muss angepasst werden !
printf("r: %d",StreamHandle);

fputrobopro (0,9,RoboEqual,30,StreamHandle); // sende Befehl "=" und Wert 30 ans RoboInterface
fputrobopro (0,9,RoboEqual,20,StreamHandle); // sende Befehl "=" und Wert 20 ans RoboInterface

fclose(StreamHandle);
}


Und hier das zugehörige RoboPro-Programm (ich habe die Eigenschaften des Empfänger-Bausteins aufgeklappt, damit man die Einstellungen sehen kann)





(Das Thema wird von mir noch ausgearbeitet)


 

Aktuelle Version von thkais am 21.09.2007, 17:11:46 Uhr
Version 6 von thkais am 21.09.2007, 17:05:21 Uhr
Version 5 von thkais am 21.09.2007, 16:57:23 Uhr
Version 4 von thkais am 21.09.2007, 14:45:16 Uhr
Version 3 von thkais am 21.09.2007, 14:44:29 Uhr
Version 2 von thkais am 21.09.2007, 14:43:16 Uhr
Version 1 von thkais am 21.09.2007, 07:36:08 Uhr

 

Wenn sie sich einloggen, können Sie dieses Thema bearbeiten.

 

Zurück zur Übersicht