本人是Linux新手,写了一个驱动传感器接受数据的程序,在电脑里正常运行,到了板子里编译成功后却无法执行。经调试后发现是程序找不到文件/dev/ttyACM0。部分程序代码如下
void openport(const char* port_name )
{
laser_fd = open( port_name, O_RDWR | O_NONBLOCK | O_NOCTTY, 777 );
cout<<"laser_fd = "<<laser_fd<<endl;
read_buf_start = 0;
read_buf_end = 0;
if( laser_fd == -1 ){
printf("error code : %d\n",errno);
}
lockwrite(laser_fd,1);
//USB串口设置
struct termios newtio;
memset(&newtio.c_cc, 0, sizeof( newtio.c_cc) );
newtio.c_cflag = CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
newtio.c_lflag = 0;
.........................
其中port_name在main里面定义const char* port_name = "/dev/ttyACM0";
程序在板子里执行后显示
linaro@linaro-ubuntu-desktop:~$ cd laser/
linaro@linaro-ubuntu-desktop:~/laser$ ./laser
laser_fd = -1
error code:6
再查一下errno.h的定义为
#define ENXIO 6 /* No such device or address */
然后我再检查了一下发现有这个设备
linaro@linaro-ubuntu-desktop:/dev$ ls ttyACM0 -l
crwxrwxrwx 1 root dialout 166, 0 Jan 1 08:22 ttyACM0
现在我是莫名其妙彻底没辙了,希望高手指点
板子上的系统是12.04
|