串行数据流上的实时数学

问题描述 投票:0回答:1

我有一个可打印一些数据的硬件GPS:

sudo cat /dev/ttyGPS_Device | grep -a GPRMC

它每半秒左右打印一次,看起来像这样:

$ GPRMC,171450.000,A,4239.245592,N,07349.887355,W,0.000,116.6,150420 ,,, A * 74$ GPRMC,171503.000,A,4239.245592,N,07349.887355,W,0.000,116.6,150420 ,,, A * 73$ GPRMC,171504.000,A,4239.245592,N,07349.887355,W,0.000,116.6,150420 ,,, A * 74

我可以通过以下操作仅过滤纬度和经度:

sudo cat /dev/ttyACM2 | stdbuf -oL grep -a GPRMC | stdbuf -oL cut -d',' -f 4-7 | tr ',' '\t'

而且输出看起来更好:

4239.245592 N 07349.887355 W4239.245592 N 07349.887355 W4239.245592 N 07349.887355 W

我希望能够对数据进行一些数学运算和格式化。具体来说,前导零必须变为“-”,并且两个值都必须乘以100。所需的输出:

42.39245592 N -73.49887355 W42.39245592 N -73.49887355 W42.39245592 N -73.49887355 W

如果使用非bash解决方案,我会好的,但是我更喜欢一个很好的衬板。我用来获取GPS数据的硬件是Ericsson H5321 gw Mobile Broadband Module

bash gps hardware
1个回答
0
投票

使用GNU awk:

| awk '{printf("%.8f %s -%.8f %s\n",$1/100,$2,$3/100,$4)}'

输出:

42.39245592 N -73.49887355 W42.39245592 N -73.49887355 W42.39245592 N -73.49887355 W
© www.soinside.com 2019 - 2024. All rights reserved.