Для него старая орфа не подходит, она не особо портируема, да и есть желание сделать все несколько иначе.
Итак что же я хочу сделать:
- применить вытесняющую ОСРВ
- использовать shell'образную оболочку
- демоны оборудования, протоколов...
- общение через глобальные переменные
- сервера синхронизации (отсылки переменных)
Примерно так я хочу видеть работу с модулем:
- Код: Выделить всё
Welcome on Open Robotics OR-STM32-DS
> help
gpiod GPIO daemon
adcd ADC daemon
motord motor daemon
servod servo daemon
print print variables
set set variable
ps list running threads
bsync binary variable syncronization service (via stream device)
isync I2C variable syncronization service (???)
usync USB variable syncronization service (via USB, not USB CDC)
orfa old ORFA command interpreter
reset reset module
> print
> gpiod
> print
port0_i=0xffff
port0_o=0xffff
port0_m=0x00000000000000
port1_i=0xffff
...
> adcd
> print
adc0=0xadc0
adc0_m=0x0000
...
adc16=0xadcf
adc16_m=0x0000
...
> motord
> print
...
motor0_p=0
motor1_p=-100
motor2_p=0
motor3_p=100
...
> servod
> print
...
servo0_p=1500
servo0_d=2000
servo0_t=200
servo1_p=2000
...
> set servo1_d 1500
> bsync
<-- binary transfer -->
^C
> print servo0_p
2000
> help servod
servod [-r a..b,c,d..e] [-m 0..16:s,3:a.2]
RC servo control daemon
-r enabled channel ranges, default 0..16 (0..32)
-m mode of servo: [s]tandard, potenciometer on [a]dc.<ch>
Добавлено спустя 15 минут 24 секунды:
Сервер синхронизации
Это программа которая позволяет читать и писать переменные контроллера через какой-либо внешний интерфейс.
Во время работы sync нельзя создавать и удалять переменные.
Например для bsync я думаю использовать такой алгоритм:
- при запуске отсылается таблица индекс-имя
- отсылается полный пакет изменений
- по изменению переменной она отсылается наверх (либо на следующем цикле)
Мастер может только отсылать пакет изменений (хотя может быть есть смысл запрашивать таблицу и данные).