2018年6月11日月曜日

ラズパイでAlienリーダを制御してみた

前回、Alienリーダをノンプログラミングでクラウド連携ということで、試してみましたが、Alienリーダだけだと制限があって難しいことが分かりました。そこで、まずはラズパイを使って、Alienリーダを制御できるか試してみたいと思います。

開発環境は、Windows 10+Visual Studio 2017+.NET Core SDK
実行環境は、raspbian+.NET Core runtime
開発言語は、C#。

初めに、Alienリーダに付属のライブラリ「AlienRFID2.dll」がそのまま使えないかをテストしたところ、下記のエラーが発生。

pi@raspberrypi:~/work/HelloAlien/publish $ ./HelloAlien

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.IO.Ports, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.

   at nsAlienRFID2.CAlienComPort2..ctor(Boolean log)
   at nsAlienRFID2.clsReader..ctor(String ipAddress, Int32 port)
   at HelloAlien.Program.Main(String[] args) in C:\Users\hnakano\source\repos\HelloAlien\HelloAlien\Program.cs:line 11
Aborted

ダメだったので、nugetからSystem.IO.Portsをインストールして試したところ、今度は下記のエラー。
pi@raspberrypi:~/work/HelloAlien/publish $ ./HelloAlien

Unhandled Exception:
Unhandled Exception: System.PlatformNotSupportedException: System.IO.Ports is currently only supported on Windows.
   at System.IO.Ports.SerialPort.Dispose(Boolean disposing)
   at System.ComponentModel.Component.Finalize()
Aborted
COMポート使うつもりはないんだけどなあと思いつつ、この方法も断念。

社内のリーダ制御ライブラリにTelnetプロトコルを使って、Alienリーダを制御するクラスがあったので、ちょこっと改変して流用してみたところ、すんなりと読取できるところまで確認できました。


0 件のコメント:

コメントを投稿