• R/O
  • HTTP
  • SSH
  • HTTPS

decode_sci: Commit

scilogプログラムが記録した高速サンプルデータファイル(バイナリ)をcsvテキストに変換するプログラム。


Commit MetaInfo

Revision2fe0a401d6046562a58333e211de25b6840e527d (tree)
Time2017-01-19 12:43:33
AuthorNaoya Takamura <ntaka206@user...>
CommiterNaoya Takamura

Log Message

Ver1.1 scilog Ver1.0.4に対応 記録CH数指定

記録するCH数を変更できるようになったので対応
ヘッダにはCH数を保存していないので、CH数をコマンドラインで指定する必要がある
指定しなかった場合はDefault 6CH

Usage: decode_sci -c CH_NUM inputfile

CH_NUM ファイルに記録されているCH数を指定する 無指定時のDefaultは6

Change Summary

Incremental Difference

--- a/decode_sci.c
+++ b/decode_sci.c
@@ -1,10 +1,19 @@
11 /*
2- decode_sci.c
2+ decode_sci.cgit s
33 sciLogger high sample data decoder
44
55 入力ファイル Little Endian
66 このプログラムが動作するマシンもLittle Endianである必要あり。
77
8+*** Ver1.1
9+* scilog Ver1.0.4に対応
10+* 記録するCH数を変更できるようになったので対応
11+* ヘッダにはCH数を保存していないので、CH数をコマンドラインで指定する必要がある
12+* 指定しなかった場合はDefault 6CH
13+*
14+* Usage: decode_sci -c CH_NUM inputfile
15+* CH_NUM ファイルに記録されているCH数を指定する 無指定時のDefaultは6
16+*
817 Copyright Naoya Takamura@NT systemd design, 2011
918
1019 This program is free software; you can redistribute it and/or modify
@@ -25,11 +34,13 @@
2534 #include <stdlib.h>
2635 #include <string.h>
2736 #include <stdint.h>
37+#include <getopt.h>
2838
29-#define VER "1.0"
39+#define VER "1.1"
3040 #define AD_CH 6
3141 #define AD_SAMPLE 50
3242 #define AD_BYTES 3
43+#define EXE_NAME "decode_sci"
3344
3445 struct _recdata_head_t {
3546 uint16_t year; // UTC
@@ -70,7 +81,7 @@ static int32_t b3_to_long32(unsigned char *ptr)
7081 /*
7182 data decode
7283 */
73-static void read_high(FILE *fp)
84+static void read_high(FILE *fp, int chn)
7485 {
7586 recdata_head d;
7687 int ch, j;
@@ -84,12 +95,12 @@ static void read_high(FILE *fp)
8495 fprintf(stderr, "read_high() Error freq=%d\n", d.freq);
8596 break;
8697 }
87- int data_size = AD_CH * d.freq * AD_BYTES;
98+ int data_size = chn * d.freq * AD_BYTES;
8899 // AD data
89100 if (fread(data, 1, data_size, fp) < 1) break;
90101 for(j = 0; j < d.freq; j++) {
91102 fprintf(stdout, "%02d:%02d:%02d.%03d", d.hour, d.min, d.sec, (1000*j/d.freq));
92- for(ch = 0; ch < AD_CH; ch++) {
103+ for(ch = 0; ch < chn; ch++) {
93104 fprintf(stdout, ",%+07d", b3_to_long32((char*)(data + ch*d.freq*AD_BYTES + j*AD_BYTES)));
94105 }
95106 fprintf(stdout, "\n");
@@ -104,24 +115,36 @@ int main(int argc, char *argv[])
104115 char fname_out[128];
105116 char sz[32];
106117 unsigned char buf[256];
107-
108-//printf("len=%d\n", REC_DATALEN_HEAD);
109-// exit(0);
110-
118+ int result;
119+ int chn = AD_CH;
120+
111121 if (argc == 1) {
112122 printf("sciLogger high sample data converter Ver"VER"\n");
113123 printf("Please set filename.\n");
124+ printf("Usage: \n");
125+ printf(EXE_NAME " -c CH_NUM inputfile\n");
114126 exit(0);
115127 }
116-
117- fpin = fopen(argv[1], "rb");
128+ while((result = getopt(argc, argv, "c:")) != -1) {
129+ switch(result) {
130+ case 'c':
131+ chn = atoi(optarg);
132+ if (chn <= 0 || chn > AD_CH) {
133+ fprintf(stderr, "Invalid CH num %d.\n", chn);
134+ goto errout2;
135+ }
136+ break;
137+ }
138+ }
139+ //
140+ fpin = fopen(argv[optind], "rb");
118141
119142 if (fpin == NULL) {
120143 fprintf(stderr, "Input file open error.\n");
121144 goto errout2;
122145 }
123146 // 出力ファイル名
124- strcpy(fname_out, argv[1]);
147+ strcpy(fname_out, argv[optind]);
125148 strcat(fname_out, ".txt");
126149
127150 fpout = freopen(fname_out, "w", stdout);
@@ -129,7 +152,7 @@ int main(int argc, char *argv[])
129152 fprintf(stderr, "Output file open ERROR. %s\n", fname_out);
130153 goto errout1;
131154 }
132- read_high(fpin);
155+ read_high(fpin, chn);
133156
134157 fclose(fpout);
135158 fclose(fpin);
Show on old repository browser