当前位置: 技术问答>linux和unix
串口读数据错误,返回-1,即Operation not permitted
来源: 互联网 发布时间:2016-04-28
本文导语: 我写了个串口应用程序,其串口是usb虚拟成的串口,驱动为linux下的源代码cdc_acm.c实现的。 现在可以实现写数据,但读不到从单片机返回的数据, 其中单片机发送数据是没有问题的,驱动应该没问题,应该...
我写了个串口应用程序,其串口是usb虚拟成的串口,驱动为linux下的源代码cdc_acm.c实现的。
现在可以实现写数据,但读不到从单片机返回的数据,
其中单片机发送数据是没有问题的,驱动应该没问题,应该是串口应用程序的问题,请大家指导一下!
串口的设置是:
ptty->ntm.c_cflag = CS8 | CLOCAL | CREAD;
ptty->ntm.c_iflag = IGNPAR;
ptty->ntm.c_oflag = 0;
ptty->ntm.c_cflag |= B38400;
ptty->ntm.c_cflag &= ~PARENB;
ptty->ntm.c_iflag &= ~INPCK;
ptty->ntm.c_cflag &= ~CSTOPB;
ptty->ntm.c_lflag = 0;
ptty->ntm.c_cc[VTIME] = 0; // inter-character timer unused
ptty->ntm.c_cc[VMIN] = 1; // blocking read until 1 chars received
tcflush (ptty->fd, TCIFLUSH);
tcsetattr (ptty->fd, TCSANOW, &ptty->ntm)
发送与接受代码:
unsigned char tty_test[32];
ret = write (ptty->fd, tty_test, 32); //写入数据后,单片机就能返回数据255
if (ret > 0)
{
i = read (ptty->fd, &recv_status, 1);
}
结果是:i=-1
现在可以实现写数据,但读不到从单片机返回的数据,
其中单片机发送数据是没有问题的,驱动应该没问题,应该是串口应用程序的问题,请大家指导一下!
串口的设置是:
ptty->ntm.c_cflag = CS8 | CLOCAL | CREAD;
ptty->ntm.c_iflag = IGNPAR;
ptty->ntm.c_oflag = 0;
ptty->ntm.c_cflag |= B38400;
ptty->ntm.c_cflag &= ~PARENB;
ptty->ntm.c_iflag &= ~INPCK;
ptty->ntm.c_cflag &= ~CSTOPB;
ptty->ntm.c_lflag = 0;
ptty->ntm.c_cc[VTIME] = 0; // inter-character timer unused
ptty->ntm.c_cc[VMIN] = 1; // blocking read until 1 chars received
tcflush (ptty->fd, TCIFLUSH);
tcsetattr (ptty->fd, TCSANOW, &ptty->ntm)
发送与接受代码:
unsigned char tty_test[32];
ret = write (ptty->fd, tty_test, 32); //写入数据后,单片机就能返回数据255
if (ret > 0)
{
i = read (ptty->fd, &recv_status, 1);
}
结果是:i=-1
|
你在创建描述符时加上用户权限
|
首先确定问题到底是在应用层还是在底层。
建议使用 minicom 作为应用层程序,进行测试。这样,你可以判断出底层有无问题。
建议使用 minicom 作为应用层程序,进行测试。这样,你可以判断出底层有无问题。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。