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

Портировать Pawn на малинку

Попробую спросить надеясь на чудо.

Первое чудо - кто то работал с Pawn ?

Второе - кто нибудь работал с Pawn на Линуксе?

На контроллере запустить оказалось просто - нужно включить в проект несколько файлов

 

pawn.png.1292899e51c7ad2baab94951b6b0e987.png

с Линуксом сложней, в папке amx просто огроменная куча файлов.

Кто знает какие портировать в проект?

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


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

"Курить" https://github.com/compuphase/pawn/blob/master/doc/Pawn_Implementer_Guide.pdf и нас просвещать ;-)
Мало на "малине" всякого скриптового Ж8-))) добавим 100500-ое ;-)

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


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

12 hours ago, jenya7 said:

Первое чудо - кто то работал с Pawn ?

Второе - кто нибудь работал с Pawn на Линуксе?

А смысл ? Время потратить можно более приятно - пиво, женщины, ...

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


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

10 hours ago, Obam said:

"Курить" https://github.com/compuphase/pawn/blob/master/doc/Pawn_Implementer_Guide.pdf и нас просвещать ;-)
Мало на "малине" всякого скриптового Ж8-))) добавим 100500-ое ;-)

в Pawn_Implementer_Guide.pdf эта тема не раскрыта. по крайней мере я не понял какие файлы добавлять в проект.

Вам известен скриптовый движок на малине? Такой который может выполнять внешние функции? Ну поделитесь.

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


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

2 hours ago, VladimirG said:

Lua?

embLua стала и скомпилировалась без проблем (в Qt). там неплохой механизм добавления своих ф-ций в скрипт. но при запуске выдаёт ран-тайм исключения в которых я пока не разобрался. что то там с алокацией, как мне кажется, может нужно настраивать на соответствующую платформу. но нет возможности отдебагировать, уходит в лютое исключение.

 

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

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


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

Вам известен скриптовый движок на малине? Такой который может выполнять внешние функции? Ну поделитесь.


bash, python, ruby - не оно?

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

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


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

9 hours ago, Obam said:


bash, python, ruby - не оно?

 

 

20 hours ago, VladimirG said:

А зачем на линуксе embLua? Из репозитория поставить не?

у меня програма написана на С (Qt). Мне надо чтоб пользователь написал скрипт и загрузил его, а моя програма исполнит его в отдельном потоке, так как есть другие задачи которые нужно выполнять.

на данный момент у меня есть интерпретатор который я написал, но он довольно убогий, хочется умощнить его, дополнить функционал.

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

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


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

1 hour ago, jenya7 said:

а моя програма исполнит его в отдельном потоке,

Так если речь идёт о линуксе, то какая разница на чем будет написана программа исполняемая в отдельном потоке системным вызовом?

    auto proc = popen( (app_string_ + "-p LINEV -u").c_str(), "r");
    auto proc2 = popen((app_string_ + "-p LOADPCT -u").c_str(), "r");

    const int data_size {128};
    static char data[data_size];
    static char data2[data_size];

    if(proc != NULL && proc2 !=NULL)
    {
        fgets(data,data_size,proc);
        fgets(data2,data_size,proc2);

    }
    else
    {
        std::cerr << "Failed to open" << app_string_ << std::endl;
    }
    pclose(proc);
    pclose(proc2);

Вот пример с получением вывода исполняемого процесса.

Изменено пользователем VladimirG
пример

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


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

28 minutes ago, VladimirG said:

Так если речь идёт о линуксе, то какая разница на чем будет написана программа исполняемая в отдельном потоке системным вызовом?


    auto proc = popen( (app_string_ + "-p LINEV -u").c_str(), "r");
    auto proc2 = popen((app_string_ + "-p LOADPCT -u").c_str(), "r");

    const int data_size {128};
    static char data[data_size];
    static char data2[data_size];

    if(proc != NULL && proc2 !=NULL)
    {
        fgets(data,data_size,proc);
        fgets(data2,data_size,proc2);

    }
    else
    {
        std::cerr << "Failed to open" << app_string_ << std::endl;
    }
    pclose(proc);
    pclose(proc2);

Вот пример с получением вывода исполняемого процесса.

 

так а скрипт где? и его интерпретатор?

 есть сеть удаленных датчиков, которые посылают разные параметры - температуру, влажность, освещенность, позицию, и.т.д.

пользователь должен выбрать какой датчик опросить и на основе полученных результатов что то сделать.

вот пример

//turn on a fan on overheat
if TSENS1 > 30.5 then OUT1 = 1;
if HSENS2 > 60 then OUT2 = 1;
//turn on a sprinkler on time
if TIME = 12:00:00 then OUT3 = 1;
if TIME = 12:30:00 then OUT3 = 0;

в моём интерпретаторе TSENS1 выражается в

val = m_sensor.GetDataByValType(1, SENS_VAL_TYPE_TEMP);

а HSENS2 в

val = m_sensor.GetDataByValType(2, SENS_VAL_TYPE_HUM);

а OUT1 = 1 вызовет

Out(1, true);

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

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


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

Не так понял задачу....

Не проще в таком случае свой интерпритатор написать?

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


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

44 minutes ago, VladimirG said:

Не так понял задачу....

Не проще в таком случае свой интерпритатор написать?

для кого то просто. для меня сложно. я написал, но он очень простой а интерпретатор с мощным функционалом мне не по зубам. да и зачем? есть уже готовые. тот же Pawn к примеру.

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


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

А с Pawn то какая проблема? Ради интереса с гитхаба склонировал проект, собрал и павн и амх либы  без проблем.

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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