1.什么是gps1083协议?
NMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置,速度等信息通过串口传送到PC机,PDA等设备。
NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机,GPS数据处理软件,导航软件都遵守或者至少兼容这个协议。
不过,也有少数厂商的设备使用自行约定的协议比如GARMIN的GPS设备(部分GARMIN设备也可以输出兼容NMEA-0183协议的数据)。软件方面,我们熟知的Google Earth目前也不支持NMEA-0183协议,但Google Earth已经声明会尽快实现对NMEA-0183协议的兼容。
2.NMEA-0183协议语句字段组成。
NMEA-0183协议定义的语句非常多,但是常用的或者兼容性最广的语句只有$GPGGA,$GPGSA,$GPGSV,$GPRMC,$GPVTC,$GPGLL等。
话不多说,直接开始看代码,前提是先了解0183协议语句的字段定义解释。
代码结构如图:
关键代码展示:
gps0183.js
module.exports = function (buf) {
//命令列表
let cmds = [];
//命令拾取状态
let pick = 0;
//命令行分离
buf.forEach(
(v, i, a) => {
console.log (String.fromCharCode(v))
switch (v) {
//检测*
case 42: {
// cmds[cmds.length - 1]&&(cmds[cmds.length - 1].cc = String.fromCharCode(a[i + 1]) + String.fromCharCode(a[i + 2]));
cm