C串口程序使用键盘和显示器代替串口/dev/ttyUSBX

标签 c linux serial-port tty

我正在尝试编写一个程序,它接受键盘输入并将输出显示在屏幕上,但它就像一个串行端口一样。我不确定这是否可行。我当前的串行端口代码是:

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/

相关文章:

c - 停止客户端服务器程序

c++ - 为什么 NULL 指针在 C 和 C++ 中的定义不同?

iPhone串口错误

linux - 无法让我的 if 在我的 shellscript 中工作

node.js - 生成可执行文件时 Docker-compose EACCESS 错误

c++ - WriteFile() 用于 COM 设备时总是成功,即使没有附加设备,这是否正常?

用于小数据 block 的 c# 串行端口刷新

c - 你如何在cuda中创建一个二维数组

c - <semaphore.h> 和 <sys/sem.h> 的区别

linux - Linux 上的软件声音消除(破坏性干扰)工具?