C#スクリプト

先日、C#スクリプトを試して見ました。
これを使用すればC#プログラムからスクリプトを実行できるようになります。

C#スクリプトの導入方法は他のサイトにも記載されているので置いといて、どのように実装するかだけ。

<実装例>
private int Test(string text) {
 var args = new TestArgs { Text = text }; ・・・(1)
 var script = CSharpScript.Create(
  ”Value = Text.Length * 2;” ・・・(2)
  , ScriptOptions.Default, typeof(TestArgs));
 var scriptState = script.RunAsync(args);
 scriptState.Wait();
 return args.Value;
}

public class TestArgs {
 public int Value { get; set; }
 public string Text { get; set; }
}

上記の(2)の個所がC#スクリプトのプログラム部分です。
上記は1行だけですが複数行のプログラムを記載できます。
おこなっている内容も特に意味が無く、Textプロパティの文字数を2倍して、Valueプロパティに代入しているだけです。
この計算結果を呼び出し元のC#側で使用することができます。

(1)でnewしているTestArgsクラスは、C#スクリプトへの入力と出力に使用するクラスで、上記ではTextプロパティを入力に、Valueプロパティを出力に使用しています。

上記の簡単な実装でスクリプトを実行できるのは非常に面白いです。
ですが、実際にどのような用途にこの機能を使うかは悩むところです。
思いつくのは、マクロとして使ったり、動的に演算式や判定条件を変更するなどでしょうか。
スクリプトなので速度はC#で実装するよりも遅いですし、もちろんビルド時に静的コードチェックもされないですし、よく考えて使わないと痛い目に遭うかも知れません。

PLCの教育

PLCの教育は大変です。
昔のように「A接点」と「B接点」と「自己保持回路」だけでは足りません。
ビットとワード、16進数、論理演算、実数演算・・・・。
中でも苦戦するのは「インデックスレジスタ」です。
プログラム上の「実アドレス」が存在しなくなった時点で「???」になります。
また、理解したように見えても「Z0~Z15ではとても足りませんが」と質問されたり・・・。
「アドレスの間接指定」といっても、元々目に見えないものなので、直接も間接もないのです。
私の経験上、想像力豊かな人の方が理解も早い気がします。

VR

こんにちは、MTJです。

ついにOculusの予約が開始されました、日本円で送料込みで約10万程度だそうです。
PSVRもそうですが、この2つのVRがどんなものかというと、
ヘッドマウントディスプレイの出力映像を見、頭の向きなどにより視界が動いたりするもの
360度ディスプレイみたいなものにKinectのようなモーショントラッキングをつけたもの

これがワンセット10万なら安いのかなと思ってしまう。
同じようなPSVRと少し変化してMicrosoftのホロレンズの価格も気になる所。

ただOculusは今後は顔だけでなくモーションのトラッキングもすることで
オープンワールド系のゲームで歩いたり等も目標にしているようです。

VRの今後の展開が楽しみです。

画像処理ライブラリの機能追加

現在、社内の画像処理ライブラリに測長機能を実装しています。
用途が多そうな機能なのに今まで使う機会が無く、実装していませんでした。

手順やインターフェイスはほぼ決まっており、
基本的にはエッジ検出結果を元に内寸や外寸を計算します。

画像処理機能の追加は久しぶりで、色々と思い出しながら作成しています。