Перейти к содержанию
    

2 hours ago, Kopa said:

А, возможно ли универсальное решение?

Как пример автор запрограммировал решение для домашней HLDI на своём Форт для ПК и на Си для STM32 (автор этого решения мне рассказал как его пересобрать для ПК в рамках его Форт системы)

https://radiokot.ru/forum/viewtopic.php?f=8&t=119089

 

Один болгарин хотит что бы я ему дал авторские Форт исходники для развития их (хотя они есть в топике темы), но мне непонятно что он с ними сможет сделать. :)

 

Почти универсальное решение это Pawn. Но в моём случае нужно работать с моими переменными, скажем

IF SENSOR0==35 THEN PWM1=70;

IF IN0==1 AND IN3==1 THEN OUT2=1;

И я не нашёл как в Pawn сделать привязку к моим переменным в скрипте.

 

то есть когда мой парсер видит SENSOR0 он реально идет и опрашивает сенсор по индексу 0. или IN3- он опрашивает вход по индексу 3.

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 minutes ago, _pv said:

дешево и сердито: https://github.com/rswier/c4

 

я знаю этот проект. да крутой, мне понравилось. опять таки не нашел как привязывать мои переменные к скрипту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот кастомные "инструкции" этой ВМ, сделайте вместо них свои read/write из скрипта в отдельную область памяти хоста.

    else if (i == OPEN) a = open((char *)sp[1], *sp);
    else if (i == READ) a = read(sp[2], (char *)sp[1], *sp);
    else if (i == CLOS) a = close(*sp);
    else if (i == PRTF) { t = sp + pc[1]; a = printf((char *)t[-1], t[-2], t[-3], t[-4], t[-5], t[-6]); }
    else if (i == MALC) a = (int)malloc(*sp);
    else if (i == FREE) free((void *)*sp);

а если надо именно переменные, можно в скрипте взять "адрес" переменной (&) и потом просто по этому смещению в массиве data[] орудовать и наоборот разместить переменную хоста в этом массиве по заданному смещению.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, _pv said:

вот кастомные "инструкции" этой ВМ, сделайте вместо них свои read/write из скрипта в отдельную область памяти хоста.


    else if (i == OPEN) a = open((char *)sp[1], *sp);
    else if (i == READ) a = read(sp[2], (char *)sp[1], *sp);
    else if (i == CLOS) a = close(*sp);
    else if (i == PRTF) { t = sp + pc[1]; a = printf((char *)t[-1], t[-2], t[-3], t[-4], t[-5], t[-6]); }
    else if (i == MALC) a = (int)malloc(*sp);
    else if (i == FREE) free((void *)*sp);

а если надо именно переменные, можно в скрипте взять "адрес" переменной (&) и потом просто по этому смещению в массиве data[] орудовать и наоборот разместить переменную хоста в этом массиве по заданному смещению.

спасибо. попробую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...