SSブログ

複数の列車を制御 [python]

昨日ご紹介した列車制御を各列車に適応させるには昨日のループを
各列車に対してループjを回せば良いことになります。

for j in range(len(trainList)):
___for i in range(24):
______self.ichi = memories.getMemory(memoriList[i]).getValue()
______if self.ichi == trainList[j]:
_________if (i == 0) and (memories.getMemory(memoriList[23]).getValue() == trainList[j]):
____________i = 23
_________self.singo = singoList[i]
_________self.iro = signals.getSignalHead(self.singo).getAppearanceName()
_________break
___if self.singo == '':
______self.iro = 'Red'
___if self.iro == 'Green':
______self.sp = 1
___elif self.iro == 'Yellow':
______self.sp = 0.5
___elif self.iro == 'Red':
______self.sp = 0
___print trainList[j], i, self.singo, self.iro, sensors.getSensor(sensList[i]).state, self.sp
___self.throttle = self.getThrottle(int(trainList[j]), False)
___self.throttle.speedSetting = self.sp
___self.singo = ''

trainList = ['7', '11', '31', '21', '22']

新しい車両が入線したら、trainListにDCCアドレスを追加すればOKです。
このルーチンが一周すれば、全列車に対して1回、前方の信号現示を確認して、スピードを調整することになります。
ですので、クラスの定義のところにあった
def handle(self):
___……
___return 1
の___……にさっきのループを書けば、クラスを実行したときに無限に回り続けます。
ただ、これでやるとThread monitorで見るとものすごい速さで回り続けていることが分かります。
全列車止まっていても、意味も無く回っています。マシンパワーが。。。。
ですので、このループを回すのは信号が変わったときだけで良いのです。
さて、どうしましょうか。

nice!(1)  コメント(1)  トラックバック(0) 

nice! 1

コメント 1

Cialis 20 mg

沒有醫生的處方
cialis generika in deutschland kaufen http://cialisyoues.com/ Generic for cialis
by Cialis 20 mg (2018-04-14 19:34) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。