RS232 Daten verarbeiten.

Gast #515889
Lesenswert?

Hi,

ich habe jetzt viele 1000 Versuche gemacht, die Daten, die ich 
Zeichenweise per Interrupt in einem array speicher, zu verarbeiten.

Mein Ziel ist es Per RS232 (zum Test über Hyperterminal und dann über 
ein VB-Programm) meine 3 Schrittmotoren anzusteuren.

Prinzip:
[Nr. des Motors]
ENTER
[Anz. der Stepps.]
ENTER
[Richtung]
ENTER
[Halb-, Vollschritt]

Beispiel:
1        // Motor 1
ENTER
400      // 400 Stepps = 1 Umdrehung
ENTER
1        // Linslauf
ENTER
0        // Vollschritt
ENTER

In der Praxis schaffe ich es, dass der Motor, den ich wie oben genannt 
auswähle 0-9 Schritte macht, da ich einfach nicht weiß wie ich einen 
ganzen Arry übergebe, also nur die erste Ziffer (array[0])

Hoffe einer weiß was ich meine und weiß auch die Lösung...

Jetzt die Codes:
Funktion der Stepper (Funktioniert daher nur die "Definition"):
stepper(int drive, int steps, int dir, int mode)
{...}

Interrupt bei RS232-Empfang (klappt bis auf das genannte Problem):
SIGNAL(SIG_UART_RECV)
{
 ...
  con_str[1]=temp_str - (48*NextStr);
// -48, damit ich den ASCII-Wert  in den "richtigen" Wert bekomme...
Bsp.: ASCII:050 enspricht der 2 <-> 050-48 = 2
NextStr ist dabei die Anzahl an empfangnen Zeichen....
Wer eine Funtion dafür kennt, kann sie mir gerne mitteilen^^

 ...
stepper(con_str[0],con_str[1],con_str[2],con_str[3]);
 ...
}

Ich habe nur den Teil geposted wo das Problem liegt. Nämlich die 
übergabe des Array "temp_str" in das array "con_str[1]". Wer sich fragt 
warum - ganz einfach ich speicher nach jeden "[ENTER]" den empfangenen 
String in con_str[0-3], damit ich sie am Ende an die Stepper-Funktion 
übergeben kann.




Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren