現示変化を待つ [python]
信号現示が変化したときだけの動作には通常はリスナーを使うのでしょうか。
しかし当時はサンプルスクリプトの構文を見ていてもよく理解できませんでしたので、
別の方法を探してみました。
JMRI APIにちゃんと用意されています。
self.waitChange(jarray.array(self.c,jmri.NamedBean))
というやつで、ここのself.cに信号機のリストを代入してやると、その中のいずれかに変化があるまで、waitするというものです。まさにぴったり。
ところが
self.c = ['IH:SE8C:"LT273";"LT274"', …….]
などとしてやっても、全く動きません。なんで。。。
またしても、ネットで検索、なるほどsignals.getSignalHead()で読み込んだコードでないといけないようです。printしてみたところ、わけの分からないコードのようなものでした。
これは手で作成するわけにはいきません。(起動するたびに変わるかも???)
self.a = []
self.c = ['IH:SE8C:"LT273";"LT274"', ……]
for self.b in self.c:
___self.a.append(signals.getSignalHead(self.b))
1行目で空のリストself.aを作って、
self.bをself.cの信号リストに対し、回します。
ループの中はリストself.aにgetSignalHeadで読み込んだコードを追加していきます。
これで、
self.waitChange(jarray.array(self.c,jmri.NamedBean))
とすれば、どれかの信号現示が変わったときまで、プロセスが止まるようになりました。
分かってしまえば、、、なんですが、これはちゃんと動くようになるまで結構苦労しました。
しかし当時はサンプルスクリプトの構文を見ていてもよく理解できませんでしたので、
別の方法を探してみました。
JMRI APIにちゃんと用意されています。
self.waitChange(jarray.array(self.c,jmri.NamedBean))
というやつで、ここのself.cに信号機のリストを代入してやると、その中のいずれかに変化があるまで、waitするというものです。まさにぴったり。
ところが
self.c = ['IH:SE8C:"LT273";"LT274"', …….]
などとしてやっても、全く動きません。なんで。。。
またしても、ネットで検索、なるほどsignals.getSignalHead()で読み込んだコードでないといけないようです。printしてみたところ、わけの分からないコードのようなものでした。
これは手で作成するわけにはいきません。(起動するたびに変わるかも???)
self.a = []
self.c = ['IH:SE8C:"LT273";"LT274"', ……]
for self.b in self.c:
___self.a.append(signals.getSignalHead(self.b))
1行目で空のリストself.aを作って、
self.bをself.cの信号リストに対し、回します。
ループの中はリストself.aにgetSignalHeadで読み込んだコードを追加していきます。
これで、
self.waitChange(jarray.array(self.c,jmri.NamedBean))
とすれば、どれかの信号現示が変わったときまで、プロセスが止まるようになりました。
分かってしまえば、、、なんですが、これはちゃんと動くようになるまで結構苦労しました。
2013-05-05 00:00
nice!(1)
コメント(1)
トラックバック(0)
п»ї0 5 Propecia Finasteride Viagra 35 Anos Cialis Jambes Lourdes <a href=http://erxbid.com>cialis 10 mg precio oficial</a> Mezieres Viagra Generika Gunstig Kaufen Propecia Tinnitus Allergy
by Frannix (2019-06-27 12:27)