PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Infrarotsensor C++



R3ð_BuLL©
04.10.2006, 12:59
Guten tag @ all,

habe mal ne frage!!! Kann mir einer was kommentieren??

MFG Red_Bull


void SerWrite(unsigned char *data,unsigned char length)
{
unsigned char i = 0;
UCSRB = 0x08; // enable transmitter
while (length > 0) {
if (UCSRA & 0x20) { // wait for empty transmit buffer
UDR = data[i++];
length --;
}
}
while (!(UCSRA & 0x40));
for (i = 0; i < 0xFE; i++)
for(length = 0; length < 0xFE; length++);
}

void SerRead(unsigned char *data, unsigned char length,unsigned int timeout)
{
unsigned char i = 0;
unsigned int time = 0;
UCSRB = 0x10; // enable receiver
/* non blocking */
if (timeout != 0) {
while (i < length && time++ < timeout) {
if (UCSRA & 0x80) {
data[i++] = UDR;
time = 0;
}
}
if (time > timeout) data[0] = 'T';
}
/* blocking */
else {
while (i < length) {
if (UCSRA & 0x80)
data[i++] = UDR;
}
}
}

linux_80
04.10.2006, 19:12
Kommentar:
Was will er wissen !

coCo
04.10.2006, 19:15
Hmm ich weiß ja net, aber das is eher C als Basic...

MfG

izaseba
04.10.2006, 19:25
Kommentar:
Was will er wissen !

Du sollst hinter jede Zeile ein Kommentar schreiben!
etwa so :


{ <--- Klammer auf
} <--- Klammer zu


:wink: Gruß Sebastian :wink:

R3ð_BuLL©
05.10.2006, 12:43
Naja ich möchte übersetz haben was da so steht, weil wir den abschnitt erklären müssen. Haben aus der Asuro.h nen teilabschnittbekommen den wir halt erklären können, also die funktionen.

MFG RedBull

UlrichC
05.10.2006, 13:46
Naja ich möchte übersetz haben was da so steht, weil wir den abschnitt erklären müssen. Haben aus der Asuro.h nen teilabschnittbekommen den wir halt erklären können, also die funktionen.

MFG RedBull
Soweit ich das begutachten kann, hat das ganze nix mit einem Infrarot"Sensor" zu tun.
Ich schätze das der ASURO mit diesen beiden Funktionen (übrigens C und nicht C++) mittels Infrarot Daten sendet und empfängt.

CU

EDIT:
SerWrite = Senden
SerRead = Empfangen

R3ð_BuLL©
05.10.2006, 16:44
ja genau, mit den beiden funktionen kann man sachen empfangen und lesen. Aber ich wollte die zeilen erklärt haben, was er in welcher zeile m8.

mfg R3Ð_BuLL™

UlrichC
05.10.2006, 18:25
ja genau, mit den beiden funktionen kann man sachen empfangen und lesen. Aber ich wollte die zeilen erklärt haben, was er in welcher zeile m8.

mfg R3Ð_BuLL™
Achso na dann ist ja alles klar ... nur warum heist das Thema "Infrarotsensor C++"?
Wäre "Pimp up my Code" nicht besser gewesen?

Nur so viel:
Bei write werden daten (unsigned char *data) mit der Länge (unsigned char length) Zeichenweise in den Infrarot geschoben. Hierbei wird ein Zwischenspeicher (Buffer) verwendet der nur beschrieben wird wenn er frei ist.
Beim senden ist das genau umgekehrt... nur das zudem ein Timer beobachtet wird (ich nene das immer Snikersstyle).

Vorschlag:
Du Kommentierst und andere schauen obs richtig ist.
Hat zwei Vorteile ... spart Zeit... und du lernst was dabei.

CU

R3ð_BuLL©
11.10.2006, 12:15
habe noch ne frage, was m8 dieser abschnitt :
unsigned char i = 0;

UlrichC
11.10.2006, 13:13
habe noch ne frage, was m8 dieser abschnitt :
unsigned char i = 0;
Erstellt eine Variable mit dem Namen "i" vom Typ "unsigned char" und initialisiert diese mit "0".

Das steht in jedem Grundlagen C Buch drin.
Zudem ist diese Zeile, Grundlage der Programmiertechnik und wird in anderen Programmiersprache ähnlich gehandhabt.

Beispielsweise Basic:
Dim i as Integer
i = 0

Beispielsweise JavaSkript:
var i = 0;

u.s.w.

Ich hoffe das hat dir etwas geholfen ... ich denke nämlich nicht :-(

CU

R3ð_BuLL©
11.10.2006, 14:41
thx, hat geholfen. Ich muss nämlich über die Serwrite und Serread funktion mit nem Kumpel (R0µ30™) nen vortrag darüber halten.

THX

R3ð_BuLL©
13.10.2006, 10:11
Ich habe nochmel ne frage ob mir einer was kommentieren kann:

UCSRB = 0x08; // enable transmitter
while (length > 0) {
if (UCSRA & 0x20) { // wait for empty transmit buffer
UDR = data[i++];
length --;

wäre ganz cool wenn, weil ich und R0µ30 darüber heute was halten müssen