-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstandard_scale.php
73 lines (63 loc) · 1.5 KB
/
standard_scale.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
/*
* US,GS,+ 7.14 kg
*US,GS,+ 27.26kg
*ST,GS,+ 0 g
*US,GS,+ 23550 g
*ST,GS,+ 0.00lb
*US,GS,+ 61.36lb
*ST,GS,+ 0.0oz
*US,GS,+ 1071.0oz
**/
$tmpl = "<?xml version='1.0' encoding='UTF-8' ?>" .
"<monitor>" .
"<Devices>" .
"<item>" .
"<Name>D19</Name>" .
"<Entries>" .
"<item>" .
"<Unit>KG</Unit>" .
"<ID>20</ID>" .
"<Value>[#0.000#]</Value>" . // UNSTABLE, NO_CONNECTION, PORT_BUSSY
"<Name>ElectronicScale1</Name>" .
"</item>" .
"</Entries>" .
"</item>" .
"</Devices>" .
"</monitor>";
//define ('DEVICE', '/dev/ttyUSB0');
define ('DEVICE', '/dev/ttyS0');
clearstatcache();
$fp = fopen(DEVICE,'r');
//stream_set_blocking($fp, 0);
$value = $res = "";
$cnt = 0;
// търсим 2 последователни равни стринга или стабилно състояние /всеки 2-ри 3 празен стринг/
while ($cnt<1) {
$res = trim(fgets($fp));
if (!empty(trim($res))) { //echo ($res . "\n");
if ($value == $res || (true === strpos($res, "ST,GS"))) {
$cnt++;
} else {
$value = $res;
}
}
}
fclose($fp);
$valueArr = explode (' ', $value);
$err = true;
$weight = 0;
foreach ($valueArr as $value) {
$value = str_replace('kg', '', $value, $cnt);
if (is_numeric($value)) {
$weight = $value; //echo($weight); die;
}
if ($cnt > 0) {
$err = false;
}
}
if (!$err) {
$tmpl = str_replace('[#0.000#]', $weight, $tmpl);
} else {
$tmpl = str_replace('[#0.000#]', 'PORT_BUSSY', $tmpl);
}