/ dev / ttyS0在ubuntu 12.04 beta中无法打开

时间:2012-03-23 13:25:03

标签: ubuntu serial-port

我正在使用ubuntu 12.04测试版。 我假设minicom在/ dev / ttyS0上正常工作(但putty没有)。 我在C代码中控制端口,它在ubuntu 11.10上正常工作:

fd = open(p_ttys_parms->device, O_RDWR | O_NOCTTY | O_NDELAY);
if(fd < 0)
{
    printf("ERROR: cannot open device %s\n", p_ttys_parms->device);
    return 0;
}

但在12.04测试版中,我获得了fd&lt; 0并在printf之后退出。 有没有人经历过同样的事情并以某种方式取得成功?

2 个答案:

答案 0 :(得分:7)

您应该做的第一件事是检查errno的值。 open调用如果返回-1,则会将errno设置为指示实际问题的值。


根据您的评论Permission denied并且您的程序在sudo下运行时,它可能是/dev/ttyS0设备文件的权限问题。

我在Debian 6下遇到了类似的问题:

pax> ls -al /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 Mar 23 21:00 /dev/ttyS0
pax> echo xyzzy >/dev/ttyS0
bash: /dev/ttyS0: Permission denied

您可能会发现需要将您的用户添加到dialout组(或其他组,具体取决于Ubuntu偏离我心爱的Debian的程度)才能被允许访问:

pax> id -Gn
pax cdrom floppy audio dip video plugdev netdev bluetooth scanner

pax> sudo adduser pax dialout
[sudo] password for pax: 
Adding user pax to group dialout
Done.

<< Restart done here to ensure new group picked up >>

pax> id -Gn
pax dialout cdrom floppy audio dip video plugdev netdev bluetooth scanner

答案 1 :(得分:1)

我使用以下命令来设置perminssion(我正在使用/dev/ttyUSB0)。

sudo chmod 0777 /dev/ttyUSB0 

当我执行命令时:

 AvailableSerialPorts: {'/dev/ttyUSB0'}
       JarFileVersion: 'Version 2.11.0'
ObjectConstructorName: {'serial('/dev/ttyUSB0');'}
          SerialPorts: {'/dev/ttyUSB0'}

而且,我已经使用root权限(在终端中)打开了matlab。

sudo /usr/local/MATLAB/R2010b/bin/matlab