こんばんは、脇保です。
今回は表題の通りです。
以上のものを作ってました。
先ず目的は、アナログ的にタイムレコーダーで記録している、
勤怠を自動化したいと。
仕様とかは毎度の如く大雑把で、
1.Felicaを使う。ベースはWindowsでもLinuxでも動けば何でもOK
2.勤怠帳はエクセル形式。とにかくエクセルの表が出力できればOK
3.Felicaをかざして出勤/退勤管理。使い易い事
4.ボタン一つで勤怠表出力。使い易くて管理し易い事 です。
すごーく大雑把です。
で、取り敢えず考えたのは、
BaseはWindows機で、 そこから全部管理しようかと。
目を付けたのは、FelicaLib.Dll。
こいつを使って、C++ OR VB.NET OR C#.NET OR Delphiの何れかで、
アプリを作ってしまおうかと。
WindowsPCが一台、記録専用のが増えてしまうが致し方ない。
古いVistaPCを引っ張り出して、ローカルで使って何とか凌ごう。
で、開発、というか試作着手。 ここで問題勃発。
環境は、 OS:WIndows10、
言語:VisualStudio2008エクスプレス(古い・・・)、
Pasori:SONY RC-S310(もっと古い・・・)
でやったところ、サンプルは問題なく動くが、
ソースをコンパイルすると、ものの見事に動かない。
実行時エラーで、ライブラリがエラーを吐いてしまう。
どうやら、Pasori認識時に関数に想定外の値が入ってきて、
それで固まっている様子。
今思うと、OSに対して、言語が古すぎたことが原因かもしれない。
これが、Windows7とかならまともに動いたんだろうけど。
さぁ参った。
しかし時間はない。
ここで方向転換。
社会人学生時代、PasoriとUbuntuを使って、
先生が製作する出席管理アプリの製作をお手伝いしたことがあり。
確か、LibPafeだっけ? よし、こいつを使おう。
丁度サーバもUbuntuだし、これならPCを増やさなくてもすむ。
全体的な構成はこんな感じ。
サーバ(Linux)→Felica端末設置
ログはサーバ内の共有フォルダに記録
クライアント(WIndows)→サーバからログを取得し、
Delphiアプリからエクセルを操作、
勤怠表を出力 ・・・うん、単純すぎる・・・(汗)。
で、取り敢えずググる。 参考にしたのは以下のページ。
http://masanoriprog.blogspot.jp/2012_05_01_archive.html
で、端末から、 sudo apt-get install libusb-dev と入力、
LibUSBをインストールします。
次に、LibPafeのインストール。
ここで問題勃発。
WGETでサイトどおりにやってみると、
こちらの環境(Lbuntu 17.04 64Bit) だと、インストール出来ず。
よくみると、サイトに載っているバージョンは2009年のもの。
ついでに、リンク先も提示してあったので、
直にダウンロードして、 DPKGしました。
こちらのサイトより、
http://hito.music.coocan.jp/
Libpafeのダウンロードページに行って落としてきます。
http://hito.music.coocan.jp/pasori/libpafe.html
ここから、libpafe_0.0.8-1_amd64をダウンロードします。
(Debian64Bit版の場合)
ダウンロードしたら、適当なフォルダを作成し、
そこに解答した、 libpafe_0.0.8-1_amd64を入れ、
端末から、libpafe_0.0.8-1_amd64のあるフォルダに移動します。
そして、 dpkg -i libpafe_0.0.8-1_amd64 でインストールします。
これで無事インストール完了。
さて、お次はここからどうするか?
PHPやRubyのサンプルはググると豊富にあるけれど、
できればサーバ系言語は避けたい。
余計なサービスは入れたくないので。 そこでさらにググっていると、
以下のページを発見。
http://blog.genkikko.net/2014/04/phpubuntupasorifelica.php
それによると、
LibPafeにはサンプルコマンドがついてきて、
それでDumpもできるとか。
ならばこいつを使おう。
空のフェリカカードで、 felica_dump でコマンドを打ってみると、
きちんと反応して、IDやら何やら色々返してくれた。
うん、使える。
この場合、SN(シリアルナンバー)が固有の値として使えそうだったので、
そのままこの値を使うことにした。
要は、こいつが出力した値をテキストに取り込んで、
加工して必要な値を取って来ればいい訳ですね。
基本、Sh(UnixShellScript)は得意ではないので、
ググりながら書いてみる。
色々試行錯誤して、何とかものになるものができた。
これで、一応はホスト側の作成は完成。
以下、試作のShコード。
余りお行儀の良いコードでは無いですが・・・。
#!/bin/bash while : do felica_dump | sudo tee ./temp.txt grep "SN " temp.txt | sudo tee ./temp.txt if [ ! -s ./temp.txt ]; then echo "待機中..." else cut -c 21-27 temp.txt | sudo tee ./temp.txt date | sudo tee ./temp2.txt echo " , " | sudo tee ./dlmt.txt paste temp.txt dlmt.txt temp2.txt dlmt.txt | sudo tee ./temp3.txt felica_dump | sudo tee ./loop.txt while [ -s ./loop.txt ]; do felica_dump | sudo tee ./loop.txt echo "カードをお戻しください" done echo "書き込み中..." if [ ! -s ./loop.txt ]; then cat ./temp3.txt | sudo tee -a ./kintai.txt fi fi done <div>