当前位置: 技术问答>linux和unix
串口设置激活不成功!
来源: 互联网 发布时间:2016-04-24
本文导语: newopt.c_cflag|=(CLOCAL|CREAD);/*设置字符大小*/ newopt.c_cflag&=(~CSIZE);/*设置停止位*/ newopt.c_cflag|=CS8;/*设置数据位*/ newopt.c_cflag|=PARENB; newopt.c_cflag|=PARODD; newopt.c_iflag|=(INPCK|ISTRIP);/*设置奇校验*/ cfsetispeed(&newopt,B115200); cfsetospee...
newopt.c_cflag|=(CLOCAL|CREAD);/*设置字符大小*/
newopt.c_cflag&=(~CSIZE);/*设置停止位*/
newopt.c_cflag|=CS8;/*设置数据位*/
newopt.c_cflag|=PARENB;
newopt.c_cflag|=PARODD;
newopt.c_iflag|=(INPCK|ISTRIP);/*设置奇校验*/
cfsetispeed(&newopt,B115200);
cfsetospeed(&newopt,B115200);/*设置波特率*/
newopt.c_cflag&=(~CSTOPB);/*设置停止1 位*/
newopt.c_cc[VTIME]=1;
newopt.c_cc[VMIN]=0;/*设置最少字符和等待时间*/
tcflush(fd,TCIFLUSH);/*刷新收到的数据但是不读*/
newopt.c_lflag&=(~(ICANON|ECHOE|ISIG));/*模式设置input*/
newopt.c_oflag&=(~OPOST);/*output*/
printf("%dn",fd);
aa=tcsetattr(fd,TCSANOW,&newopt);
printf("%dn",aa);
if(aa==-1)
{
perror("com set error:n");
exit(1);
}
在激活时就出现问题,返回的aa=-1,不成功,下面的错误报告也出现段错误,请高手指点
newopt.c_cflag&=(~CSIZE);/*设置停止位*/
newopt.c_cflag|=CS8;/*设置数据位*/
newopt.c_cflag|=PARENB;
newopt.c_cflag|=PARODD;
newopt.c_iflag|=(INPCK|ISTRIP);/*设置奇校验*/
cfsetispeed(&newopt,B115200);
cfsetospeed(&newopt,B115200);/*设置波特率*/
newopt.c_cflag&=(~CSTOPB);/*设置停止1 位*/
newopt.c_cc[VTIME]=1;
newopt.c_cc[VMIN]=0;/*设置最少字符和等待时间*/
tcflush(fd,TCIFLUSH);/*刷新收到的数据但是不读*/
newopt.c_lflag&=(~(ICANON|ECHOE|ISIG));/*模式设置input*/
newopt.c_oflag&=(~OPOST);/*output*/
printf("%dn",fd);
aa=tcsetattr(fd,TCSANOW,&newopt);
printf("%dn",aa);
if(aa==-1)
{
perror("com set error:n");
exit(1);
}
在激活时就出现问题,返回的aa=-1,不成功,下面的错误报告也出现段错误,请高手指点
|
按照你的说法,也只会返回,不会出现段错误啊。
如果可以的话,把你的程序贴全,而且把错误信息打印出来。
当然你自己也可以用gdb调试。
如果可以的话,把你的程序贴全,而且把错误信息打印出来。
当然你自己也可以用gdb调试。
|
段错误肯定是你操作非法内存了。。。
|
你打开串口了没有?