update
This commit is contained in:
@@ -684,6 +684,21 @@ class AstmMessageService
|
|||||||
|
|
||||||
return $messages;
|
return $messages;
|
||||||
}
|
}
|
||||||
|
protected function reassembleAstmFrames(string $raw): string
|
||||||
|
{
|
||||||
|
$buffer = '';
|
||||||
|
$frames = preg_split('/\x02\d/', $raw); // STX + sequence number
|
||||||
|
|
||||||
|
foreach ($frames as $frame) {
|
||||||
|
// buang ETX, checksum, EOT
|
||||||
|
$frame = preg_replace('/\x03.*$/s', '', $frame);
|
||||||
|
$frame = preg_replace('/\x04/', '', $frame);
|
||||||
|
|
||||||
|
$buffer .= $frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
return trim($buffer);
|
||||||
|
}
|
||||||
|
|
||||||
protected function processBDAstmResponse(string $raw, $data): bool
|
protected function processBDAstmResponse(string $raw, $data): bool
|
||||||
{
|
{
|
||||||
@@ -712,7 +727,7 @@ class AstmMessageService
|
|||||||
if (str_starts_with($line, 'H|')) {
|
if (str_starts_with($line, 'H|')) {
|
||||||
$f = explode('|', $line);
|
$f = explode('|', $line);
|
||||||
$parsed['header'] = [
|
$parsed['header'] = [
|
||||||
'sender_name' => $data->alat,
|
'sender_name' => $data->alat ?? ($f[4] ?? 'BD Instrument'),
|
||||||
'version_number' => $f[12] ?? 'V1.0',
|
'version_number' => $f[12] ?? 'V1.0',
|
||||||
'message_datetime' => $this->astmToDateTime($f[13] ?? null)
|
'message_datetime' => $this->astmToDateTime($f[13] ?? null)
|
||||||
];
|
];
|
||||||
@@ -821,9 +836,10 @@ class AstmMessageService
|
|||||||
$response = $data->rawdt;
|
$response = $data->rawdt;
|
||||||
if ($data->alat == 'BD Mikro 1'){
|
if ($data->alat == 'BD Mikro 1'){
|
||||||
if ($data->no_id != ''){
|
if ($data->no_id != ''){
|
||||||
$messages = $this->splitBDAstmMessages($data->rawdt);
|
$assembled = $this->reassembleAstmFrames($data->rawdt);
|
||||||
|
$messages = $this->splitBDAstmMessages($assembled);
|
||||||
foreach ($messages as $msg) {
|
foreach ($messages as $msg) {
|
||||||
$ok = $this->processBDAstmResponse($msg, $data->alat);
|
$ok = $this->processBDAstmResponse($msg, $data);
|
||||||
}
|
}
|
||||||
DataListiner::where('urut', $data->urut)->update([
|
DataListiner::where('urut', $data->urut)->update([
|
||||||
'processed' => $ok ? 1 : 9
|
'processed' => $ok ? 1 : 9
|
||||||
|
|||||||
Reference in New Issue
Block a user