Hallo und guten Abend miteinander, der Verrückte mit der Rennbahn ist wieder da
Ich hoffe Ihr seid alle gesund und munter ins 2024 gerutscht und gut angekommen.
Für meinen Teil ist das ganz gut gelungen...apropo gelungen, der Dunlopturm hat jetzt noch 3 Bildschirme für die Zuschauer in der 1 Etage in Form von 3 Oled's 0,96" bekommen.
Angezeigt werden neben dem alten ZDF Zeichen (War der erste Sender der die Formel 1 übertragen hatte) Werbung, bester Fahrer, Streckentemperatur, Rundenzeiten etc. Wollte nur damit sagen das ich einige Dinge auch allein gelöst bekomme, natürlich mit dem erlernten aus diesem Forum. Danke an dieser Stelle an euch Allen.
So, aber nun zum Thema. Ich habe vor die Renndaten die ich über den CANBUS(MCP2515) empfange über ein Bluetooth Modul(HM10) an ein Handy zu senden. Womit ? Mit der App remotexy. Ich finde diese App gerade als Einsteiger(mit div. Vor-Kenntnissen) als leicht zu verstehen.....
Nun kommt es zu einlese Fehler beim CANBUS sobald ich mich mit dem Handy und dem Bluetooth-Modul verbinde. Im Klartext werden die Fahrernamen willkürlich abgeschnitten, somit wird aus Jan Dürhold z.B. nur "Jan D" oder aus Werner Bolz nur "Werne" trenne ich die Verbindung zum Handy erholt sich der Empfang nach kurzer Zeit wieder und im SM sind wieder die richtigen bzw. die vollständigen Namen zu lesen. Hab auch schon mit den Geschwindigkeiten gespielt CANBUS von 50 bis 125Kbps und Bluetooth mit 9600 / 19200 mehr wollte es nicht.(Bei mehr hat sich Handy nicht mehr mit dem Modul verbunden)
Nun habe ich irgendwo im Net gelesen das memcpy schon mal ärger bereiten kann, da die Einleseroutine vom CANBUS memcpy verwendet nun die Frage, kann das sein? oder könnte ich den CANBUS auch anders einlesen?
Würde mich freuen wenn ich wieder mal Hilfe von Euch bekommen würde.
[code]
-- Bluetooth für Race Control-II --
Hardware:
Mega Pro
https://www.amazon.de/DollaTek-ATmega2560-16AU-Intelligente-elektronische-Entwicklungsboard/dp/B07HBTSLCF/ref=sr_1_2?qid=1705339272
Hailege 2pcs MCP2515 CAN Bus Module TJA1050 Receiver SPI Module AVR
https://www.amazon.de/MCP2515-CAN-Bus-Modul-TJA1050-Empf%C3%A4nger-Arduino/dp/B07Z1V2RTM/ref=sr_1_3?crid=12N3543T0WHZD&qid=1705339212&sprefix=mcp%202515,aps,85
DSD TECH HM-10 Bluetooth 4.0 BLE iBeacon UART Modul mit 4 PIN Base Board
https://www.amazon.de/dp/B06WGZB2N4?psc=1&ref=ppx_yo2ov_dt_b_product_details
This source code of graphical user interface
has been generated automatically by RemoteXY editor.
To compile this code using RemoteXY library 3.1.11 or later version
download by link http://remotexy.com/en/library/
To connect using RemoteXY mobile app by link http://remotexy.com/en/download/
- for ANDROID 4.11.4 or later version;
- for iOS 1.9.1 or later version;
This source code is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
*/
//////////////////////////////////////////////
// RemoteXY include library //
//////////////////////////////////////////////
// RemoteXY select connection mode and include library
#define REMOTEXY_MODE__HARDSERIAL
#include <RemoteXY.h>
// RemoteXY connection settings
#define REMOTEXY_SERIAL Serial1
#define REMOTEXY_SERIAL_SPEED 9600
// RemoteXY configurate
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] = // 1488 bytes
{ 255,20,0,111,1,201,5,16,30,5,130,3,2,33,59,6,1,1,130,3,
3,34,57,4,1,30,130,1,0,95,67,9,0,28,131,4,33,90,27,4,
4,13,24,87,69,82,66,69,65,78,90,69,73,71,69,0,131,4,3,90,
23,4,3,13,24,68,85,78,76,79,80,84,85,82,77,0,131,4,33,83,
27,4,2,13,24,77,65,84,82,73,88,65,78,90,69,73,71,69,78,0,
69,1,26,91,10,10,0,129,0,6,2,52,6,0,24,82,97,99,101,45,
67,111,110,116,114,111,108,32,86,32,50,46,48,0,131,5,3,83,23,4,
1,13,24,72,65,85,80,84,77,69,78,195,156,0,129,0,16,27,30,5,
1,24,83,116,114,101,99,107,101,110,45,73,110,102,111,0,10,49,25,71,
14,6,3,12,1,31,76,105,99,104,116,32,49,32,79,71,0,31,76,105,
99,104,116,32,49,45,69,116,97,103,101,0,10,49,46,71,14,6,3,12,
1,31,76,105,99,104,116,32,50,32,79,71,0,31,76,105,99,104,116,32,
50,45,69,116,97,103,101,0,129,0,16,28,32,5,4,24,87,101,114,98,
101,97,110,122,101,105,103,101,0,130,3,0,14,4,3,0,24,130,3,4,
17,4,3,0,24,130,3,8,14,4,3,0,24,130,3,12,17,4,3,0,
24,130,3,16,14,4,3,0,24,130,3,20,17,4,3,0,24,130,3,24,
14,4,3,0,24,130,3,28,17,4,3,0,24,130,3,32,14,4,3,0,
24,130,3,36,17,4,3,0,24,130,3,40,14,4,3,0,24,130,3,44,
17,4,3,0,24,130,3,48,14,4,3,0,24,130,3,52,17,4,3,0,
24,130,3,56,14,4,3,0,24,130,3,60,17,4,3,0,24,130,3,0,
20,4,3,0,24,130,3,8,20,4,3,0,24,130,3,16,20,4,3,0,
24,130,3,24,20,4,3,0,24,130,3,32,20,4,3,0,24,130,3,40,
20,4,3,0,24,130,3,48,20,4,3,0,24,130,3,56,20,4,3,0,
24,130,3,0,13,63,1,0,24,130,3,0,23,63,1,0,24,129,0,18,
27,26,5,3,24,68,117,110,108,111,112,116,117,114,109,0,67,5,0,34,
63,7,2,1,30,31,129,0,15,27,33,5,2,24,77,97,116,114,105,120,
97,110,122,101,105,103,101,110,0,1,1,3,45,14,5,2,0,1,70,97,
104,114,101,114,115,112,117,114,0,1,1,3,53,14,5,2,0,1,84,97,
103,101,115,114,117,110,100,101,110,0,1,1,3,53,14,5,4,0,1,80,
85,83,72,32,84,79,0,129,0,5,60,10,2,4,24,82,195,188,99,107,
119,195,164,114,116,115,0,1,1,45,53,14,5,4,0,1,80,85,83,72,
32,84,79,0,129,0,48,60,8,2,4,24,86,111,114,119,195,164,114,116,
115,0,129,0,7,9,26,2,0,24,70,195,188,114,32,109,101,104,114,32,
83,112,97,195,159,32,105,109,32,83,99,104,108,105,116,122,46,46,46,0,
1,1,3,61,14,5,2,0,1,76,117,102,116,102,101,117,99,104,116,105,
103,107,101,105,116,0,1,1,24,53,14,5,2,0,1,84,101,109,112,101,
114,97,116,117,114,0,1,1,24,45,14,5,2,0,1,66,97,104,110,115,
116,114,111,109,0,1,1,24,61,14,5,2,0,1,82,117,110,100,101,110,
122,101,105,116,101,110,0,1,1,45,45,14,5,2,0,1,70,97,104,114,
101,114,110,97,109,101,0,1,1,45,53,14,5,2,0,1,82,117,110,100,
101,110,122,195,164,104,108,101,114,0,1,1,45,61,14,5,2,0,1,68,
97,116,117,109,32,47,32,85,104,114,122,101,105,116,0,1,1,43,46,14,
5,3,0,1,84,97,103,101,115,114,117,110,100,101,110,0,1,1,14,55,
14,5,3,0,1,66,97,104,110,115,116,114,111,109,0,1,1,24,46,14,
5,3,0,1,82,117,110,100,101,110,122,101,105,116,101,110,0,1,1,4,
46,14,5,3,0,1,82,117,110,100,101,110,122,195,164,104,108,101,114,0,
1,1,34,55,14,5,3,0,1,68,97,116,117,109,32,47,32,85,104,114,
122,101,105,116,0,67,5,0,34,63,7,3,1,30,31,67,5,0,35,63,
7,4,1,30,31,10,113,6,71,14,6,3,12,1,31,76,105,99,104,116,
32,84,114,101,112,112,101,0,31,67,6,27,67,12,3,1,24,30,11,67,
6,29,71,10,3,1,24,30,11,129,0,3,67,28,3,1,24,83,116,114,
101,99,107,101,110,116,101,109,112,101,114,97,116,117,114,58,0,129,0,3,
71,23,3,1,24,76,117,102,116,102,101,117,99,104,116,105,103,107,101,105,
116,58,0,129,0,40,71,2,3,1,24,37,0,129,0,39,67,3,3,1,
24,194,176,67,0,2,1,8,63,10,5,3,0,26,12,1,79,78,0,79,
70,70,0,129,0,4,35,6,2,1,24,83,112,117,114,45,49,0,67,4,
30,35,10,2,1,24,30,5,67,4,43,35,15,2,1,24,30,11,130,3,
11,33,1,5,1,1,130,3,42,34,1,5,1,1,129,0,3,75,23,3,
1,24,66,101,115,116,122,101,105,116,58,0,67,4,34,75,36,3,1,24,
30,31,67,4,13,35,14,2,1,24,30,31,130,3,29,33,1,5,1,1,
130,3,2,41,59,6,1,31,130,3,3,42,57,4,1,30,129,0,4,43,
6,2,1,24,83,112,117,114,45,50,0,67,4,30,43,10,2,1,24,30,
5,67,4,43,43,15,2,1,24,30,11,130,3,11,41,1,5,1,31,130,
3,42,42,1,5,1,31,67,4,13,43,14,2,1,24,30,31,130,3,29,
41,1,5,1,31,130,3,2,49,59,6,1,12,130,3,3,50,57,4,1,
30,129,0,4,51,6,2,1,24,83,112,117,114,45,51,0,67,4,30,51,
10,2,1,24,30,5,67,4,43,51,15,2,1,24,30,11,130,3,11,49,
1,5,1,12,130,3,42,50,1,5,1,12,67,4,13,51,14,2,1,24,
30,31,130,3,29,49,1,5,1,12,130,3,2,57,59,6,1,2,130,3,
3,58,57,4,1,30,129,0,4,59,6,2,1,24,83,112,117,114,45,52,
0,67,4,30,59,10,2,1,24,30,5,67,4,43,59,15,2,1,24,30,
11,130,3,11,57,1,5,1,2,130,3,42,58,1,5,1,2,67,4,13,
59,14,2,1,24,30,31,130,3,29,57,1,5,1,2,129,0,3,79,23,
3,1,24,66,101,115,116,101,114,32,70,97,104,114,101,114,58,0,67,4,
34,79,36,3,1,24,30,31 };
// this structure defines all the variables and events of your control interface
struct {
// input variables
uint8_t D_7; // =1 if state is ON, else =0
uint8_t D_8; // =1 if state is ON, else =0
uint8_t M_1; // =1 if button pressed, else =0
uint8_t M_4; // =1 if button pressed, else =0
uint8_t W_1; // =1 if button pressed, else =0
uint8_t W_2; // =1 if button pressed, else =0
uint8_t M_7; // =1 if button pressed, else =0
uint8_t M_5; // =1 if button pressed, else =0
uint8_t M_2; // =1 if button pressed, else =0
uint8_t M_8; // =1 if button pressed, else =0
uint8_t M_3; // =1 if button pressed, else =0
uint8_t M_6; // =1 if button pressed, else =0
uint8_t M_9; // =1 if button pressed, else =0
uint8_t D_3; // =1 if button pressed, else =0
uint8_t D_4; // =1 if button pressed, else =0
uint8_t D_2; // =1 if button pressed, else =0
uint8_t D_1; // =1 if button pressed, else =0
uint8_t D_5; // =1 if button pressed, else =0
uint8_t D_6; // =1 if state is ON, else =0
uint8_t switch_1; // =1 if switch ON and =0 if OFF
// output variables
int16_t sound_1; // =0 no sound, else ID of sound, =1001 for example, look sound list in app
char MINFO[31]; // string UTF8 end zero
char DINFO[31]; // string UTF8 end zero
char WINFO[31]; // string UTF8 end zero
char Temp_1[11]; // string UTF8 end zero
char Luft_1[11]; // string UTF8 end zero
char Runden_1[5]; // string UTF8 end zero
char Time_1[11]; // string UTF8 end zero
char Time_0[31]; // string UTF8 end zero
char Fahrer_1[31]; // string UTF8 end zero
char Runden_2[5]; // string UTF8 end zero
char Time_2[11]; // string UTF8 end zero
char Fahrer_2[31]; // string UTF8 end zero
char Runden_3[5]; // string UTF8 end zero
char Time_3[11]; // string UTF8 end zero
char Fahrer_3[31]; // string UTF8 end zero
char Runden_4[5]; // string UTF8 end zero
char Time_4[11]; // string UTF8 end zero
char Fahrer_4[31]; // string UTF8 end zero
char Fahrer_0[31]; // string UTF8 end zero
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#include <mcp_can.h> // https://github.com/coryjfowler/MCP_CAN_lib CAN BUS
// SCK - 52
// SI - 51
// SO - 50
// CS - 53
// INT - 2
MCP_CAN CAN0(53); // Set CS to pin 53
uint32_t id = 0x12000000 + (16 * 1);
char msg[5][30];
// Renndaten
const uint8_t charNum = 30; // Anzahl Buchstaben -1 für Fahrernamen
const uint8_t maxSpuren = 8; // Über CAN BUS eingelesen,mögliche Anzahl der Spuren
char Fahrer[maxSpuren + 1][charNum] = {0}; // Über CAN BUS eingelesen
char Fahrer_Aktuell[maxSpuren + 1][charNum] = {0}; // Vergleicher
uint16_t AR[maxSpuren + 1] = {0}; // Über CAN BUS eingelesen,Runden je Spur
uint16_t RZvk[maxSpuren + 1] = {0}; // Über CAN BUS eingelesen,Rundenzeit Vorkomma je Spur
uint16_t RZnk[maxSpuren + 1] = {0}; // Über CAN BUS eingelesen,Rundenzeit Nachkomma je Spur
uint8_t TempVK = 0; // Über CAN BUS eingelesen,Temperatur Vorkomma
uint8_t TempNK = 0; // Über CAN BUS eingelesen,Temperatur Nachkomma
uint8_t LuftVK = 0; // Über CAN BUS eingelesen,Luftfeuchtigkeit Vorkomma
uint8_t LuftNK = 0; // Über CAN BUS eingelesen,Luftfeuchtigkeit Nachkomma
float TempFloat = 0; // ...erstelle Temperatur aus Vorkomma und Nachkomma als Floatzahl für remoteXY
float LuftFloat = 0; // ...erstelle Luftfeuchtigkeit aus Vorkomma und Nachkomma als Floatzahl für remoteXY
float Time0 = 0.000; // ...erstelle Rundenzeit Spur 0(Bestzeit)aus Vorkomma und Nachkomma als Floatzahl für remoteXY
float Time0_Old = 0.000; // ...Vergleicher ob neue Bestzeit
float Time1 = 0.000; // ...erstelle Rundenzeit Spur 1(Fahrer-1)aus Vorkomma und Nachkomma als Floatzahl für remoteXY
float Time1_Old = 0.000; // ...Vergleicher ob neue Rundenzeit Spur 1
float Time2 = 0.000; // ...erstelle Rundenzeit Spur 2(Fahrer-2)aus Vorkomma und Nachkomma als Floatzahl für remoteXY
float Time2_Old = 0.000; // ...Vergleicher ob neue Rundenzeit Spur 2
float Time3 = 0.000; // ...erstelle Rundenzeit Spur 3(Fahrer-3)aus Vorkomma und Nachkomma als Floatzahl für remoteXY
float Time3_Old = 0.000; // ...Vergleicher ob neue Rundenzeit Spur 3
float Time4 = 0.000; // ...erstelle Rundenzeit Spur 4(Fahrer-4)aus Vorkomma und Nachkomma als Floatzahl für remoteXY
float Time4_Old = 0.000; // ...Vergleicher ob neue Rundenzeit Spur 4
uint16_t ZaehlerF=0;
uint16_t ZaehlerR=0;
void setup()
{
RemoteXY_Init ();
Serial.begin(115200);
// CAN BUS
while (CAN_OK != CAN0.begin(MCP_STDEXT, CAN_50KBPS, MCP_8MHZ)) // init can bus : masks and filters disabled, baudrate, Quarz vom MCP2551
{
Serial.println("CAN BUS Shield init fail"); // CAN BUS Shield init fail
}
Serial.println("CAN BUS Shield init ok!"); // CAN BUS Shield init ok!
CAN0.setMode(MCP_NORMAL); // Change to normal mode to allow messages to be transmitted
Serial.println("Starte.... ");
Serial.println(" ");
}
void loop()
{
RemoteXY_Handler ();
leseCanBus();
}
// Funktion für Dunlopturm Displaywechsel...Auswahl wird dann über CAN Bus an den Teilnehmer gesendet
void Fernbedienung(uint8_t Auswahl , uint8_t Index)
{
char Befehl[] = {0};
switch (Auswahl)
{
case 1: sprintf(Befehl, "u %u ", Index); break; // Zeige Uhrzeit an
case 2: sprintf(Befehl, "l %u ", Index); break; // Zeige Runden an
case 3: sprintf(Befehl, "r %u ", Index); break; // Zeige Rundenzeiten an
case 4: sprintf(Befehl, "s %u ", Index); break; // Zeige Spannung an
case 5: sprintf(Befehl, "g %u ", Index); break; // Zeige Tagesrunden an
case 6: sprintf(Befehl, "f %u ", Index); break; // Zeige Fahrernamen an
case 7: sprintf(Befehl, "t %u ", Index); break; // Zeige Temperatur an
case 8: sprintf(Befehl, "h %u ", Index); break; // Zeige Luftfeuchtigkeit an
case 9: sprintf(Befehl, "x %u ", Index); break; // Zeige Spur an
case 12: sprintf(Befehl, "y %u ", Index); break; // Licht an
case 13: sprintf(Befehl, "z %u ", Index); break; // Licht aus
}
sendData(Befehl);
}
void sendData(char *sendbuffer) // send data: ID = 0x100, Standard CAN Frame, Data length = 8 bytes, 'data' = array of data bytes to send
{
Serial.println(sendbuffer);
const byte len = 8;
byte data[len] = {0, 0, 0, 0, 0, 0, 0, 0};
memcpy(data, sendbuffer, len);
CAN0.sendMsgBuf(id, 1, len, data); // send data: id, extended frame, data len = 8, data buf
memcpy(data, sendbuffer + len, len);
CAN0.sendMsgBuf(id + 1, 1, len, data);
memcpy(data, sendbuffer + 2 * len, len);
CAN0.sendMsgBuf(id + 2, 1, len, data);
}
// ********** ab hier Renndaten-Verarbeitung *********
void leseCanBus()
{
unsigned long rxId = 0;
byte len = 0;
byte rxBuf[8];
char text[30] = {0};
if (CAN_MSGAVAIL == CAN0.checkReceive()) // check if data coming
{
char msg[2][30];
CAN0.readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s)
byte teil = rxId & 0xF; // Datensatz besteht aus 3 Teilen...0,1,2
byte num = (rxId & 0xF0) / 16; //
memcpy(msg[num] + teil * len, rxBuf, len);
if (teil == 2) {
snprintf(text, sizeof(text), msg[num]);
//strcpy (text, msg[num]);
// Serial.print("Habe fogendes empfangen: ");
// for(int i = 0; i < 30; i++) Serial.print(text[i]);
// Serial.println(" ");
AuswertungEmpfang(text); // Werte Datensatz aus
}
}
}
void AuswertungEmpfang(char* text)
{
char *c; // Teilstring
c = strtok(text, " "); // Lese bis erstes Leerzeichen
if (isDigit(c[0]))
{
uint8_t spur = (c[0] - '0');
switch (c[1])
{
case 'R': // Runde für die Spur
AR[spur] = atoi(strtok(NULL, " "));
break;
case 'Z': // Zeit für die Spur
RZvk[spur] = atoi(strtok(NULL, " "));
RZnk[spur] = atoi(strtok(NULL, " "));
Time0 = RZvk[0] + (RZnk[0] / 1000.0); // ...erstelle BESTZEIT Floatzahl für remoteXY
Time1 = RZvk[1] + (RZnk[1] / 1000.0); // ...erstelle FAHRER-1 Floatzahl für remoteXY
Time2 = RZvk[2] + (RZnk[2] / 1000.0); // ...erstelle FAHRER-2 Floatzahl für remoteXY
Time3 = RZvk[3] + (RZnk[3] / 1000.0); // ...erstelle FAHRER-3 Floatzahl für remoteXY
Time4 = RZvk[4] + (RZnk[4] / 1000.0); // ...erstelle FAHRER-4 Floatzahl für remoteXY
if( Time0 != Time0_Old || Time1 != Time1_Old || Time2 != Time2_Old || Time3 != Time3_Old || Time4 != Time4_Old)
{
Time0_Old=Time0;Time1_Old=Time1;Time2_Old=Time2;Time3_Old=Time3;Time4_Old=Time4;
// Serial.print("Neue Zeit auf Spur :");
// Serial.println(spur);
ZaehlerR ++;
Serial.print("Zähler neue Rundenzeit= ");
Serial.println(ZaehlerR);
Send_Rundenzeit(spur); // ...sende Daten an RemoteXY
}
break;
case 'F': // Fahrername für die Spur
strcpy(Fahrer[spur], strtok(NULL, " "));
strcat(Fahrer[spur], " ");
strcat(Fahrer[spur], strtok(NULL, " "));
if (memcmp(Fahrer_Aktuell[spur], Fahrer[spur], sizeof(Fahrer_Aktuell[spur])) != 0) // vergleiche ob gelesener Wert sich zu vorher geändert hat
{
for (int i = 0; i < 30; i++) Fahrer_Aktuell[spur][i] = Fahrer[spur][i]; // ...wenn verändert, dann aufnehmen
// Serial.print("Neuer Fahrer auf Spur : ");
// Serial.println(spur);
ZaehlerF ++;
Serial.print("Zähler neuer Fahrer= ");
Serial.println(ZaehlerF);
Send_Fahrer_Namen(spur); // ...sende Daten an RemoteXY
}
break;
}
}
else // Ab hier nur zeigen Fernkonfiguration
{
switch (c[0])
{
case 'C': // C übernimmt die Temperatur
TempVK = atol(strtok(NULL, " ")); // übernimmt die Temperatur Vorkomma
TempNK = atol(strtok(NULL, " ")); // übernimmt die Temperatur Nachkomma
TempFloat = TempVK + (TempNK / 10.00); // Erstelle eine Floatzahl für remoteXY
break;
case 'H': // H übernimmt die Luftfeuchtigkeit in %
LuftVK = atoi(strtok(NULL, " ")); // übernimmt die Luftfeuchtigkeit Vorkomma
LuftNK = atoi(strtok(NULL, " ")); // übernimmt die Luftfeuchtigkeit Nachkomma
LuftFloat = LuftVK + (LuftNK / 10.00); // Erstelle eine Floatzahl für remoteXY
break;
}
}
}
void Send_Fahrer_Namen(uint8_t Spur)
{
switch (Spur)
{
case 0: strcpy (RemoteXY.Fahrer_0, Fahrer_Aktuell[Spur]);break;// Serial.print("Bester Fahrer Spur "); Serial.print(Spur); Serial.println(Fahrer_Aktuell[Spur]); break;
case 1: strcpy (RemoteXY.Fahrer_1, Fahrer_Aktuell[Spur]);break; //Serial.print("Neuster Fahrer Spur "); Serial.print(Spur); Serial.println(Fahrer_Aktuell[Spur]); break;
case 2: strcpy (RemoteXY.Fahrer_2, Fahrer_Aktuell[Spur]);break; //Serial.print("Neuster Fahrer Spur "); Serial.print(Spur); Serial.println(Fahrer_Aktuell[Spur]); break;
case 3: strcpy (RemoteXY.Fahrer_3, Fahrer_Aktuell[Spur]);break; //Serial.print("Neuster Fahrer Spur "); Serial.print(Spur); Serial.println(Fahrer_Aktuell[Spur]); break;
case 4: strcpy (RemoteXY.Fahrer_4, Fahrer_Aktuell[Spur]);break; //Serial.print("Neuster Fahrer Spur "); Serial.print(Spur); Serial.println(Fahrer_Aktuell[Spur]); break;
}
}
void Send_Rundenzeit(uint8_t Spur)
{
switch (Spur)
{
case 0: dtostrf(Time0, 0, 3, RemoteXY.Time_0);break;// Serial.print("Beste Rundenzeit Spur: "); Serial.print(Spur);Serial.print(" ");Serial.println(Time0,3); break;
case 1: dtostrf(Time1, 0, 3, RemoteXY.Time_1);break;// Serial.print("Beste Rundenzeit Spur: "); Serial.print(Spur);Serial.print(" ");Serial.println(Time1,3); break;
case 2: dtostrf(Time2, 0, 3, RemoteXY.Time_2);break; //Serial.print("Beste Rundenzeit Spur: "); Serial.print(Spur);Serial.print(" ");Serial.println(Time2,3); break;
case 3: dtostrf(Time3, 0, 3, RemoteXY.Time_3);break;// Serial.print("Beste Rundenzeit Spur: "); Serial.print(Spur);Serial.print(" ");Serial.println(Time3,3); break;
case 4: dtostrf(Time4, 0, 3, RemoteXY.Time_4);break; //Serial.print("Beste Rundenzeit Spur: "); Serial.print(Spur);Serial.print(" ");Serial.println(Time4,3); break;
}
}
[/code]