Can Hacker

Pjatruha

✩✩✩✩✩✩✩
4 Сен 2025
1
0
Здравствуйте.
На гитхабе есть проект arduino-canhacker.
Хочу на основе этого проекта написать терминальную программу CAN Bomber наподобие вот этой. Так как писать готовые программы для компьютера я не умею, а для МК был опыт написания скетчей, поэтому и хочу реализовать общение через терминал.
Помогите пожалуйста разобраться в годе скетча arduino-canhacker. В каком месте данные принимаются из сом-порта и отсылаются в кан-сеть?
Пока занялся интерфейсом программы
интерфейс:
char key = 9;
int8_t i = 7, x = 7;

void setup() {
    Serial.begin(115200);
    Serial.setTimeout(30);
    
}

void loop() {
 

  if ((Serial.available()) & (key == 9) ) {
    Serial.println(Serial.read());
    //Serial.read();
    Serial.flush();
    key = 0;
    Serial.println(" ");Serial.println("");
    Serial.println("******************************************************");
    Serial.println("*                     CAN Bomber                     *");
    Serial.println("******************************************************");
    Serial.println("Выберите метод бомбардиовки");
    Serial.println("1.Перебор ID пакета");
    Serial.println("2.Перебор выбранных байт данных");
    Serial.println("3.Последовательный перебор выбранных байт данных");
    }
  if ((Serial.available()) & (x == 7) ) {
    i = Serial.parseInt();
    Serial.println(i);
    x = 0;
    
  }
 
  switch (i) {
    case 1:
        if (key == 0) {
          Serial.println("******************************************************");
          Serial.println("*                 Перебор ID пакета                  *");
          Serial.println("******************************************************");
          Serial.println("Ввведите начальное значение ID");
          key = 1;
        }
        if ((Serial.available()) & (x == 0) ) {
          int ID_Start = Serial.parseInt();
          Serial.println(ID_Start);
          Serial.println("Ввведите конечое значение ID");
          x = 1;
        } else if ((Serial.available()) & (x == 1) ) {
          int ID_End = Serial.parseInt();
          Serial.println(ID_End);
          Serial.println("Введите время задержки между отправкой пакетов");
          x = 2;
        } else if ((Serial.available()) & (x == 2) ) {
          int Period = Serial.parseInt();
          Serial.println(Period);
          Serial.println("Введите колличество одинаковых пакетов");
          x = 3;
        } else if ((Serial.available()) & (x == 3) ) {
          int Msg_per_Step = Serial.parseInt();
          Serial.println(Msg_per_Step);
          x = 4;
          i = 0;
        }
          
        
        break;

    case 2:
        // код
        break;

    case 3:
        // код
        break;
  }
}
 
Изменено: