プログラムを立ち上げたときの無線機の状態を取得して、内部変数に格納するための関数。 今日は、プリアンプの状態とアッテネータの状態を取得する関数を作成した。
アッテネータの状態を取得
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
bool getatt() { bool res = false; spwrite("RA0"); string buf = spread(); switch(buf) { case "PA00": res = false; break; case "PA01": res = true; break; } return (res); } |
次はプリアンプだけど、プリアンプは、HFバンドの時しか動作しない。 V/UHFの時に”PA0″を送ると、前の状態のコードが返ってくる。 なので、プリアンプの状態を取得する前に、今のバンドの状態を取得する必要がある。
バンド状態の取得
バンド状態が格納されているパラメータは無いようなので、VFO-Aの周波数を読み取って判定した。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
private int getband() { int res = 0; spwrite("FA"); string buf = spread(); buf = buf.Substring(2, 3); switch (buf) { case "001": res = 0; //1.9 break; case "003": res = 1; //3.5 break; case "007": res = 2; //7 break; case "010": res = 3; //10 break; case "014": //14 res = 4; break; case "018": //18 res = 5; break; case "021": //21 res = 6; break; case "024": //24 res = 7; break; case "028": //28 res = 8; break; case "050": //50 res = 9; break; case "144": //144 res = 10; break; case "430": //430 res = 11; break; } return res; } |
プリアンプの状態
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
private int getpreamp() { st_band = getband(); if (st_band == 10 || st_band == 11) return 0; //no amp int res = 0; spwrite("PA0"); string buf = spread(); switch (buf) { case "PA00": res = 1; //IPO break; case "PA01": res = 1; //AMP1 break; case "PA02": res = 2; //AMP2 break; } return (res); } |
全くデバッグしてないので、正常に動作しない確率大。