我正在尝试编写一个程序,它接受键盘输入并将输出显示在屏幕上,但它就像一个串行端口一样。我不确定这是否可行。我当前的串行端口代码是:
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)
那么,是否有可能不是将端口名设置为/dev/ttyUSB0,而是将其设置为其他东西(例如/dev/stdin?),然后获得完全相同的 UART 功能,但键盘设置为输入,屏幕设置为输出?
感谢您的帮助。
最佳答案
UNIX/Linux 设置 stdin (fd 0), stdout (fd 1) 和 stderr (fd 2) 已经打开到终端(无论是与真实硬件终端、虚拟控制台或图形终端的串行线路)你的键盘和屏幕是连接到。它可用于 termio 控制并作为特殊设备文件名 /dev/tty
termios 例程 termios(3) man page对已经打开的字段描述符进行操作,这允许获取终端驱动程序属性、关闭规范模式并稍后在程序结束时重置值。
您只需像往常一样读/写,在 POSIX 中一切都是文件,无论是串行线、磁盘、终端仿真器都被抽象出来,由 OS 内核执行 I/O 的进程。
关于C串口程序使用键盘和显示器代替串口/dev/ttyUSBX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24364224/