编程界面
使用编程界面菜单可显示和设定配置并对配置发出命令。编程界面允许简单的HTTP脚本,以供浏览器使用或集成到其它具有Web功能的平台中。您可以在下面找到有关支持的命令和命令结构的附加信息。
如何使用编程命令
使用编程界面命令,必须具备以下条件:
- TCP/IP链路中的一个GNSS接收机。这可以是以太网连接,也可以是串口上的PPP连接。
- 可通过TCP/IP链路将HTTP请求发送到GNSS接收机的一台电脑。如果Web浏览器可以用GNSS接收机的Web界面进行通讯,则可确保此方式可用。
- 允许发送CGI请求并接收响应的一种编程工具。在大多数Unix/Linux系统中,这可以通过命令行实用程序perl或curl实现。
编程命令必须编码为URL或CGI请求。这需要汇总几条信息。
- 所需的协议(http或https)。
- 目标系统的DNS名称或IP地址。
- 形成命令的动词、对象和参数。
URL的格式为:
http://SystemName/prog/Verb?Object¶m=value¶m=value...
如果任何参数值中有特殊字符(例如空格或&符),则必须用%hex格式化对其进行编码。例如,必须用序列%20替换每个空格。
确定了URL之后,将用CGI传输工具把包含编码命令的“GET”请求发送到目标GNSS接收机。GNSS接收机将通过五种响应类型中的一种,将文档发送回来作为响应。几乎所有响应都是简单的ASCII文本,然后可以根据应用要求进行显示或解析。
上一段落的一个例外是将文件上传到GNSS接收机的情况。上传命令使用的是“POST”请求,而不是“GET”请求。详细信息,请参看上传文件。
使用Curl
测试编程命令的一种简单方法是将URLs手动输入到curl(一种常用的命令行工具)中。这里是一个显示用法的Unix会晤样本。
$ curl 'http://Alloy.Trimble.com/prog/show?serialNumber'
SerialNumber sn=60350239BF$ curl 'http://Alloy.Trimble.com/prog/show?gpstime'
GpsTime gpsweek=1244 weekseconds=437597$ curl 'http://Alloy.Trimble.com/prog/badcommand?abc'
ERROR: invalid verb 'badcommand'$ curl 'http://Alloy.Trimble.com/prog/set?elevationmask&mask=10'
OK: ElevationMask mask=10$ curl 'http://Alloy.Trimble.com/prog/show?position'
<Show Position>
GpsWeek 1244
WeekSeconds 498154.0
Latitude 37.3891271874 deg
Longitude -122.0368443968 deg
Altitude -4.898 meters....
<end of Show Position>
可以将多个curl命令组装到一个shell脚本中,以实现远程控制的基本形式。
如果GNSS接收机启用了安全功能,则需要用帐户名和密码才能使用编程界面命令。Curl接收‘-u’命令行参数中的内容。例如:
$ curl -u admin:adminpw 'http://Alloy.trimble.com/prog/show?serialNumber'
SerialNumber sn=60350239BF
然后,用帐户名“admin”和密码“adminpw”提交请求。
用Curl下载二进制文件只需要将输出指定到一个文件。
$ path=/Internal
$ name=60350239BF200906181935.T01
$ curl "http://Alloy/prog/download?file&path=$path/$name" > $name
$
请注意 - 在这种情况下没有命令行响应。如果发生错误(例如,如果GNSS接收机中不存在文件),则该消息将最终出现在该文件中。
文件上传命令需要curl对带有二进制附件的POST请求进行格式化。Curl用一个-F选项来实现:
$ f=/tmp/fina_V401.timg
$ curl 'http://Alloy/prog/upload?firmwareFile' -F firmwareFile=@$f
该命令会将新固件影像文件上传到GNSS接收机,并触发新固件的安装。
使用Perl
Perl是一种功能强大的脚本语言。该语言带有许多库程序包,使其可用于自动执行许多复杂的任务。它也可用在大多数操作系统中,非常适合跨平台的一些应用。
使用编程接口命令,Perl可以轻松地用于控制GNSS接收机。一种简单的方法是使用LWP - Perl中用于WWW访问的库。在Linux中,将man LWP用于概述文档。这是一个功能强大且复杂的程序包,在此处无法记录文档。一些样本程序显示了所需的基本技巧。第一个显示了如何对基本URL请求进行编码:
#!/usr/bin/perl -w
use strict;
use LWP::Simple;print get( "http://fbtc/prog/show?systemname" ) ;
print get( "http://fbtc/prog/show?gpstime" ) ;
print get( "http://fbtc/prog/badCommand?abc" ) ;
print get( "http://fbtc/prog/set?elevationMask&mask=10" ) ;
print get( "http://fbtc/prog/show?position" ) ;
运行该程序将产生以下输出:
SystemName name=NewName
GpsTime gpsweek=1244 weekseconds=498371
ERROR: Invalid verb 'badCommand'
OK: ElevationMask mask=10
<Show Position>
GpsWeek 1244
WeekSeconds 498373.2
Latitude 37.3891241306 deg
Longitude -122.0368464236 deg
Altitude -4.078 meters
....
<end of Show Position>
与只将一个get()请求重定指向一个文件相比较,文件下载要稍微复杂些,这主要是由于文件可以任意大的缘故。更复杂的语法将允许Perl下载并将结果直接放入文件中。
#!/usr/bin/perl -w
use LWP::UserAgent;
my $f = '60350239BF200906181935.T01' ;
my $path = '/Internal' ;my $ua = LWP::UserAgent->new ;
my $req = HTTP::Request->new(GET=>
"http://Alloy/prog/download?file&path=$path/$f" ) ;my $res = $ua->request( $req, $f ) ;
运行此命令时,GNSS接收机上记录的文件将复制到本地电脑中的一个同名文件中。请注意 - 标准输出中不出现文本。
文件上传使用类似的技巧。
#!/usr/bin/perl -w
use strict ;
use HTTP::Request::Common qw(POST) ;
use LWP::UserAgent ;print "OKAY\n" ;
my $fname = '/tmp/fina_V401.timg' ;
my $ua = LWP::UserAgent->new ;
my $command = 'http://fbtc/prog/Upload?FirmwareFile' ;
my $response = $ua->request( POST( $command ,Content_Type => 'form-data',
Content => [ 'firmwareFile'
=> [ $fname ]
])
) ;print $response->content ;
运行该程序将产生:
OK: 故障安全固件安装开始。
其它技巧
使用其它方法将编程命令传输到目标系统完全可行。例如,C或C++程序直接打开到GNSS接收机的套接字连接,并通过这些通道直接发送请求。这是中高级编程,详细信息不在本文档讨论范围之内。
编程命令列表
以下是编程界面接受的操作-对象(Action-Object)命令的完整列表。单击单个命令会将您带到该命令的特定信息。
- 状态命令
- 卫星命令
- 配置命令
- I/O命令
- 固件命令
状态命令
所有这些命令都将显示来自GNSS接收机的一些信息。这些信息可以是静态项目(例如序列号),也可以是动态项目(例如当前时间或接收机位置)。
| 命令 | 描述 |
|---|---|
| Show SerialNumber(显示序列号) | 返回此GNSS接收机的序列号。 |
| Show UtcTime(显示Utc时间) | 返回当前的UTC日期和时间。 |
| Show GpsTime(显示Gps时间) | 返回当前的GPS周数和时间。 |
| Show Position(显示位置) | 返回当前测量的位置和相关联的值。 |
| Show Voltages(显示电压) | 返回所有电源或电池输入位置的电压。 |
| Show Temperature(显示温度) | 返回GNSS接收机的内部温度。 |
| Show Commands(显示命令) | 返回所有受支持命令的列表。 |
卫星命令
这些命令与卫星跟踪和数据相关联。
| 命令 | 描述 |
|---|---|
| Show TrackingStatus(显示跟踪状态) | 返回所有被跟踪卫星的信息。 |
| Show Tracking(显示跟踪) | 返回信号跟踪设置。 |
| Set Tracking(设置跟踪) | 修改信号跟踪设置。 |
| Show GpsSatControls(显示Gps卫星控制) | 返回所有GPS卫星值的启用/禁用/忽略健康设置。 |
| Set GpsSatControls(设置Gps卫星控制) | 修改GPS卫星的启用/禁用/忽略健康设置。 |
| Show SbasSatControls(显示Sbas卫星控制) | 返回所有SBAS卫星的启用/禁用/忽略健康设置。 |
| Set SbasSatControls(设置Sbas卫星控制) | 修改SBAS卫星的启用/禁用/忽略健康设置。 |
| Show GlonassSatControls(显示Glonass卫星控制) | 返回所有GLONASS卫星的启用/禁用/忽略健康设置。 |
| Set GlonassSatControls(设置Glonass卫星控制) | 修改GLONASS卫星的启用/禁用/忽略健康设置。 |
| Show Ephemeris(显示星历) | 返回GNSS卫星的星历数据。 |
| Show Almanac(显示年历) | 返回GNSS卫星的年历数据。 |
| Show GpsHealth(显示Gps健康) | 返回所有GPS卫星的健康状态。 |
| Show GpsUtcData(显示GpsUtc数据) | 返回从GPS卫星解码的UTC数据。 |
| Show GpsIonoData(显示Gps电离层数据) | 返回从GPS卫星解码的电离层模型数据。 |
| Reset GnssData(重置Gnss数据) | 清除所有解码的GNSS星历和年历数据。 |
配置命令
这些命令显示或修改各种系统功能的状态。
| 命令 | 描述 |
|---|---|
| Reset System(重置系统) | 重新启动(重新引导)GNSS接收机。 |
| Show ReferenceFrequency(显示参考频率) | 返回10MHz参考时钟的当前源。 |
| Set ReferenceFrequency(设置参考频率) | 修改10MHz参考时钟的源。 |
| Show ElevationMask(显示截止高度角) | 返回当前的截止高度角控制设置。 |
| Set ElevationMask(设置截止高度角) | 修改截止高度角控制设置。 |
| Show PdopMask(显示Pdop限制) | 返回当前的PDOP限制控制设置。 |
| Set PdopMask(设置Pdop限制) | 修改PDOP限制控制设置。 |
| Show ClockSteering(显示时钟操纵) | 返回当前的时钟操纵控制设置。 |
| Set ClockSteering(设置时钟操纵) | 修改时钟操纵控制设置。 |
| Show MultipathReject(显示多路径抑制) | 返回当前的多路径抑制控制设置。 |
| Set MultipathReject(设置多路径抑制) | 修改多路径抑制控制设置。 |
| Show PPS(显示PPS) | 返回每秒脉冲控制的当前设置。 |
| Set PPS(设置PPS) | 修改每秒脉冲控制的设置。 |
| Show AntennaTypes(显示天线类型) | 返回受支持天线类型的列表。 |
| Show Antenna Clears(显示天线间隙) | 返回当前的天线规格。 |
| Set Antenna(设置天线) | 修改天线规格 |
输入/输出命令
这些部分显示如何配置输入/输出端口以流式传输数据等。
| 命令 | 描述 |
|---|---|
| Show IoPorts(显示Io端口) | 返回所有I/O端口及其设置的列表 |
| Show IoPort(显示Io端口) | 返回单一I/O端口的设置。 |
| Set IoPort(设置Io端口) | 修改I/O端口的控件。 |
| Delete IoPort(删除Io端口) | 移除TCP/IP端口定义。 |
| Show RefStation(显示参考站) | 返回当前的参考站控制设置。 |
| Set RefStation(设置参考站) | 修改参考站控制设置。 |
| PortParameters(端口参数) | 端口规格参数。 |
| StreamParameters(流参数) | 流规格参数。 |
固件命令
这些命令与GNSS接收机的更新固件相关联。
| 命令 | 描述 |
|---|---|
| Show FirmwareVersion(显示固件版本) | 返回当前正在运行的固件版本。 |
| Show FirmwareWarranty(显示固件保修) | 返回接收机中设置的固件保修日期。 |
| Set FirmwareWarranty(设置固件保修) | 发送选项代码以更新固件保修日期。 |
| Upload FirmwareFile(上传固件文件) | 将新的固件文件加载到接收机。 |