其他分享
首页 > 其他分享> > c – 打开/ dev / ttyUSB0返回“错误的文件描述符”

c – 打开/ dev / ttyUSB0返回“错误的文件描述符”

作者:互联网

我一直在用我的小项目工作一段时间用一些XBee.到目前为止,所有代码都经过测试并在UBUNTU-SERVER 10.04 LTS上工作,利用libftdi库进行串行USB仿真/转换.

在本周初,我尝试在kubuntu 12.04笔记本电脑上使用完全相同的代码,使用相同的libftdi库版本.

问题是,在我的Satellite L755 – 18K笔记本电脑中,每次我现在尝试在/ dev / ttyUSB0打开我的XBee设备时,它都会给我“错误的文件描述符”.从dmesg的日志消息中,设备非常正常地注册,似乎无法将手指放在一边.

这是用于打开设备的代码部分:

cfmakeraw(&tio);
cfsetospeed(&tio,B9600);            // 9600 baud
cfsetispeed(&tio,B9600);            // 9600 baud
tio.c_cc[VMIN]=0;
tio.c_cc[VTIME]=10;

serial_fd=open("/dev/ttyUSB0", O_RDWR);

tcsetattr(serial_fd,TCSANOW,&tio);


if (serial_fd < 0){

    cout << "Error while opening device... " << "errno = " << errno << endl;

    printf("Something went wrong with open()! %s\n", strerror(errno));
    exit(1);
}

任何有关该主题的想法将不胜感激.

问候

解决方法:

查看Frédéric的答案,然后确保您有权打开设备.
我需要root才能在我的系统上访问(可能只获得写入权限)/ dev / ttyUSB0.我认为这是依赖于发行版的,因为在Debian上我能够以普通用户的身份打开它,但我需要在我的Arch发行版上扎根.可以通过查看/ dev / ttyUSBx的组和权限来修复.

编辑:其实我能用一个简单的测试程序得到一个文件描述符,所以在我的情况下它可能是一个特定于布道的问题.

简单的解决方案可能是以root身份运行程序.

标签:c-3,c,serial-port,usbserial,xbee
来源: https://codeday.me/bug/20190826/1728012.html