Мы тестируем связь через последовательный порт. На устройстве есть два tty-узла /dev/ttyUSB8 и /dev/ttyUSB9.
Когда я передаю буфер из /dev/ttyUSB8 в /dev/ttyUSB9, я не получаю данные о вызове чтения /dev/ttyUSB9, если буфер не содержит новой строки.
Передать код
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
void write_func()
{
int fdw;
int i;
fdw = open("/dev/ttyUSB8", O_RDWR);
printf("fdw : %d\n",fdw);
printf("%ld\n", write(fdw, "Hello", 6));
close(fdw);
}
int main()
{
int i;
write_func();
return 0;
}
Получить код
void read_thread()
{
int fdr;
char buf[] = "NoData";
fdr = open("/dev/ttyUSB9", O_RDWR);
printf("fdr : %d\n",fdr);
printf("%s: %ld\n", __func__, read(fdr, buf, 6));
printf("%s\n", buf);
close(fdr);
}
int main()
{
int i;
read_thread();
return 0;
}
Я не получаю данные с помощью вышеуказанного вызова, но когда я добавляю '\n в вызов записи, я получаю данные в вызове блока чтения.
printf("%ld\n", write(fdw, "Hello\n", 7));
Каково значение символа новой строки в этом..
Обновлять:
Я добавил код для сброса канонического режима, но это не сработало:
void write_thread()
{
int fdw;
int i;
struct termios config;
fdw = open("/dev/ttymib24", O_RDWR);
printf("fdw : %d\n",fdw);
tcgetattr(fdw, &config);
config.c_lflag &= ~ICANON;
tcsetattr(fdw, TCSANOW, &config);
printf("%ld\n", write(fdw, "Hello", 6));
close(fdw);
}
cat xyz> /dev/tty
или что-то вродеcat < /dev/tty
? - person Gerhardh   schedule 09.11.2018