您尚未登录。

楼主 #1 2018-03-20 18:52:45

zhen8838
会员
注册时间: 2018-01-19
已发帖子: 32
积分: 32

求助!同一程序,使用不同终端软件去执行结果不同。

1.问题描述
  我在qt中写了一个程序,在v3s中读取gps数据并对其进行处理。我在qt上已经搭建好了交叉编译环境以及目标板配置。并且之前测试了几个小程序,都可以点击运行并且在qt的输出栏中查看程序输出。
  但是这个程序有所区别,我在qt中执行会出现如下现象
Deepin_Scrot_0544.png
  然后我用普通ssh软件登录进去之后,执行该程序,是这个结果是
20180320184401.png

现在发现问题是检测打开的文件是否是串口时发生错误。
  接下来我找到了出错的代码段:

int UART_Open(int fd,char* port)
{

    fd = open( port, O_RDWR|O_NOCTTY|O_NDELAY);//非阻塞,读写,无流控
    if (FALSE == fd)
    {
        perror("Can't Open Serial Port");
        return(FALSE);
    }
    //恢复串口为阻塞状态
    if(fcntl(fd, F_SETFL, 0) < 0)
    {
        printf("fcntl failed!\n");
        return(FALSE);
    }
    else
    {
        printf("fcntl=%d\n",fcntl(fd, F_SETFL,0));
    }
    //测试是否为终端设备
    if(0 == isatty(STDIN_FILENO))//**********此处为出错代码段**************
    {
        printf("standard input is not a terminal device\n");
        return(FALSE);
    }
    else
    {
        printf("isatty success!\n");
    }
    printf("fd->open=%d\n",fd);
    return fd;
}

目前我的程序就是主程序进入后立即打开串口,我实在想不通为何用qt启动和别的ssh软件登录启动会导致isatty函数返回值出现不同?请大家不吝赐教。
以下是我的qt远程主机配置
Deepin_Scrot_0544.png

离线

楼主 #6 2018-03-20 21:22:25

zhen8838
会员
注册时间: 2018-01-19
已发帖子: 32
积分: 32

Re: 求助!同一程序,使用不同终端软件去执行结果不同。

晕哥 说:

这里写这些吗?我写了感觉好像没有用
Deepin_Scrot_0544.png
我发现我这个5.10版本好像没有run in terminal 这个选项,
Deepin_Scrot_0544.png
难道是要设置什么参数吗。我测试别的代码还是没啥问题。。

最近编辑记录 zhen8838 (2018-03-20 21:25:44)

离线

楼主 #8 2018-03-20 21:34:41

zhen8838
会员
注册时间: 2018-01-19
已发帖子: 32
积分: 32

Re: 求助!同一程序,使用不同终端软件去执行结果不同。

晕哥 说:

那应该界面上还有一个 Terminal 的参数可以设置才对

这个好像没看到。。
Deepin_Scrot_0544.png

离线

楼主 #11 2018-03-20 22:13:18

zhen8838
会员
注册时间: 2018-01-19
已发帖子: 32
积分: 32

Re: 求助!同一程序,使用不同终端软件去执行结果不同。

好的,谢谢晕哥的解答。我再去找找是否有其他可配置的选项。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn