如何通过php中的ASCI符号获取车辆状态

时间:2017-10-06 06:58:25

标签: php gps tracking

我正在终点处进行跟踪项目。我卡住了。我有一些ASCII数据,我想转换该数据,并希望获得车辆状态。 我从GPS追踪设备获得的数据。

* HQ,1700082911,V1,084938,A,2304.5102,N,07231.5528,E,003.7,179.11,270917,FFFFFBFF#

现在我从这个脚本中得到了我需要的一切。但根据设备文档说明,我无法找到车辆状态。上面的数据中有一个ASCII代码字符串 FFFFFBFF ,对于下面我提到的文件说。

vehicle_status(FFFFFBFF):车辆状态,4个字节,表示车辆运行状态,附件状态或报警状态等.ASCII符号表示状态,以下是每个位的定义,Bit = 0意味着活跃。

根据这条指示,他们给了我一张桌子。我不能在这里画一张桌子,所以我附上了一个屏幕截图GPS tracking device document instruction here to get vehicle status

希望所以你理解我的问题我有一个字符串FFFFFBFF#这是我要转换它的ASCII。

1 个答案:

答案 0 :(得分:0)

此代码提取位并将这些位与您给出的表进行匹配。我只填写了一些信息作为例子。

<?php

$hex = 'FFFFFBFF';

$stati = [
    // byte nr
    0 => [
        // byte 1
        0 => 'Tempearature alarm',
        1 => 'Password error alarm',
        2 => 'GPRS error alarm',
        3 => 'Turn off engine',
        4 => 'Power down alarm',
        5 => 'High triggered sensor 1 is high',
        6 => 'High triggered sensor 2 is high',
        7 => 'Low triggered sensor 1 is GND',
    ],
    1 => [
        // byte 2
        0 => 'GPS fault alarm',
        1 => 'Battery low alarm',
        2 => 'nop',
        3 => 'Use battery backup',
        4 => 'Battery removed',
        5 => 'No GPS antenna',
        6 => 'GPS antenna shot',
        7 => 'Low triggered sensor 2 is GND',
    ],
    2 => [
        // byte 3
        0 => 'Door open',
        1 => 'Arm',
        2 => 'ACC off',
        3 => 'nop',
        4 => 'nop',
        5 => 'Engine start',
        6 => 'nop',
        7 => 'Over speed',
    ],
    3 => [
        // byte 4
        0 => 'Shock alarm',
        1 => 'SOS alarm',
        2 => 'Over alarm',
        3 => 'Start engine alarm',
        4 => 'Enter Geo-fence alarm',
        5 => 'No GPS antenna',
        6 => 'GPS antenna shot',
        7 => 'Break Geo-fence alarm',
    ],
];

foreach (str_split($hex, 2) as $byte_nr => $byte) {

    $bits = str_pad(base_convert($byte, 16, 2), 8, '0', STR_PAD_LEFT);
    foreach (str_split($bits) as $bit_nr => $bit) {

        if ($bit == 0) {
            echo $stati[$byte_nr][$bit_nr].PHP_EOL; // echos "Engine start"
        }
    }
}