首页 > 应用开发 > IT综合 > SIRF binary protocol
写点东西吧,说不定别人有用,sirfIII的芯片,两种指令和数据模式
NEMA
Sirf Binary
[@more@]当你执行了NEMA的转化为sirf格式的指令后,如果用超级终端类的工具会无比郁闷
恢复为nema的指令如下
A0A20018810201010001010105010101000100010001000100012580013AB0B3
大量的0,字符串里0就是结束符,无论后面是什么都不会再继续执行下去了
指令的存储也不要想偷懒,老老实实一个一个byte存吧
我的一段垃圾程序
byte tt[]={0xA0,0xA2,0x00,0x18, //----------------------/*head*/
0x81,0x02, //message id
0x01,0x01, // GGA output interval , has CheckSum?(1/0) (6,7)
0x00,0x01, // GLL (8,9)
0x01,0x01, //GSA (10,11)
0x05,0x01, //GSV
0x01,0x01, //RMC
0x00,0x01, //VTG
0x00,0x01, //MSS
0x00,0x01, //not defined
0x00,0x01, //ZDA
0x00,0x01, //not defined
0x25,0x80, // bitrate ----------- /*payload*/
0x01,0x3A,0xB0,0xB3 /*checksum and end sequence*/
};
unsigned long dwWrite;
int i;
Word checksum=0;
Word bitrate;
//binary protocol bitrate 为 NMEA->sirf binary 设置的波特率
ComboBox2->Text="COM3";
Edit3->Text="38400";
if(Button6->Enabled==true )Button6->Click();
Sleep(1000);
Button5->Click();
//参数设置
for(i=0;i<10;i++)
{
tt[6+2*i]=NMEAMESSAGE[i].interval;
tt[6+2*i+1]=NMEAMESSAGE[i].hasCheckSum;
}
//设置bitrate
bitrate=BR_COMM;
tt[26]=(byte)(bitrate>>8);
tt[27]=(byte)(bitrate&0x00ff);
//
for(i=4;i<28;i++)
{
checksum+=tt[i];
}
checksum&=0x7fff;
tt[28]=(byte)(checksum>>8);
tt[29]=(byte)(checksum&0x00ff);
WriteFile(hComm,&tt,32,&dwWrite,NULL);
this->Caption=IntToStr(dwWrite);
// this->Caption=IntToStr(checksum);
Edit3->Text=IntToStr(bitrate);
if(Button6->Enabled==true )Button6->Click();
Sleep(1000);
Button5->Click();
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7202070/viewspace-929448/ ,如需转载,请注明出处,否则将追究法律责任。