VRBOT Serial Protocol 1.6_ C - Programm zur Kommunikation

OP #1899761
Lesenswert?

Ich benutze einen Atmega8 (8MHz), der mit einem 4*20 Display verbunden 
ist um eine Spracherkennnung zu debuggen.

Das Prinzip meines Programms arbeitet so:

- Initialisierung

Hauptschleife:--------------------
  Starte SD Recog;
  Lese UART ein bis gesprochenes Wort erkannt wurde;

  Wenn erkannt:
    Frage ab welchen Index das Wort hat;
  Ansonsten:
    continue;

  Auswertung();
----------------------------------

Folgendes Problem tauchen auf:
- Das Wort wird erkannt aber die Indexnummer nicht.
- In der Beschreibung des Serial Protocols steht, dass man den gelesenen 
Index decodieren muss (versteh ich auch).
Und dies geschieht so:
1
uart_putc(' '); //get arguments (groupindex)
2
_delay_ms(22);
3
zuletzt_empfangen = uart_getc();
4

5
wortposition = zuletzt_empfangen - 'A';

Jedoch bekomme ich immer ARG_ERROR am Display angezeigt.
Was könnte der Grund dafür sein?

lg andy
Angehängte Dateien:
Gast #1904468
Lesenswert?

Ich glaube ich hab den Fisch raus, und zwar steht in der Dokumentation 
beim Beispiel nicht, dass man encodieren muss, und oben bei den ACKs 
steht auch nicht dabei, dass man bei Argumenten encodieren muss.

siehe diesen Abschnitt:
1
# start recognition in wordset 1
2
SEND 'i'
3
SEND 'B'
4
# wait for reply:
5
# (if 5s timeout has been set, wait for max 6s then abort
6
# otherwise trigger recognition could never end)
7
result = RECEIVE
8
IF result = 's' THEN
9
# successful recognition, ack and read result
10
SEND ' '
11
command = RECEIVE  'A'
12
# perform actions according to command
13
ELSE IF result = 't' THEN
14
# timed out, no word spoken
15
ELSE IF result = 'e' THEN
16
# error code, ack and read which one
17
SEND ' '
18
error = (RECEIVE  'A') * 16
19
SEND ' '
20
error = error + (RECEIVE  'A')
21
# perform actions according to error
22
ELSE
23
# invalid request or reply
24
ERROR
25
END IF

Das decodieren wird hier gemacht, aber das en codieren, auf das wird 
verzichtet, aus irgend einem Grund.

Auch oben steht wie man decodiren kann aber umgekehrt nicht.

Also da musste ich echt tief graben bis ichs raus kappt hab, puuuuhh!!

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