PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie kann man Linedata Messungen zum PC schicken ?



Querzahl
18.12.2007, 08:38
hallo, mal wieder ne Frage,
ich möchte während der Asuro läuft, die gemessenen Helligkeitswerte
(LineData) , die ja Integer Werte sind, mit "SerWrite" zum PC schicken.
"SerWrite" verlangt aber für den Variablentyp einen CHAR (oder geht auch CHAR [] , also array ?) , wie krieg ich die Umwandlung hin ?
Es müsste doch der Ineger Wert aus LineData in einen String konvertiert werden ?

Ceos
18.12.2007, 08:49
wenn du die asurilib 2.6 oder höher verwendest gibt es dafür ne mthode ansonsten hilft nur manuelle konvertieren, btw. ich hab mir n tool geschrieben was mit ziemlicher zuverlässigkeit alle daten aus dem asuro holt und ausgibt, problem es ist .net und benötigt das passende programm im asuro ... ich kanns dir gern mal hochladen aber erwarte nicht zu viel ich bin noch kaum erfahren mit .net und habs in ner freien stunde zusammgefrickelt

1nDaClu8
18.12.2007, 09:00
Wie Ceos schon geschrieben hat, in der neuen Lib gibt es eine Funktion names PrintInt. Falls du Sie aber noch nicht haben solltest, installiere sie lieber nicht, denn die Installation hat bei mir nicht auf Anhieb geklappt. Ich habe Drei Abende verbracht alles ans laufen zu kriegen O:) . Naja, vielleicht bin ich auch selber Schuld...
Aber ich würde mir die Daten in Variablen speichern und nachdem fahren ausgeben lassen. Nicht das du die ganze Zeit hinter deinem Asuro mit dem Laptop hinter rennst O:)

Gruß,

1nDaClu8

Ceos
18.12.2007, 09:09
ich vermute mal eher er braucht die daten zum "eichen" wa ? (wie schreibt man das eigentlich ? iss das so richtig ?)

Querzahl
18.12.2007, 15:51
genau, ich vermute eine Asymmetrie der Sensoren und wollte deshalb die Differnz ausmessen.

damaltor
18.12.2007, 19:16
Falls du Sie aber noch nicht haben solltest, installiere sie lieber nicht, ...

quatsch. probiere es, und wenn du fragen hast frag einfach mal im forum. es gibt einige sehr gute howtos.

in der neuen lib gibt es die funktion PrintInt(), diese kann direkt integerwerte zum pc senden (als ascii daten).

die funktion SerWrite erwartet keinen char, sondern einen pointer auf einen char (erkennbar an dem *). ein array von chars (char abc[]) ist ebenfalls ein pointer, er kann also so gesendet werden.

es ist nicht nötig, die werte auf dem pc umzuwandeln (man braucht auh kein komplexes programm zu schreiben). das kann auch im prozessor passieren: es gibt eine c-funktion namens itoa(), welche integerwerte in einen ascii-array umwandeln kann - und dieses array kann man dann senden.

Sternthaler
18.12.2007, 22:52
Hallo Querzahl,

und so sieht die Funktion dann aus:

/************************************************** **************************/
/*!
\brief
Ausgabe eines Integer Wertes als String ueber die serielle Schnittstelle.

\param[in]
wert Auszugebender Integer Wert (16Bit)

\author Robotrixer, marvin

\version beta - 31.03.2005 - Robotrixer\n
first implementation
\version 2.60 - 28.09.2005 - m.a.r.v.i.n\n
strlen verwenden, anstelle fester Laenge
\version 2.61 - 20.11.2006 - m.a.r.v.i.n\n
Initialisierung text String kann zu Fehler\n
beim Flashen mit RS232/IR Adapter fuehren\n
(Bug report von francesco)
\version 2.70b- 07.01.2007 - m.a.r.v.i.n\n
SerPrint Funktion anstelle SerWrite verwenden
\version 2.70rc2- 09.02.2007 - m.a.r.v.i.n\n
Text Laenge auf 7 erhoeht, fuer Ausgabe negativer Werte
(Bug Report von HermannSW)

\par Beispiel:
(Nur zur Demonstration der Parameter/Returnwerte)
\code
// Beispiel fuer zeilenweise Ausgabe der Encoder Werte
EncoderInit();
While(1)
{
PrintInt (encoder [0]);
SerPrint (" ");
PrintInt (encoder [1]);
SerPrint ("\n\r");
MSleep (500); //0,5sek. warten
}
\endcode
************************************************** ***************************/
void PrintInt (
int wert)
{
char text [7]; // "-12345"

itoa (wert, text, 10);
SerPrint (text);
}

Dann aber benötigst du noch die Funktion "SerPrint ()", oder du ersetzt diese durch "SerWrite (text, strlen (text));"

Das ist nur für den Fall, dass du die ASURO-Lib tatsächlich nicht installieren möchtest. Aber wie damaltor schon schrieb, sollte es auf alle Fälle einen Versuch wert sein. Die Doku und die Beispiele in der Lib sind auch schon nicht schlecht, und helfen dabei einiges besser zu verstehen.

Hier (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=35663) geht es zur ASURO-Lib.
Hier (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=33149) geht es zu einer weiteren Hilfe/Verständnis zur Lib

Gruß Sternthaler

radbruch
18.12.2007, 23:08
Hallo

Hier hatten wir mal eine Funktion entwickelt die mit der orginalen Library der asuro-CD funktioniert:

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=328202#328202

Gruß

mic