FileMakerでシリアル入力
最近FileMakerが楽すぎて社内系は全部FileMaker使ってる今井です。
FileMakerばっかりやってるんで他の言語忘れそうです(笑)。
さて、今回は社内にあったシリアルポート接続タイプのバーコードリーダーをFileMakerで使いたいと思います。
バーコードリーダーでよくあるタイプとして、USBで繋いでキーボードエミュレーションする製品ってお手軽でいいのですが、フォーカスが当たってないと期待した動作にならないので、画面をモーダル表示にしてテキストボックスからフォーカス外れたら戻すとかしないといけないのですが、シリアル入力だとフォーカス外れようが、画面が裏側になっていようが関係なく処理できるので、個人的にシリアル入力タイプお勧めです。
でもですね
そんなお勧めのシリアルさんはFileMakerでは取り扱いしてないのです(悲)
MSのAccessですらできるのに....
そんな訳でなんとかしてみました。(Windows限定です)
C#(VisualStudio2012)でシリアル通信するフォームアプリケーション作って、入力受け取ったらFMPプロトコルでFileMaker側に渡すようにしてみました。
微妙なアイコン付きですが、ポイントとしては下記
1.SerialPortコンポーネントを使います。
(バッファリングとかしてくれて便利)
2.DataReceivedイベントでReadExistingしてFMPプロトコルに流します
ReadExistingはバッファ内の読み取り可能なデータを全部持ってきてくれます。
今回は単純なデータなのでReadExistingで簡単に済ませます。
FMPスクリプトの呼び出しには外部起動でよく使う、System.Diagnostics.Process
を使用します。
3.FileMaker側にはFMPプロトコルで呼ばれるスクリプトを用意しておく
かなりざっくりですが、下記C#コードです。
private void sp_Barcode_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string receivedData;
receivedData = this.sp_Barcode.ReadExisting();
using (System.Diagnostics.Process p = new System.Diagnostics.Process())
{
p.StartInfo.FileName = "fmp://{アドレス}/{FMファイル名}?script={FMスクリプト名}¶m=" + receivedData;
p.Start();
}
}
これでバーコード読み込むとFileMaker側のスクリプトが呼ばれて、パラメータに渡したバーコードデータを元にゴニョゴニョできます。
今回はざっくり作りましたが、多分近い時期に社内で必要になるのでしっかり版作ります。
欲しい人は連絡下さいっていねーか(笑)