jenya7 0 18 ноября, 2020 Опубликовано 18 ноября, 2020 (изменено) · Жалоба 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. Изменено 18 ноября, 2020 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 74 18 ноября, 2020 Опубликовано 18 ноября, 2020 · Жалоба дешево и сердито: https://github.com/rswier/c4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 18 ноября, 2020 Опубликовано 18 ноября, 2020 · Жалоба 21 minutes ago, _pv said: дешево и сердито: https://github.com/rswier/c4 я знаю этот проект. да крутой, мне понравилось. опять таки не нашел как привязывать мои переменные к скрипту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 74 18 ноября, 2020 Опубликовано 18 ноября, 2020 · Жалоба вот кастомные "инструкции" этой ВМ, сделайте вместо них свои 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[] орудовать и наоборот разместить переменную хоста в этом массиве по заданному смещению. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 18 ноября, 2020 Опубликовано 18 ноября, 2020 · Жалоба 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[] орудовать и наоборот разместить переменную хоста в этом массиве по заданному смещению. спасибо. попробую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться