接收GPS乱码
编写了一个串口通信程序,自发自收都没有问题,但是接收GPS数据却乱码,波特率也按说明说设定为9600,何解?苦恼中,弄了很久,望做过GPS的前辈指导
应该也不上Unicode的问题,我在收时,转换成双字符再显示的,况且自发自收都没有乱码(就是将TX和RX短接)
单步看看没有转成Unicode前,数据是否正确?
GPS就是一个简单的串口,如果硬件没有问题,应该是串口设置、或后继数据处理的问题。
是这样吗?
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);
}
}
}
}
我做過 可是沒遇到這樣的問題
你先用印還沒轉出來Unicode前八
看看有沒有關鍵字$GPDDA 一些數字等~
感覺比較像一開始就不對啦
我的串口是这样设置的,应该没有什么问题啊, 例外,我用的板子应该没有问题,因为在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;
先确认不是GPS模块本身的问题,还有波特率。建议用个串口调试工具测试一下先。