6490985 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

ふるた技工所(てっこうしょ)

ふるた技工所(てっこうしょ)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

キーワードサーチ

▼キーワード検索

プロフィール

Aちゃん22

Aちゃん22

フリーページ

2013.08.18
XML
カテゴリ:電子工作
既に秋月テスタ METEX M-6000M から読み込んだ測定値を Linux のテキスト・フィルタ・パイプラインで扱えるソフトがある。Ruby で書かれている。「では、自分は C 言語で書いてみるか」と思い作ってみた。C 言語版 M-6000M(ES51986) Linux 接続ソフト(ソースコード) README として公開する。2 条項 BSD ライセンスなので気軽に扱えると思う。

C 言語で書くに当たり、次の機能を盛り込むことにした。
  • パイプラインで扱え、ログ・プロット・判定等はパイプラインの後段に任せる。
  • シリアル通信で発生したエラーを検出し、エラーの場合は測定値を無効として扱う。
  • 仕様外の文字コードを受信した場合は測定値を無効として扱う。
  • M-6000M は測定結果を 2 度送りする。これを比較し一致すれば 1 回の測定値としてまとめる。
  • 通信途絶からの復旧は自動で行う。測定中にシリアル接続を切ったり、レンジ・ノブを OFF にした後レンジを選び直しても、しばらく待てば測定は再開する。
  • 出力フォーマットは自由に設定できる。ns 単位の時刻挿入、科学・工学・LCD 表示通りの数値形式を選べる。
  • M-6000M で測定できる物理量に対応する。Lux, dB, Temp を扱える。
色々と盛りだくさんになった。ソースコード行数は 3000 行を超えて Ruby 版に見られるスマートさは無い。

使用するに当たり一般ユーザーから serial port を使えるようにした方が便利だろう。次の様にして dialout グループにユーザー user_name を入れてシリアルポートのアクセス権限を付与する。

# useradd -G dialout user_name
2017.4.9 追記 useradd command の仕様が変わったため、usermod を使う様にする。操作ミスや不意な仕様変更に備えて、2 つの端末を接続して、一方を管理権限にして置き、修復できるように備えた方が良いだろう。管理権限を維持している端末は、新しくログインしてみて、sudo su 等の管理権限行使などに異常が無いか確かめるまで維持しておく。
# usermod -a -G dialout user_name

ソースコードからビルドするには、次の様に make だけする。

$ make
cc -O2 -Wall -Wuninitialized -Wunused-but-set-parameter -Wunused -Wmissing-parameter-type -Winit-self -Wsequence-point -DVERSION_STRING=\"1.03\" -o m-6000mtxt m-6000mtxt.c -lrt


テスタで Ni-MH 電池電圧測定をしている状況で、試しに実行すると次の様になる。

$ ./m-6000mtxt /dev/ttyUSB0
/dev/ttyUSB0: Timeout.
/dev/ttyUSB0: Reconfigure port.
/dev/ttyUSB0: Send break.
1376762619.573732445 DC 1.263e+0 V
1376762620.473715860 DC 1.264e+0 V
1376762621.373827385 DC 1.263e+0 V
1376762622.274001973 DC 1.263e+0 V
1376762623.173702638 DC 1.264e+0 V
1376762624.073686198 DC 1.263e+0 V
1376762624.973658443 DC 1.264e+0 V
1376762625.872772287 DC 1.263e+0 V
1376762626.772722237 DC 1.263e+0 V
1376762627.672655250 DC 1.263e+0 V
1376762628.572601291 DC 1.263e+0 V
^C./m-6000mtxt: Interrupted.
./m-6000mtxt: Catch signal.


Timeout で始まっているのは M-6000M が RS-232 モードで動いていないためだ。何も通信が無い状態が 7.5 秒経過し、Break を送信して測定開始となっている。

M-6000M(ES51986) の通信フォーマットは少し特殊だ。HL-340 USB-Serial adapter では全く通信出来なかった。良くある "Prolific PL2303" チップを使用した USB-Serial アダプタで通信できた。

え?M-6000M って残り在庫あとわずかなの?





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2017.04.09 20:30:04
コメント(0) | コメントを書く


カレンダー

カテゴリ

サイド自由欄

コメント新着

ご無沙汰してます@ Re[4]:ようやく転職エージェントに会うも - 3 分で終了(04/01) Aちゃん22さんへ かなり昔のことですが、…
Aちゃん22@ Re[3]:ようやく転職エージェントに会うも - 3 分で終了(04/01) ご無沙汰してますさんへ、こんにちは、 N …
ご無沙汰してます@ Re[2]:ようやく転職エージェントに会うも - 3 分で終了(04/01) Aちゃん22さんへ ご返信ありがとうござい…
Aちゃん22@ Re[1]:ようやく転職エージェントに会うも - 3 分で終了(04/01) ご無沙汰してますさん、こんにちは。 たま…
ご無沙汰してます@ Re:ようやく転職エージェントに会うも - 3 分で終了(04/01) 更新を楽しみにしてました。個人事業主に…

ニューストピックス


© Rakuten Group, Inc.