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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.