相关疑难解决方法(0)

在 Linux 中如何检查串口是否打开?

如何使用 Posix/C 函数检查 Linux 中的串行端口是否已打开?我想检查串口的状态来检查串口是否打开。

我想知道哪些方法适用于:

  1. 检查文件描述符以查看串行端口是否打开以及

  2. 检查串口文件名,查看串口是否打开,下例中为“/dev/ttyUSB0”

——

// This code is for example purposes only

int open_port()
{
  int fd;

  fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
  if (fd < 0)
  {
    perror("open_port: Unable to open /dev/ttyf1 - ");
  }

  return fd;
} 
Run Code Online (Sandbox Code Playgroud)

我想有一种“标准”的方式来做到这一点,这就是我想要达到的。

c linux serial-port

5
推荐指数
1
解决办法
6570
查看次数

锁定Linux串行端口

我有一个问题,我正试图解决Linux中的串口问题.我能够打开,读取和关闭端口就好了.但是,我想确保我是唯一一个在任何时候从港口读/写的人.

在我进行open()函数调用之后,我认为这已经为我完成了.但是,我可以在程序的同一个端口上多次调用open().我也可以有两个线程同时从同一个端口读取.

我尝试用flock()解决这个问题,但我仍然遇到了同样的问题.是因为两个系统调用都来自同一个pid,即使每组打开和读取都涉及不同的文件描述符?对于记录,两个open()调用都返回有效的文件描述符.

结果,我想知道是否有任何方法可以解决问题.从我的程序的角度来看,如果两次调用open()在同一个端口上成功,那么这并不是什么大问题,因为程序员应该知道它们造成的欢闹.但是,我只想确保当我打开一个端口时,我是唯一可以访问它的进程.

谢谢您的帮助.

c linux locking serial-port

4
推荐指数
1
解决办法
6591
查看次数

标签 统计

c ×2

linux ×2

serial-port ×2

locking ×1