Visual Basicでサービス作成 NC死活監視
NC装置の死活監視機能を作ろうと思いました。
・サービスで常駐
・cnc_allclibhndl3(ハンドル番号取得)コマンドを定期実行し、日時とリターンコードをCSVファイルに追記していく
フォームアプリケーションは作りましたが、サービスは初めてなので、まずはサービスの作り方から調べました。新規プロジェクト作成で、Windowsサービスで作成すればサービスを作れます。
タイマーをフォームアプリケーションと同じように作ったところ、繰り返してくれない・・・・。よく見るとSystem.Windows.Form.Timerって書いてある。フォーム用のタイマーだからサービスでは動かないのでは?と調べてみたらサービスの場合はSystem.Timers.Timerで作らないといけないようです。プログラムの書き方も違いました。
プロパティではEnable=Falseにしておき、サービス開始処理の中で有効化する。その時にインターバルも指定。
Timer1.Enabled = True
Timer1.Interval = 10000
タイマーの中の処理で、今の日時、カンマ、cnc_allclibhndl3のリターンコードを文字列にしたもの、改行を出力。
str1 = System.DateTime.Now & "," & nRet.ToString & vbCrLf
System.IO.File.AppendAllText("C:\XXXX\XXXX\alive.csv", str1)
あと、サービスはVisual Studioからデバッグしても実行できません。Windowsのサービスに登録して、サービスの開始をして実行します。
出来上がったので実機確認。サービスを起動してNCルーターの電源をオン。CSVの前半はNCが起動していないのでリターンコード-16、途中から通信できてリターンコード0に変わりました。
CSVファイルに書くことが出来たので、このデータを使えば何時から何時まで稼働していたか、電源ON・OFFの比率など集計が出来ます。
今回作った機能では電源が入っているかしかわかりません。切削加工していた時間も記録できるようにしたいですね。