我们在开发板子上安装有GPS导航芯片,并连接室外GPS导航天线,当在Android上运行Google Map导航软件或其他GPS导航检查软件时,通过Logcat都会发现以下错误输出:
D/gps_mstar( 1955): gps fix frquency set to 1 secs
D/gps_mstar( 1955): mode is GPS_POSITION_MODE_STANDALONE
D/gps_mstar( 1955): gps fix frquency set to 1 secs
D/gps_mstar( 1955): freerunner_gps_start: called
D/gps_mstar( 1955): gps_state_start: could not send CMD_START command: ret=-1: Bad file number
请问各位是否遇到过这样的问题,请教一下如何解决。
谢谢!

解决方案 »

  1.   

    涉及的C代码如下:
    static void
    gps_state_start( GpsState*  s )
    {
        char  cmd = CMD_START;
        int   ret;    do { ret=write( s->control[0], &cmd, 1 ); }
        while (ret < 0 && errno == EINTR);    if (ret != 1)
            D("%s: could not send CMD_START command: ret=%d: %s",
              __FUNCTION__, ret, strerror(errno));
    }
    static void
    gps_state_stop( GpsState*  s )
    {
        char  cmd = CMD_STOP;
        int   ret;    do { ret=write( s->control[0], &cmd, 1 ); }
        while (ret < 0 && errno == EINTR);    if (ret != 1)
            D("%s: could not send CMD_STOP command: ret=%d: %s",
              __FUNCTION__, ret, strerror(errno));
    }
      

  2.   

    write做了什么?
    看下:
    http://groups.google.com/group/android-porting/browse_thread/thread/dfa5b87ad0a608a3
      

  3.   

    Bad file number,
    这不是指示你去查看 s->control[0]、s->control[1]的值是否正确么,
    加打印信息,看这两个值,再做判断