无法在linux中打开串行端口

Unable to open serial port in linux

本文关键字:串行端口 linux      更新时间:2023-10-16

使用fedora 11,

串行类:

/*
     return 1 success 
return -1 device not found
return -2 error while opening the device
return -3 error while getting port parameters
 return -4 Speed (Bauds) not recognized
return -5 error while writing port parameters
return -6 error while writing timeout parameters
*/
`char serialib::Open(const char *Device,const unsigned int Bauds){`
    struct termios options; // Structure with the device's options
    // Open device
    fd = open(Device, O_RDWR | O_NOCTTY | O_NDELAY);            // Open port
    if (fd == -1) return -2;                        // If the device is not open, return -1
    fcntl(fd, F_SETFL, FNDELAY);                    // Open the device in nonblocking mode

[termina]$dmesg|grep-tty控制台[tty0]已启用serial8250:ttyS0在I/O 0x3f8(irq=4)是一个16550Aserial8250:ttyS1在I/O 0x2f8(irq=3)是一个16550A00:07:tttyS0在I/O 0x3f8(irq=4)处为16550A00:08:ttyS1在I/O 0x2f8(irq=3)处为16550A

在我的主程序中,我执行Ret=LS.Open(DEVICE_PORT,4800)
Ret值为-2,这意味着如上所述打开设备时出现错误可能是权限问题吗?我该如何解决这个问题并打开端口,谢谢!

可能是权限问题吗

很有可能。根据您使用的linux,有几个更改权限的选项。

这可能很简单,只需将当前用户添加到休假组即可。或者,您可能需要更改udev规则来设置串行端口的权限。