Как написать родительскую программу, которая использует другие программы на C? - PullRequest
0 голосов
/ 25 января 2019

Я создаю сеть can-bus, которая будет обследовать некоторые датчики для сбора данных, чтобы лучше понять среду, которую мы хотим анализировать и контролировать.Для этого мы используем Candump для мониторинга трафика и можем отправлять отправленную информацию (из файлов CAN-BUS, которые можно найти по этому адресу: https://github.com/linux-can/can-utils.git). Я изменил некоторые коды, и они хорошо компилируются, теперь чтоЯ хочу сделать, это сделать родительский код, который может управлять этими программами C для управления средой. Я хочу использовать Python или C ++ для этого.

Пример алгоритма

while(sys == on){

if (everything is in place && security) then 
{candump -l -t -n nb_of_max_cycle can0} 
else { puts("error")}

if (user_id == permited_id && authentification) then 
{ cansend can0 tram=[hexID_arbitration+data] }
else { puts("denied") }

}

Заранее спасибо за все типы предложений.

Я пытался работать с IDE, но не могу ничего скомпилировать, потому что используемый make-файл специально создан для программ can с стандартами iso для CANBUS.

Я хочу позвонить и поставить или получить основную информацию с помощью функций c, как будто я на терминале с этим кодом.

1 Ответ

0 голосов
/ 25 января 2019

Вы можете использовать std::system для запуска других программ.

Что-то вроде:

if (std::system("candump -l -t -n nb_of_max_cycle can0") != 0) {
  puts("error");
}

В целом это ужасный способ выполнить работу.Вам нужно перенаправить вывод из этих программ более низкого уровня (candump more_params >output.txt) в файлы, если вы хотите что-то с этим сделать.Если вам нужно только что-то простое, этого может быть достаточно.

Лучший способ - создать надлежащий интерфейс для этих вещей и связать их с вашим двоичным файлом.Проверьте, что candump и cansend реализованы, и вызовите аналогичные функции.Это позволит вам лучше контролировать работу системы в целом.

...