Chris
01.02.2004, 21:32
Hallo !
Ich habe an meinem Roby ein Spracherkennungsmodul (VD 364 ) angebaut,
das Programm habe ich von dem Projekt Lallus (WDR Computerclub).
Verbunden habe ich das Spracherkennungsmodul mit Port 9 – 12 über 4 Pull Up
Widerständen mit dem Roby.Mit dem Programm und der Seriellen Schnittstelle
kann ich im Hyper Terminal Worte b.z.w Befehle speichern und erkennen lassen.
Wen das Spracherkennungsmodul Worte die ich vorher gespeichert habe (bis zu 60 Worte)
Erkennt dann gibt er über das Terminal z.b die Kennung 255 3 0 1 4 aus.
Die Kennung setz sich wie folgt zusammen - Synchronbyte 255, Längenbyte 3, 0 = kein Fehler,1 ist die Zeigerposition, Checksum 4.
So jetzt meine Frage an euch wie kann ich die Antwort umsetzten so das ich damit dem Roby steuern kann b.z.w das er auf die Befehle eine Funktion durchführt????
Vielen Dank schon mal im voraus!!!!!
Hier das Programm
define reset port[9]
define shs port[10]
define data port[12]
define mhs port[11]
define wert byte
define anzahl byte
define check byte
define i byte
define j byte
define offset byte
define taste byte
define segment byte
define wort byte
define manda byte
define erkannt bit[192]
define speek bit[191]
define sagen bit[190]
#init
deact shs : reset =off : reset =on
pause 30
#anzeige
print
print "Namen erkennen <A> [B] Pointer lesen"
print "Namen trainieren <C> <D> Kommunikation ??"
print "Get Entry status <E> <F> Version abfragen"
print "Wort sagen <G> <H> Directory lesen"
print "Startbeep ein [I] <J> Startbeep aus"
print "Increment pointer<K> <L> Decrement pointer"
print "Clear current p. <M> <N> Swap curr. pointer"
print "Restore curr. p. <O>
Delete curr. entry"
print "Delete all words <Q> <R> Power down !RESET!"
print "NEAR <S> <T> FAR"
print "QUIET <U> <V> AUTOMOTIVE"
print "Speech (PWM) aus <W> <X> Speech (PWM) ein"
print "Automatik ein <Y> <Z> Automatik aus"
print "Menüanzeige <Leertaste>"
print
#main
taste=0
if not rxd then goto main
get taste
if taste=32 then goto anzeige
if taste <65 then goto main
if taste >96 then taste = taste-32
offset = (taste-65)*5
if offset = 120 then goto automatik
if offset=30 then sagen =on
if sagen=on then goto sprechen else goto ausführen
#sprechen
print "Mandatory prompt list <0> "
print "Optional prompt list <1> "
input manda
if manda>1 then goto sprechen
if manda = 0 then print "Das gewünschte Wort (1 -208) eingeben."
if manda = 1 then print "Das gewünschte Wort (1 -240) eingeben."
input wort
#ausführen
print "Kommando"
looktab command,offset,anzahl
wert=255 : gosub schreiben
wert = anzahl + 1 : gosub schreiben
check = wert
for j = 1 to anzahl
looktab command,j+offset,wert
if sagen=on and j=2 then wert=wort
if sagen=on and j=3 then wert=manda
check = check + wert
gosub schreiben
next j
sagen=off
manda=0
wert=check : gosub schreiben
print
#antwort
print "Antwort"
gosub lesen : gosub lesen
anzahl=wert
for j = 1 to anzahl
gosub lesen
next j
print
goto main
#lesen
wert=0
deact data
for i = 7 to 0 step -1
wait not shs
if data then wert = wert + (1 shl i)
mhs = off : wait shs : mhs = on
next i
print wert;" ";
return
#schreiben
for i = 7 to 0 step - 1
if wert and 1 shl i then data =on else data = off
wait shs
mhs = off
wait not shs
mhs = on
wait shs
next i
print wert; " ";
return
#automatik
offset = 0
if rxd then get taste
if taste=90 or taste=122 then goto anzeige
if taste >96 then taste=taste-32
if taste =91 then goto anzeige
print "Kommando"
looktab command,offset,anzahl
wert=255 : gosub schreiben
wert = anzahl + 1 : gosub schreiben
check = wert
for j = 1 to anzahl
looktab command,j+offset,wert
check = check + wert
gosub schreiben
next j
wert=check : gosub schreiben
print
print "Antwort"
gosub lesen : gosub lesen
anzahl=wert
for j = 1 to anzahl
gosub lesen
if j=1 and wert=0 then erkannt=on
next j
print
if erkannt=on then goto erkannt
goto automatik
#erkannt
erkannt=off
print "Erkennung"
wert=255 : gosub schreiben
wert=2 : gosub schreiben
wert=38 : gosub schreiben
wert=40 : gosub schreiben
print
print "Antwort"
gosub lesen : gosub lesen
anzahl=wert
for j = 1 to anzahl
gosub lesen
if j=2 then segment=wert+1
next j
print
print "Erkennung"
wert=255 : gosub schreiben
wert=5 : gosub schreiben
wert=48 : gosub schreiben
wert=90+segment:gosub schreiben
wert=1 : gosub schreiben
wert=1 : gosub schreiben
wert=5+48+90+segment+1+1: gosub schreiben
print
print "Antwort"
gosub lesen : gosub lesen
anzahl=wert
for j = 1 to anzahl
gosub lesen
next j
print
goto automatik
table command
4 16 121 0 1 ' recognize word
1 38 0 0 0 ' return pointer
4 2 121 0 1 ' train a name
1 0 0 0 0 ' no operation
1 42 0 0 0 ' get entry status
1 1 0 0 0 ' get version
3 48 7 0 0 ' say a prompt
1 43 0 0 0 ' query directory
3 65 8 1 0 ' beep ein
3 65 8 0 0 ' beep aus
1 33 0 0 0 ' increment pointer
1 34 0 0 0 ' decrement pointer
1 32 0 0 0 ' clear current pointer
1 37 0 0 0 ' swap current pointer
1 36 0 0 0 ' restore current pointer
1 39 0 0 0 ' delete current entry
2 40 85 0 0 ' delete all stored words
1 64 0 0 0 ' power down
3 65 0 254 0 ' environment near
3 65 0 255 0 ' environment far
3 65 0 243 0 ' environment quiet
3 65 0 12 0 ' environment automotive
3 65 7 1 0 ' speech pwm aus
3 65 7 2 0 ' speech pwm ein
Ich habe an meinem Roby ein Spracherkennungsmodul (VD 364 ) angebaut,
das Programm habe ich von dem Projekt Lallus (WDR Computerclub).
Verbunden habe ich das Spracherkennungsmodul mit Port 9 – 12 über 4 Pull Up
Widerständen mit dem Roby.Mit dem Programm und der Seriellen Schnittstelle
kann ich im Hyper Terminal Worte b.z.w Befehle speichern und erkennen lassen.
Wen das Spracherkennungsmodul Worte die ich vorher gespeichert habe (bis zu 60 Worte)
Erkennt dann gibt er über das Terminal z.b die Kennung 255 3 0 1 4 aus.
Die Kennung setz sich wie folgt zusammen - Synchronbyte 255, Längenbyte 3, 0 = kein Fehler,1 ist die Zeigerposition, Checksum 4.
So jetzt meine Frage an euch wie kann ich die Antwort umsetzten so das ich damit dem Roby steuern kann b.z.w das er auf die Befehle eine Funktion durchführt????
Vielen Dank schon mal im voraus!!!!!
Hier das Programm
define reset port[9]
define shs port[10]
define data port[12]
define mhs port[11]
define wert byte
define anzahl byte
define check byte
define i byte
define j byte
define offset byte
define taste byte
define segment byte
define wort byte
define manda byte
define erkannt bit[192]
define speek bit[191]
define sagen bit[190]
#init
deact shs : reset =off : reset =on
pause 30
#anzeige
print "Namen erkennen <A> [B] Pointer lesen"
print "Namen trainieren <C> <D> Kommunikation ??"
print "Get Entry status <E> <F> Version abfragen"
print "Wort sagen <G> <H> Directory lesen"
print "Startbeep ein [I] <J> Startbeep aus"
print "Increment pointer<K> <L> Decrement pointer"
print "Clear current p. <M> <N> Swap curr. pointer"
print "Restore curr. p. <O>
Delete curr. entry"
print "Delete all words <Q> <R> Power down !RESET!"
print "NEAR <S> <T> FAR"
print "QUIET <U> <V> AUTOMOTIVE"
print "Speech (PWM) aus <W> <X> Speech (PWM) ein"
print "Automatik ein <Y> <Z> Automatik aus"
print "Menüanzeige <Leertaste>"
#main
taste=0
if not rxd then goto main
get taste
if taste=32 then goto anzeige
if taste <65 then goto main
if taste >96 then taste = taste-32
offset = (taste-65)*5
if offset = 120 then goto automatik
if offset=30 then sagen =on
if sagen=on then goto sprechen else goto ausführen
#sprechen
print "Mandatory prompt list <0> "
print "Optional prompt list <1> "
input manda
if manda>1 then goto sprechen
if manda = 0 then print "Das gewünschte Wort (1 -208) eingeben."
if manda = 1 then print "Das gewünschte Wort (1 -240) eingeben."
input wort
#ausführen
print "Kommando"
looktab command,offset,anzahl
wert=255 : gosub schreiben
wert = anzahl + 1 : gosub schreiben
check = wert
for j = 1 to anzahl
looktab command,j+offset,wert
if sagen=on and j=2 then wert=wort
if sagen=on and j=3 then wert=manda
check = check + wert
gosub schreiben
next j
sagen=off
manda=0
wert=check : gosub schreiben
#antwort
print "Antwort"
gosub lesen : gosub lesen
anzahl=wert
for j = 1 to anzahl
gosub lesen
next j
goto main
#lesen
wert=0
deact data
for i = 7 to 0 step -1
wait not shs
if data then wert = wert + (1 shl i)
mhs = off : wait shs : mhs = on
next i
print wert;" ";
return
#schreiben
for i = 7 to 0 step - 1
if wert and 1 shl i then data =on else data = off
wait shs
mhs = off
wait not shs
mhs = on
wait shs
next i
print wert; " ";
return
#automatik
offset = 0
if rxd then get taste
if taste=90 or taste=122 then goto anzeige
if taste >96 then taste=taste-32
if taste =91 then goto anzeige
print "Kommando"
looktab command,offset,anzahl
wert=255 : gosub schreiben
wert = anzahl + 1 : gosub schreiben
check = wert
for j = 1 to anzahl
looktab command,j+offset,wert
check = check + wert
gosub schreiben
next j
wert=check : gosub schreiben
print "Antwort"
gosub lesen : gosub lesen
anzahl=wert
for j = 1 to anzahl
gosub lesen
if j=1 and wert=0 then erkannt=on
next j
if erkannt=on then goto erkannt
goto automatik
#erkannt
erkannt=off
print "Erkennung"
wert=255 : gosub schreiben
wert=2 : gosub schreiben
wert=38 : gosub schreiben
wert=40 : gosub schreiben
print "Antwort"
gosub lesen : gosub lesen
anzahl=wert
for j = 1 to anzahl
gosub lesen
if j=2 then segment=wert+1
next j
print "Erkennung"
wert=255 : gosub schreiben
wert=5 : gosub schreiben
wert=48 : gosub schreiben
wert=90+segment:gosub schreiben
wert=1 : gosub schreiben
wert=1 : gosub schreiben
wert=5+48+90+segment+1+1: gosub schreiben
print "Antwort"
gosub lesen : gosub lesen
anzahl=wert
for j = 1 to anzahl
gosub lesen
next j
goto automatik
table command
4 16 121 0 1 ' recognize word
1 38 0 0 0 ' return pointer
4 2 121 0 1 ' train a name
1 0 0 0 0 ' no operation
1 42 0 0 0 ' get entry status
1 1 0 0 0 ' get version
3 48 7 0 0 ' say a prompt
1 43 0 0 0 ' query directory
3 65 8 1 0 ' beep ein
3 65 8 0 0 ' beep aus
1 33 0 0 0 ' increment pointer
1 34 0 0 0 ' decrement pointer
1 32 0 0 0 ' clear current pointer
1 37 0 0 0 ' swap current pointer
1 36 0 0 0 ' restore current pointer
1 39 0 0 0 ' delete current entry
2 40 85 0 0 ' delete all stored words
1 64 0 0 0 ' power down
3 65 0 254 0 ' environment near
3 65 0 255 0 ' environment far
3 65 0 243 0 ' environment quiet
3 65 0 12 0 ' environment automotive
3 65 7 1 0 ' speech pwm aus
3 65 7 2 0 ' speech pwm ein