JAVA - GPS 接收器在控制台中发送奇怪/编码的帧

标签 java com gps encode nmea

我有一个 GPS 接收器,它向我发送 NMEA 帧。 我的代码检索这些内容,但形式非常奇怪:

enter image description here

我正在使用PuTTY查看我的接收器收到的 NMEA 帧,没有问题。

enter image description here

编辑 - 这是我正在使用的代码:

public class GPSFrame extends Observable implements Runnable
{
    static Thread myThread=null;
    static BufferedReader br;
    static BufferedWriter wr;
    static PrintWriter out;
    static InputStreamReader isr;
    static OutputStreamWriter osw;
    static java.io.RandomAccessFile port; 


    /**  CONSTRUCTOR **/
    public  GPSFrame()
    {    
         myThread=new Thread(this);
    }

    public void start()
    {
        try 
        {
            port=new java.io.RandomAccessFile("COM5","rwd");
            port.writeBytes("\r\n");
            port.writeBytes("c,31,0,0,5\r\n");
            port.writeBytes("T,1000,1\r\n");
        }
        catch (Exception e){ System.out.println("start "+e.toString()); }
        // The thread start automatically run() method
        myThread.start();
    }

/**********************************************************************************************
 *************************** RETRIEVE GPS FRAMES AND SEND TO SERVEUR **************************
 **********************************************************************************************/
    public void run() 
    {
        System.out.println("lecture COM...");
        // INFINIT LOOP - GPSFrame is always listening for the GPS receptor
        for(;;)
        {
            String st = null;
            try 
            {
                st=port.readLine();
                String[]gpsframe=st.split(",");

                /* IMPORTANT - DON'T FORGET SETCHANGED() or GPSFrame'll never
                 * notify UPDATE() ServerBoard method - We'll never see any changes */
                setChanged();
                notifyObservers(st);

            } 
            catch (IOException e){ System.out.println(e.getMessage()); }
            // Show in console
            System.out.println(st);
        }
    }   
}

编辑:

当我第一次阅读 GPS 帧时 PuTTY 然后启动我的应用程序,我可以在控制台中看到正确的 GPS 帧。但是当我尝试首先使用我的应用程序读取 GPS 帧时,我已经对帧进行了编码。

我不知道为什么我无法检索这种形式的帧。 有人可以指导我解决这个问题吗?

提前感谢您!

问候,

bean 腐

最佳答案

正如我在评论中所说,您没有正确从 COM 端口读取数据。我找到了一个库,可以帮助您了解如何从 com 端口读取数据。代码很旧,但我认为它仍然有帮助: http://javanmea.sourceforge.net/

查看这些类:NMEAReaderCustomReader

还有一个类似的 C++ 线程可能会有所帮助。 Receive NMEA0183 data from COM PORT C++

如果您找到解决方案,请发布。看到它会很有趣:)

关于JAVA - GPS 接收器在控制台中发送奇怪/编码的帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20631411/

相关文章:

Android 模拟器设置 GPS 值

java - 如何使用 java 接口(interface)在外部提供实现

java - 从 DBObject 读取属性

java - 将 java 对象转换为具有已知类型参数的泛型类型

.net - 在 .NET 语言中使用 C++ header

ios - 使用 swift 制作一个获取用户位置的应用程序

Java错误变量

.net - Ruby 可以导入 .NET dll 吗?

c# - 如何从 C# 导入和使用非托管 C++ 类?

geolocation - 下载准确的纬度/经度/高度数据的最佳地点在哪里?