update
This commit is contained in:
@@ -684,6 +684,21 @@ class AstmMessageService
|
||||
|
||||
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
|
||||
{
|
||||
@@ -712,7 +727,7 @@ class AstmMessageService
|
||||
if (str_starts_with($line, 'H|')) {
|
||||
$f = explode('|', $line);
|
||||
$parsed['header'] = [
|
||||
'sender_name' => $data->alat,
|
||||
'sender_name' => $data->alat ?? ($f[4] ?? 'BD Instrument'),
|
||||
'version_number' => $f[12] ?? 'V1.0',
|
||||
'message_datetime' => $this->astmToDateTime($f[13] ?? null)
|
||||
];
|
||||
@@ -821,9 +836,10 @@ class AstmMessageService
|
||||
$response = $data->rawdt;
|
||||
if ($data->alat == 'BD Mikro 1'){
|
||||
if ($data->no_id != ''){
|
||||
$messages = $this->splitBDAstmMessages($data->rawdt);
|
||||
$assembled = $this->reassembleAstmFrames($data->rawdt);
|
||||
$messages = $this->splitBDAstmMessages($assembled);
|
||||
foreach ($messages as $msg) {
|
||||
$ok = $this->processBDAstmResponse($msg, $data->alat);
|
||||
$ok = $this->processBDAstmResponse($msg, $data);
|
||||
}
|
||||
DataListiner::where('urut', $data->urut)->update([
|
||||
'processed' => $ok ? 1 : 9
|
||||
|
||||
Reference in New Issue
Block a user