Как проверить правильность записи на устройство Serial / dev / ttySX в Linux - PullRequest
0 голосов
/ 30 сентября 2019

Мне нужно реализовать определенный протокол через последовательное устройство. Я уже сделал конструктор сообщений и у меня есть список байтов, готовых к отправке. У меня проблема в том, что я не могу проверить, правильно ли я отправляю байты в интерфейс /dev/ttyS2. Мои последовательные сообщения имеют структуру PATTERN + MESSAGE

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

cat /dev/ttyS2 | grep PATTERN

В моей программе (код ниже),если я отправляю свое сообщение, я не могу видеть свои кадры с помощью предыдущей команды:

static FILE * file_stream = NULL;
static int file_des = 0;

static void printSampleMessage(void) {
struct termios SerialPortSettings; /* Create the structure                          */

/* Open linux device */
file_des = open("/dev/ttyS2", O_RDWR | O_NOCTTY);

/*---------- Setting the Attributes of the serial port using termios structure --------- */

tcgetattr(file_des, &SerialPortSettings);   /* Get the current attributes of the Serial port */

/* Setting the Baud rate */
cfsetispeed(&SerialPortSettings,B38400); /* Set Read  Speed as 38400                       */
cfsetospeed(&SerialPortSettings,B38400); /* Set Write Speed as 38400                       */

/* 8N1 Mode */
SerialPortSettings.c_cflag &= ~PARENB;   /* Disables the Parity Enable bit(PARENB),So No Parity   */
SerialPortSettings.c_cflag &= ~CSTOPB;   /* CSTOPB = 2 Stop bits,here it is cleared so 1 Stop bit */
SerialPortSettings.c_cflag &= ~CSIZE;    /* Clears the mask for setting the data size             */
SerialPortSettings.c_cflag |=  CS8;      /* Set the data bits = 8                                 */

SerialPortSettings.c_cflag &= ~CRTSCTS;       /* No Hardware flow Control                         */
SerialPortSettings.c_cflag |= CREAD | CLOCAL; /* Enable receiver,Ignore Modem Control lines       */


SerialPortSettings.c_iflag &= ~(IXON | IXOFF | IXANY);          /* Disable XON/XOFF flow control both i/p and o/p */
SerialPortSettings.c_iflag &= ~(ICANON | ECHO | ECHOE | ISIG);  /* Non Cannonical mode                            */

SerialPortSettings.c_oflag &= ~OPOST; /*No Output Processing RAW mode*/


if((tcsetattr(file_des,TCSANOW,&SerialPortSettings)) != 0) {/* Set the attributes to the termios structure*/
} else {
}

/* Obtain file stream descriptor */
file_stream = fdopen(file_des, "r+");
fputs ( "PATTERN+MESSAGE", file_stream);
}

Однако я не могу видеть свое собственное сообщение при использовании команды cat /dev/ttyS2 | grep PATTERN. Как я могу проверить, действительно ли я отправляю свое PATTERN + сообщение в последовательное устройство?

Я весьма ограничен в плане параметров программы. Моя установка - встроенный linux, взаимодействующий с другим микроконтроллером внутри платы (нет контрольной точки для подключения физического анализатора), и нет доступных миникомов, поскольку используемый мной дистрибутив linux очень простой, я не могу просто apt-get install XX

...