Получить значения акселерометра Xuart

Я работаю с платой xilinx spartan 6 и микроконтроллером. Я использую свой акселерометр микроконтроллера для управления движущимся блоком на моем спартанце 6.

Я сейчас печатаю

xil_printf("%c",XUartLite_RecvByte(XPAR_UARTLITE_1_BASEADDR));

и я вернулся в свой терминал

$SWITCH 0
$ENC___ 13
$ACC___ -205 -317 860
$ACCRAW 796 812 1134
$SWITCH 0
$ENC___ 13

я просто не хочу, чтобы мои данные $ ACCRAW представляли, как это сделать и сохранить это, чтобы использовать их для управления моим movingBlock?

0

Решение

Тебе необходимо синтаксический анализатор.

В вашем случае это будет простой конечный автомат с одним состоянием для каждой буквы строки \n$ACCRAW это было признано, то есть

State 0 (uninteresting data):
'\n'      -> go to state 1
otherwise -> go to state 0

State 1 (beginning of line):
'$'       -> go to state 2
'\n'      -> go to state 1
otherwise -> go to state 0

State 2 (after dollar sign):
'A'       -> go to state 3
'\n'      -> go to state 1
otherwise -> go to state 0

[...]

State 8 (after "$ACCRAW"):
' '       -> clear x, go to state 9
'\n'      -> go to state 1
otherwise -> go to state 0

за которым следует одно состояние для каждой из трех осей:

State 9 (read X value):
'0'-'9'   -> multiply x by 10, add current digit
' '       -> clear y, go to state 10
'\n'      -> go to state 1
otherwise -> go to state 0

[...]

State 11 (read Z value):
'0'-'9'   -> multiply z by 10, add current digit
'\n'      -> start processing of data, go to state 1
otherwise -> go to state 0

В последнем состоянии последний символ новой строки затем начинает обработку новых значений, прежде чем перейти в состояние 1, как обычно.

Вы можете запустить конечный автомат в состоянии 0 или 1.

0

Другие решения


По вопросам рекламы [email protected]