Двоичные данные по последовательному терминалу

Я бы лично пошел с AJAX здесь просто потому, что он наиболее широко используется, и поэтому у меня будет лучшая документация, на которую можно сослаться, если вы застряли. Вы упоминаете, что уже используете JQuery, что сделает интеграцию AJAX очень простой. Я уверен, что поиск "фляга AJAX JQuery" даст вам хорошие результаты сразу.

Я также рекомендую опубликовать соответствующий код, который у вас есть (конечные точки Flask / логика). Это определенно поможет людям помочь вам, и в целом это хороший этикет StackOverflow.

5
задан Atilla Filiz 3 February 2009 в 11:49
поделиться

6 ответов

Можно использовать приложение как xmodem для передачи файла по любому терминалу. Последовательный порт, который Вы говорите от терминала, или это также консоль ядра.

Если Вы - ядро, не является шумным, то можно использовать текущее соединение для создания xmodem как передача. На стороне хоста можно использовать kermit, который хорош И scriptable.

Если Вы хотите сделать свои сырые данные последовательного порта, и у Вас есть дескриптор файла ttyfd открытый, вот один способ сделать это:

struct termios tty, orig_tty;

...

if(tcgetattr(ttyfd, &tty) < 0)
{
    // error checking
}
// backup tty, make it raw and apply changes
orig_tty = tty;
cfmakeraw(&tty);
if(tcsetattr(ttyfd, TCSAFLUSH, &tty) < 0)
{
    // error checking
}

...
//end of program or error path :
tcsetattr(ttyfd, TCSAFLUSH, &orig_tty)

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

3
ответ дан 18 December 2019 в 13:20
поделиться

Вы не можете только установить терминал на сырые данные?

Взгляните на это учебное руководство.

3
ответ дан 18 December 2019 в 13:20
поделиться

Для отключения консоли Linux, необходимо измениться, командная строка Linux создают загрузчиком из: консоль, =/dev/ttyS? к: console=null

3
ответ дан 18 December 2019 в 13:20
поделиться

Можно работать на терминале команда, которая передаст данные через протокол прикладного уровня. rx и tx управляют, чтобы Вы относились для реализации протокола передачи файлов XMODEM. Это могло быть решение, если двоичные данные, которые Вы хотите передать, состоят из файлов, спросы пропускной способности являются низкими, и Вы не возражаете против административных издержек выполнения команд. С другой стороны, можно хотеть мультиплексировать последовательный порт для обработки и передача данных и терминал. Отключите команду драйвера последовательного терминала (getty) и выполните протокол PPP по последовательной линии для установления IP-соединения к устройству. Можно затем войти в устройство через ssh или telnet и передать данные через сокет IP.

2
ответ дан 18 December 2019 в 13:20
поделиться

Поскольку другие примечания подразумевали, существует несколько вещей проверить, собранный здесь:

  1. Удостоверьтесь, что ядро Linux не использует последовательный порт. Удостоверьтесь, что нет ни один никакой консоли = опция на команде bootload в Вашем файле личинки. Это обычно не там по умолчанию.
  2. Удостоверьтесь, что нет никакой работы getty последовательного порта. Посмотрите в/etc/inittab для записи для/dev/ttyS0 (последовательный порт A) и прокомментируйте его, если это там.
  3. Удостоверьтесь, что/dev/ttyS0 читаем и перезаписываем Вашим процессом. Вы могли бы создать определенного пользователя, при котором управляющая программа запущена, и который владеет/dev/ttyS0, затем chmod 700/dev/ttyS0. Это поможет удостовериться, что некоторый другой пользователь/программа также не пытается использовать последовательный порт.
  4. Используйте открытый () на ttyS0 для получения fd, затем используйте tcsetattr семейство стандартных программ для установки линейной скорости и дисциплины.

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

2
ответ дан 18 December 2019 в 13:20
поделиться

Да, все Ваши последовательные порты находятся в /dev/ttyxx. Отметьте это /dev/tty ярлык, который обозначает Ваш текущий терминал, не определенный последовательный порт. Часто, они принадлежат корню, и требуют, чтобы у Вас или были полномочия, или находятся в adm группа для доступа к устройству непосредственно из приложения.

Можно хотеть chown устройство, таким образом, можно получить доступ к нему. Я не уверен, какой последствие изменяющегося владения устройства; IIRC, легко сделать и работы приятно. Альтернатива должна использовать setuid поднять Вашу программу до привилегированного состояния.

Существует названная программа getty это позволяет пользователям войти в систему от последовательного порта. Ваш inittab запустится getty на последовательных портах, таким образом, могут войти в систему люди.

Вы хотите отключить getty. В некоторых случаях существует менеджер по порту, который помогает сделать это.

В некоторых случаях можно изменить Ваш inittab использовать mgetty, который является более умным и более легким для управления версией getty.

1
ответ дан 18 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: