とある測定機器が出力するファイル(バイナリー形式)から取り出したい日時データがあります。
Stirlingというソフトを使って、ファイルを比較しながら、必要なデータの格納場所は判明しました。
データは
"4A 9D B2 5B"で、2021/05/07 05:59:22,971です。
"0A 4D 14 3F"で、2021/04/19 08:49:15,020です。
structライブラリを用いて変換するコードを書きたいのですが、そもそもどういったルールでデータが変換されているのかわかりません。
何かわかりそうであればご教示頂きたく宜しくお願いします。
他データの参考例
2022/01/24 07:21:00,870 ⇒ 4C E0 53 01
2022/01/24 07:37:08,310 ⇒ 4C E0 53 22
2022/01/24 08:05:16,079 ⇒ 4C 60 54 40
2022/01/24 08:29:01,881 ⇒ 4C 60 D4 05
データの格納場所について範囲の拡大が必要であることがわかりましたので訂正致します。申し訳ありません。
2022/01/24 07:21:00,870 ⇒ 4C E0 53 01 00 00 00 00 60 00 00 00 10 27
2022/01/24 07:37:08,310 ⇒ 4C E0 53 22 00 00 00 00 01 00 00 00 10 27
2022/01/24 08:05:16,079 ⇒ 4C 60 54 40 00 00 00 00 01 00 00 00 10 27
2022/01/24 08:29:01,881 ⇒ 4C 60 D4 05 00 00 00 00 68 01 00 00 10 27
2021/05/07 05:59:22,971 ⇒ 4A 9D B2 5B 00 00 00 00 08 07 00 00 D0 07
2021/04/19 08:49:15,020 ⇒ 0A 4D 14 3F 00 00 00 00 08 07 00 00 D0 07
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
CSVデータ①
取り込みモード,ノーマル
収集開始日時,2021/04/19 08:49:15,020
サンプリング周期,2s
AD積分時間,2ms(500Hz)
データ数,1800
データ圧縮処理,標準
CH設定
チャンネル,,1)TH_CH1,1)TH_CH2,1)TH_CH3,1)TH_CH4,1)TH_CH5,1)TH_CH6,1)TH_CH7,1)TH_CH8,MB_CH1,MB_CH2,MB_CH3,MB_CH4,MB_CH5,MB_CH6,MB_CH7,MB_CH8,MB_CH9,MB_CH10,MB_CH11,MB_CH12,MB_CH13,MB_CH14,MB_CH15,MB_CH16
チャンネル名,,Channel1,温度5ch,温度6ch,温度7ch,Channel5,圧力5ch,圧力6ch,圧力7ch,Modbus1,Modbus2,Modbus3,Modbus4,Modbus5,Modbus6,Modbus7,Modbus8,Modbus9,Modbus10,Modbus11,Modbus12,Modbus13,Modbus14,Modbus15,Modbus16
入力レンジ,,K熱電対,K熱電対,K熱電対,K熱電対,±1V,±1V,±1V,±1V,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16
小数点以下の桁数,,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
単位,,℃,℃,℃,℃,kPa,kPa,kPa,kPa,,,,,,,,,,,,,,,,
測定処理,,OFF,OFF,OFF,OFF,スケーリング,スケーリング,スケーリング,スケーリング,,,,,,,,,,,,,,,,
計測値1,,,,,,1.00000,1.00000,1.00000,1.00000,,,,,,,,,,,,,,,,
計測値2,,,,,,-1.00000,-1.00000,-1.00000,-1.00000,,,,,,,,,,,,,,,,
表示値1,,,,,,101.300,101.300,101.300,101.300,,,,,,,,,,,,,,,,
表示値2,,,,,,-101.300,-101.300,-101.300,-101.300,,,,,,,,,,,,,,,,
アラーム1,,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF
値A,,,,,,,,,,,,,,,,,,,,,,,,,
値B,,,,,,,,,,,,,,,,,,,,,,,,,
オンディレイ時間(s),,,,,,,,,,,,,,,,,,,,,,,,,
アラーム出力先,,,,,,,,,,,,,,,,,,,,,,,,,
アラーム2,,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF
値A,,,,,,,,,,,,,,,,,,,,,,,,,
値B,,,,,,,,,,,,,,,,,,,,,,,,,
オンディレイ時間(s),,,,,,,,,,,,,,,,,,,,,,,,,
アラーム出力先,,,,,,,,,,,,,,,,,,,,,,,,,
アラーム3,,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF
値A,,,,,,,,,,,,,,,,,,,,,,,,,
値B,,,,,,,,,,,,,,,,,,,,,,,,,
オンディレイ時間(s),,,,,,,,,,,,,,,,,,,,,,,,,
アラーム出力先,,,,,,,,,,,,,,,,,,,,,,,,,
アラーム4,,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF
値A,,,,,,,,,,,,,,,,,,,,,,,,,
値B,,,,,,,,,,,,,,,,,,,,,,,,,
オンディレイ時間(s),,,,,,,,,,,,,,,,,,,,,,,,,
アラーム出力先,,,,,,,,,,,,,,,,,,,,,,,,,
#EndHeader,ms,1)TH_CH1,1)TH_CH2,1)TH_CH3,1)TH_CH4,1)TH_CH5,1)TH_CH6,1)TH_CH7,1)TH_CH8,MB_CH1,MB_CH2,MB_CH3,MB_CH4,MB_CH5,MB_CH6,MB_CH7,MB_CH8,MB_CH9,MB_CH10,MB_CH11,MB_CH12,MB_CH13,MB_CH14,MB_CH15,MB_CH16
2021/04/22 17:49:15,380,BURNOUT,19.95,20.00,19.90,27.0,-0.8,-4.9,-2.6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2021/04/22 17:49:17,380,BURNOUT,19.95,20.00,19.85,29.2,-0.8,-4.9,-2.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2021/04/22 17:49:19,380,BURNOUT,19.90,19.95,19.85,29.8,-0.8,-4.9,-2.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
CSVデータ②
取り込みモード,ノーマル
収集開始日時,2021/05/07 05:59:22,971
サンプリング周期,2s
AD積分時間,2ms(500Hz)
データ数,1800
データ圧縮処理,標準
CH設定
チャンネル,,1)TH_CH1,1)TH_CH2,1)TH_CH3,1)TH_CH4,1)TH_CH5,1)TH_CH6,1)TH_CH7,1)TH_CH8,MB_CH1,MB_CH2,MB_CH3,MB_CH4,MB_CH5,MB_CH6,MB_CH7,MB_CH8,MB_CH9,MB_CH10,MB_CH11,MB_CH12,MB_CH13,MB_CH14,MB_CH15,MB_CH16
チャンネル名,,Channel1,温度5ch,温度6ch,温度7ch,Channel5,圧力5ch,圧力6ch,圧力7ch,Modbus1,Modbus2,Modbus3,Modbus4,Modbus5,Modbus6,Modbus7,Modbus8,Modbus9,Modbus10,Modbus11,Modbus12,Modbus13,Modbus14,Modbus15,Modbus16
入力レンジ,,K熱電対,K熱電対,K熱電対,K熱電対,±1V,±1V,±1V,±1V,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16
小数点以下の桁数,,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
単位,,℃,℃,℃,℃,kPa,kPa,kPa,kPa,,,,,,,,,,,,,,,,
測定処理,,OFF,OFF,OFF,OFF,スケーリング,スケーリング,スケーリング,スケーリング,,,,,,,,,,,,,,,,
計測値1,,,,,,1.00000,1.00000,1.00000,1.00000,,,,,,,,,,,,,,,,
計測値2,,,,,,-1.00000,-1.00000,-1.00000,-1.00000,,,,,,,,,,,,,,,,
表示値1,,,,,,101.300,101.300,101.300,101.300,,,,,,,,,,,,,,,,
表示値2,,,,,,-101.300,-101.300,-101.300,-101.300,,,,,,,,,,,,,,,,
アラーム1,,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF
値A,,,,,,,,,,,,,,,,,,,,,,,,,
値B,,,,,,,,,,,,,,,,,,,,,,,,,
オンディレイ時間(s),,,,,,,,,,,,,,,,,,,,,,,,,
アラーム出力先,,,,,,,,,,,,,,,,,,,,,,,,,
アラーム2,,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF
値A,,,,,,,,,,,,,,,,,,,,,,,,,
値B,,,,,,,,,,,,,,,,,,,,,,,,,
オンディレイ時間(s),,,,,,,,,,,,,,,,,,,,,,,,,
アラーム出力先,,,,,,,,,,,,,,,,,,,,,,,,,
アラーム3,,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF
値A,,,,,,,,,,,,,,,,,,,,,,,,,
値B,,,,,,,,,,,,,,,,,,,,,,,,,
オンディレイ時間(s),,,,,,,,,,,,,,,,,,,,,,,,,
アラーム出力先,,,,,,,,,,,,,,,,,,,,,,,,,
アラーム4,,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF
値A,,,,,,,,,,,,,,,,,,,,,,,,,
値B,,,,,,,,,,,,,,,,,,,,,,,,,
オンディレイ時間(s),,,,,,,,,,,,,,,,,,,,,,,,,
アラーム出力先,,,,,,,,,,,,,,,,,,,,,,,,,
#EndHeader,ms,1)TH_CH1,1)TH_CH2,1)TH_CH3,1)TH_CH4,1)TH_CH5,1)TH_CH6,1)TH_CH7,1)TH_CH8,MB_CH1,MB_CH2,MB_CH3,MB_CH4,MB_CH5,MB_CH6,MB_CH7,MB_CH8,MB_CH9,MB_CH10,MB_CH11,MB_CH12,MB_CH13,MB_CH14,MB_CH15,MB_CH16
2021/05/07 09:59:23,329,BURNOUT,212.85,22.75,22.20,34.5,2.7,0.3,0.2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2021/05/07 09:59:25,329,BURNOUT,212.85,22.75,22.20,37.4,2.7,0.4,0.4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2021/05/07 09:59:27,329,BURNOUT,212.85,22.75,22.20,40.2,2.7,0.4,0.4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
データの格納場所について
本データの構成は測定機器情報(ヘッダー部分)+測定結果(数値テーブル部分)で構成されており、今回知りたい日時の情報は測定機器情報に含まれる『収集開始日時』です。
比較しているデータは測定機器情報が収集開始日時を除いてすべて同じで、Stirlingで比較した際に上述している4Byteのみ異なるため、格納場所が間違っていなことに自信があります。
※測定結果はデータが異なるのでバイナリーデータも違いますが、こちらの数値デーブルはすべて抽出できているので、間違いなく収集開始日時のデータは含まれていません。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
これまでに行ったこと
UNIX時刻で格納されているケースを想定して
ビッグエンディアンorリトルエンディアンで指数値(INT)に変換して、UNIX時刻があっているかどうか。
他の書式指定文字で同様に何パターンか試してみましたが、マッチする組み合わせがありませんでした。
yyyymmddHHMMSSsssの形(10進数)が16進数で格納されているケースを想定して
16進数を10進数に変換した数値が合っているか確認しました。
yymmddHHMMSSの形式などのいくつかのパターンを同様に試してみましたがマッチする組み合わせがありませんでした。

回答1件
あなたの回答
tips
プレビュー