接收GPS乱码

sabrinatang   2009-10-22 09:54 楼主
接收GPS乱码

编写了一个串口通信程序,自发自收都没有问题,但是接收GPS数据却乱码,波特率也按说明说设定为9600,何解?苦恼中,弄了很久,望做过GPS的前辈指导

回复评论 (7)

应该也不上Unicode的问题,我在收时,转换成双字符再显示的,况且自发自收都没有乱码(就是将TX和RX短接)
点赞  2009-10-22 09:56
单步看看没有转成Unicode前,数据是否正确?

GPS就是一个简单的串口,如果硬件没有问题,应该是串口设置、或后继数据处理的问题。
点赞  2009-10-22 10:01
是这样吗?
        private void pd1_Received(object sender, PortData.PortDataReciveEventArgs e)
        {            
            byte[] GPRS_CATCH = e.Data;
            if (GPRS_CATCH.Length != 0)
            {
                byte[] GPRS_CATCH2 = new byte[GPRS_CATCH.Length + 1];

                if (GPRS_CATCH_Delay != 0)
                {
                    GPRS_CATCH2[0] = GPRS_CATCH_Delay;
                    GPRS_CATCH.CopyTo(GPRS_CATCH2, 1);
                    GPRS_CATCH_Delay = 0;
                    try
                    {

                        GPRSBuffer += ASCIIEncoding.Default.GetString(GPRS_CATCH2, 0, GPRS_CATCH2.Length);

                    }
                    catch
                    {
                        GPRS_CATCH_Delay = GPRS_CATCH2[GPRS_CATCH2.Length - 1];
                        try
                        {
                            GPRSBuffer += ASCIIEncoding.Default.GetString(GPRS_CATCH2, 0, GPRS_CATCH2.Length - 1);
                        }

                        catch
                        {
                            /////////////////////////察看错误信息//////////////////////
                            string xxe = "";
                            for (int bt = 0; bt <= GPRS_CATCH2.Length - 1; bt++)
                            {
                                xxe += GPRS_CATCH2[bt].ToString();
                                xxe += ",";
                            }
                            //////////////////////////////////////////////////////////
                            MessageBox.Show("接收信息转换出现错误1!" + xxe);
                        }

                    }
                }
}
点赞  2009-10-22 10:04
我做過  可是沒遇到這樣的問題
你先用印還沒轉出來Unicode前八
看看有沒有關鍵字$GPDDA 一些數字等~
感覺比較像一開始就不對啦
点赞  2009-10-22 10:12
我的串口是这样设置的,应该没有什么问题啊, 例外,我用的板子应该没有问题,因为在Linux下收gps没有问题      
        dcb.BaudRate = 9600;                       
        dcb.ByteSize = 8;
        dcb.Parity = NOPARITY;
        dcb.StopBits = ONESTOPBIT;       
        dcb.fParity = FALSE;                                                                dcb.fBinary = TRUE;
        dcb.fDtrControl = 0;                                                       
        dcb.fRtsControl = 0;
        dcb.fOutX = 0;
        dcb.fInX = 0;
        dcb.fTXContinueOnXoff = 0;
点赞  2009-10-22 10:48
先确认不是GPS模块本身的问题,还有波特率。建议用个串口调试工具测试一下先。
点赞  2009-10-22 12:14

8楼 quq 

用CE下的串口调试助手试一下,应该不是什么大问题
点赞  2009-10-22 15:18
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复