Der eigentliche Thread beginnt in "Jobs/Hilfen/Stellen - Gesuche und Angebote » Wer kann Zeitmessstrecke für mich basteln?"
hier mal der Code für meine Send Routine
Code:
void sendTime(unsigned char id, unsigned long mslong)
{
unsigned int n,m;
PTT=1;
for (n=0;n<60000;n++)
for (m=0;m<10;m++);
printf("VVV%c%010ldEE\n", id, mslong);
for (n=0;n<60000;n++);
PTT=0;
}
Ich glaube das sagt mehr als umständliche Umschreibungen.
Die IDs sind immer geradzahlig also 2, 4, 6, 8.
In der main() ist dann folgender Code z.B. in Slave2, welcher auf Slave 8 wartet.
Code:
...
if((c=nb_getkey())=='V') // Dreck rausfiltern
{
while((c=_getkey())=='V'); // Synchronisation
switch(c)
{
case '1':
case '2': //timeslave#2
break;
case '3':
case '4': //timeslave#4
break;
case '5':
case '6': //timeslave#6
break;
case '7':
case '8': //timeslave#8
mslong = readTime();
for (n=0;n<60000;n++);
for (m=0;m<10;m++);
if(is_released)sendTime('1', mslong);
else sendTime('2', mslong);
is_released = 0;
neustart=NEWLOAD;
break;
default:
break;
}
}
...
is_released ist das Flag, welches anzeigt ob ein Lichtschrankeninterrupt ausgelöst wurde. Die Abfrage läuft über einen Timer.
Als Funkgeräte verwende ich PMR Fun 446MHz 500mW von Conrad. Die Module sind 1200 Baud Module und setzen lediglich die RS232 auf Funk um bzw zurück. Wenn ich mich recht erinnere machen die 1 oder 2kHz aus den Einsen und Nullen.
Ich habe aber noch nie probiert, ob ich wirklich 1km weit komme mit der Messstrecke. Entscheidend ist ja, dass der Master egal wo er steht immer alle empfängt und nach meinem Ringprinzip die 2 auch immer die 8 empfangen muss.
sast
Lesezeichen