はじめに
こんにちは。今年度から社内PCのキッティングに携わるようになった@Cheeeeeseです。
今日はSetROBOのグローバル変数(共通変数)について記載します。
SetROBOのコーディングには、SetROBOの関数とC#が使えて、変数の宣言とかはC#の書き方と一緒なんだけど、グローバル変数はC#の書き方では出来ないみたいなんです。
少し複雑だったので、ここに記録しておきます!
環境
- Windows 11 Pro 21H2 (64bit)
- SetROBO for Kitting V1.9.5体験版
SetROBOの共通変数とは
共通変数とは、Code間・Plan間をまたいで使用可能な変数のことです。
共通変数の値は、Code間・Plan間をまたいだ場合でも保持されます。
(引用:SetROBO for Kitting 入門ガイド Ver.2.4)
手順
01.共通変数を作成
SetROBOの場合、変数を宣言ではなく、関数で共通変数に値を格納します。
今回はint型のの「varInt」という共通変数に、「100」を格納します。
// エラー内容を受け取る変数
PlayLib.GlobalErrorCode errCode;
// int型の共通変数「varInt」を作成し、int型の値「100」を格納する
PlayLib.GlobalSetInt("varInt", 100, out errCode);
ちなみに型によってそれぞれ関数が用意されています。
型 | 関数 |
---|---|
Int型 | PlayLib.GlobalSetInt(string name, int value, out GlabalErrorCode errCode) |
Double型 | PlayLib.GlobalSetDouble(string name, double value, out GlabalErrorCode errCode) |
String型 | PlayLib.GlobalSetString(string name, string value, out GlabalErrorCode errCode) |
Bool型 | PlayLib.GlobalSetBool(string name, bool value, out GlabalErrorCode errCode) |
【引数】
name:共通変数名
value:格納するint型の共通変数の値
out errCode:エラー内容を受け取る変数(正常に読み込めた場合は「OK」)
02.別のCodeで共通変数から値を取得
共通変数から値を取得する際も関数を使用します。
手順01で作成した共通変数「varInt」の値を取得します。
// エラー内容を受け取る変数を宣言する
PlayLib.GlobalErrorCode errCode;
// int型の値を受け取る変数を宣言
int num = 0;
// int型の共通変数「varInt」の値を取得し、numに格納する
PlayLib.GlobalGetInt("varInt", out num, out errCode);
これも型によってそれぞれ関数が用意されています。
型 | 関数 |
---|---|
Int型 | PlayLib.GlobalGetInt(string name, out int value, out GlabalErrorCode errCode) |
Double型 | PlayLib.GlobalGetDouble(string name, out double value, out GlabalErrorCode errCode) |
String型 | PlayLib.GlobalGetString(string name, out string value, out GlabalErrorCode errCode) |
Bool型 | PlayLib.GlobalGetBool(string name, out bool value, out GlabalErrorCode errCode) |
【引数】
name 共通変数名
out value 取得したint型の値を格納する変数
out errCode エラー内容を受け取る変数(正常に読み込めた場合は「OK」)
03.実行確認
実行時はまず共通変数を作成したCodeを実行し、その後に共通変数から値を取得するCodeを実行します。
必ず先に共通変数を作成したCodeを実行しないと、エラーが発生します。
応用
私の場合、設定値の取得によくCSVを使うので、CSVファイルのパスを共通変数にしています。
こうするとCSVのファイル名を変更した場合でも共通変数を作成したCodeだけので済みます。
//変数宣言
PlayLib.GlobalErrorCode errCode;
// 設定値ファイル(csv)のパスを取得
string filePath = Path.Combine(Path.GetDirectoryName(Application.StartupPath), "Setting.csv");
// PCの製造番号を取得
string serialNumber = PCInfo.GetMySerialNumber();
//-------------------共通変数に格納-------------------
// 共通変数「gfilePath」に設定値ファイルのパスを格納
PlayLib.GlobalSetString("gFilePath", filePath, out errCode);
// 共通変数「gserialNumber」に製造番号を格納
PlayLib.GlobalSetString("gSerialNumber", serialNumber, out errCode);
// 変数宣言
PlayLib.GlobalErrorCode errCode; //エラーコード
string sFilePath; //設定値ファイルパス
string sSerialNumber; //製造番号
// 設定値ファイルパスを取得
PlayLib.GlobalGetString("gFilePath", out sFilePath, out errCode);
// 製造番号を取得
PlayLib.GlobalGetString("gSerialNumber", out sSerialNumber, out errCode);
// 設定値ファイルから製造番号をキーにコンピューター名を取得
string pcName = CsvLib.GetField(sFilePath, "製造番号", sSerialNumber, "コンピューター名");
PlayLib.TestLog(pcName);
最後に
SetROBOの共通変数は関数を使用しなければいけないので、少しコーディングが面倒ですが、慣れれば便利です。