Постоянно читайте последовательные данные и храните их в файле или буфере

Я пытаюсь непрерывно читать данные из последовательного порта и сохранять его в buf и / или в файл. Также эти данные представляют собой поток символов HEX, а не ASCII. Я использую CHIP, который работает debian. Я подключил последовательный порт (UART) к /dev/ttyS0 (это где и как я буду читать данные). Я пытаюсь закодировать его в C.

Я могу прочитать часть данных, но не уверен, что это такое, поскольку я не могу записать его в текстовый файл, а также когда я пытаюсь выполнить печать на консоли, данные не в читаемом формате, поскольку данные находятся в HEX и консоль печатает строки. Можно ли печатать символы HEX?

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

Как я могу хранить данные, полученные непрерывно на последовательном порту?

 #debian version $ cat /etc/issue Debian GNU/Linux 8 \n \l $ cat /etc/debian_version 8.6 

Фрагмент кода:

 main() { char *portname = "/dev/ttyS0" //Serial port connected(UART) int fd = open (portname, O_RDWR | O_NOCTTY | O_NONBLOCK); if (fd < 0) { perror ("error %d opening %s: %s", errno, portname, strerror (errno)); return; } // *these two functions are used to set attributes for serial communication.* set_interface_attribs (fd, B115200, 0); // set speed to 115,200 bps, 8n1 (no parity) set_blocking (fd, 0); // set no blocking char buf [100]; printf("Reading data on serial port"); int n; while(1) { n = read (fd, &buf, sizeof(buf)); // read up to 100 characters if ready to read puts(buf); } return 0; } в main() { char *portname = "/dev/ttyS0" //Serial port connected(UART) int fd = open (portname, O_RDWR | O_NOCTTY | O_NONBLOCK); if (fd < 0) { perror ("error %d opening %s: %s", errno, portname, strerror (errno)); return; } // *these two functions are used to set attributes for serial communication.* set_interface_attribs (fd, B115200, 0); // set speed to 115,200 bps, 8n1 (no parity) set_blocking (fd, 0); // set no blocking char buf [100]; printf("Reading data on serial port"); int n; while(1) { n = read (fd, &buf, sizeof(buf)); // read up to 100 characters if ready to read puts(buf); } return 0; } 

настройка интерфейса

  tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8; // 8-bit chars // disable IGNBRK for mismatched speed tests; otherwise receive break // as \000 chars tty.c_iflag &= ~IGNBRK; // disable break processing tty.c_lflag = 0; // no signaling chars, no echo, // no canonical processing tty.c_oflag = 0; // no remapping, no delays tty.c_cc[VMIN] = 0; // read doesn't block tty.c_cc[VTIME] = 5; // 0.5 seconds read timeout tty.c_iflag &= ~(IXON | IXOFF | IXANY); // shut off xon/xoff ctrl tty.c_cflag |= (CLOCAL | CREAD);// ignore modem controls, // enable reading tty.c_cflag &= ~(PARENB | PARODD); // shut off parity tty.c_cflag |= parity; tty.c_cflag &= ~CSTOPB; //one stop bit tty.c_cflag &= ~CRTSCTS; 

Может кто поможет !!!!!

Заранее спасибо…

Interesting Posts

Возможности файла Linux теряются при изменении файла. Это ожидаемое поведение?

как отлаживать / исправлять сбои экрана при запуске

Настройка FTP-прокси на Squid

Как добавить что-то в конец «}», если шаблон сопоставлен?

Передайте значение для приглашения ввода

Драйверы видеокарты Nvidia для совместимости с Linux

Перенаправить вывод программы в файл с лимитом номера строки

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

Почему обычный пользователь не может удалить субблот btrfs

Как «человек» делает двойные кавычки не как удвоенные обратные и простые символы?

Linux вырезает команду с -f1

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

LXDE настроить главное меню добавить ПОИСК BOX, как в KDE Kickoff или Windows 7 / Vista

Создание базы списка слов по возможным номерам / символам через Crunch в Kali Linux

Не удается открыть .php-страницы в любом браузере.

Linux и Unix - лучшая ОС в мире.