-
Danke für die Hilfe ... hier mein Testprogramm für ein Navilock Modul mit TTL 3,3 Volt Schnittstelle an dem Arduino DUE mit eins oder Null in der if Abfrage kann man umschalten zwischen alle NEMA Messages über USB zum PC leiten oder nur die VTG Msg und davon nur die Geschwindigkeit in Km/h. Wenn man alle NEMA Msg weiterleitet kann man auch die Ublox Software unter Windows benutzen.
Die splitString Funktion steht unter der GPL die habe ich aus einem OpenSource Projekt kopiert. Der Rest ist ja sonst nicht wirklich was besonderes.
Code:
#include <string>
#include <vector>
void setup()
{
Serial.begin (115200);
Serial1.begin (115200);
}
std::vector<std::string> splitString (const std::string& strString, char cTrenner = ',')
{
std::vector<std::string> vecValues;
unsigned int iAnf = 0;
for (;;)
{
unsigned int iPos = strString.find (cTrenner, iAnf);
if (iPos != std::string::npos)
{
vecValues.push_back (std::move (strString.substr (iAnf, iPos - iAnf)));
iAnf = iPos + 1;
}
else
{
if (iAnf < strString.size ())
vecValues.push_back (std::move (strString.substr (iAnf, iPos - iAnf)));
else
vecValues.push_back (std::string (""));
break;
}
}
return vecValues;
}
void loop()
{
if (1)
{
// Lese die Msg vom Navimodul
std::string strMsg = "";
for (;;)
{
if (Serial1.available () > 0)
{
int iZeichen = Serial1.read ();
if ((iZeichen != '\n') && (iZeichen != '\r'))
strMsg.append (1, iZeichen);
else
break;
}
}
// Msg zerlegen
std::vector<std::string> vecMsg = splitString (strMsg);
// NEMA Msg nach Wunsch verarbeiten.
if (vecMsg[0] == "$GNVTG")
{
// Zum testen die ganze Msg augeben.
// for (auto&& strWert : vecMsg)
// {
// Serial.write (strWert.c_str ());
// Serial.write (" ");
// }
// Geschwindigkeit über Grund in Km/h.
Serial.write ("Km/h: ");
Serial.write (vecMsg[7].c_str ());
Serial.write ('\n');
Serial.write ('\r');
}
}
else
{
// Daten unverändert weiterleiten
if (Serial1.available () > 0)
{
Serial.write ((char) Serial1.read ());
}
}
// Schreibe die Daten zum Navimodul
if (Serial.available () > 0)
{
Serial1.write ((char) Serial.read ());
}
}
-
hallo,
funktioniert der Due jetzt mit Linux und Python?
-
Phyton weiss ich nicht ... meine Frage war nach C++.