我正在尝试编写一个接受键盘输入的程序,并将输出放在屏幕上,但就好像它是一个串行端口。我不确定这是否可行。我当前的串行端口代码是:
int fd;
char *portname;
char buf[255];
struct termios tty;
portname = "/dev/ttyUSB0";
// opening serial port
fd = open(portname, O_RDWR | O_NOCTYY | O_SYNC );
//writing to serial port
write (fd, "hello!\n", 7);
//Reading from serial port
read (fd, buf, 255)
那么,有可能不是将portname设置为/ dev / ttyUSB0而是将其设置为其他东西(例如/ dev / stdin?)然后获得完全相同的UART功能,但键盘设置为输入,屏幕作为输出?
感谢您的帮助。
答案 0 :(得分:1)
UNIX / Linux设置stdin(fd 0),stdout(fd 1)和stderr(fd 2)已经打开终端(无论是带有真实硬件终端,虚拟控制台还是图形终端的串行线)你的键盘和屏幕都是连接到。它可用于termio控制,并且作为特殊设备文件名/dev/tty
,termios例程termios(3) man page对已经打开的fild描述符进行操作,这允许获取终端驱动程序属性,关闭规范模式以及稍后重置程序结束时的值。
您只需正常读取/写入POSIX中的所有文件,无论是串行线路,磁盘,终端仿真器是否被抽象出来,都是由OS内核进行I / O的进程。 / p>