Последовательная связь между ПК и Arduino с использованием C

Я пытаюсь отправить некоторые данные на arduino mega 2560, используя последовательную связь.

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

На каждом сайте, который я читал, говорится, что я могу отправлять данные на плату arduino так же, как писать в любой файл в Ubuntu.

Но я всегда получаю сообщение Ошибка сегментации

Вот мой код

#include <stdio.h>
#include <string.h>

char arduinoPort[] = "/dev/ttyACM0";

int main() {

  char buffer[] = {'1'};

  FILE *usb_port;

  usb_port = fopen(arduinoPort, "rwb");

  fwrite(buffer, sizeof(char), sizeof(buffer), usb_port);

  fclose(usb_port);

  return 0;
}

, 👍0

Обсуждение

почему вы не используете arduino IDE?, @jsotola

@jsotola, потому что они пишут для ПК, @Juraj


1 ответ


Лучший ответ:

1

Ваша программа безупречно работает на моем Ubuntu 18.04. я бы предположил, что ты возникли проблемы с настройкой (ненадежный USB-порт, проблемы с разрешениями...) а не сама программа. Тем не менее, я бы порекомендовал вам добавить немного проверка ошибок: сразу после вызова fopen(),

if (!usb_port) {
    perror(arduinoPort);
    return 1;
}

Я ожидаю, что вы увидите что-то вроде

/dev/ttyACM0: No such file or directory

или

< pre class="lang-none prettyprint-override">/dev/ttyACM0: Отказано в доступе

это может помочь вам выявить настоящую проблему.

,

Большое спасибо. Это не работало, потому что я открыл последовательный монитор и потому что сообщение я мог видеть. Когда серийный монитор открыт, серийный номер занят., @Shinforinpola