2010-12-29 22 views
0

Ich habe zwei Module, einen Host und einen Scanner. Beide können unbegrenzt mit den seriellen Ports kommunizieren. Ich möchte die Variable "bestchannel" vom Scanner in den Host importieren, aber indem ich sie importiere, läuft die While-Schleife im Scanner zuerst und läuft für immer. Ich möchte, dass jedes Modul separat läuft, aber in der Lage ist, einander Daten in Echtzeit zu senden. Ist das möglich?Python: Importieren einer Variablen innerhalb einer Endlosschleife

(außerhalb des Scannens ram)

Beispielcode:

Host Loop---------------------------------------------- 
while True: 
    ser.write(assemble("20","FF","FF","64","B")) 
    sData = ser.read(100) 
    if len(sData)>0: 
     for i in range(0, len(sData)-17): 
      if sData[i]==chr(1) and sData[i+1]==chr(20) and sData[i+2]==chr(int("A1", 16)): 
       height = (ord(sData[i+16])*256+ord(sData[i+17]))/100 
       print "Sensor ", ord(sData[i+12]), " is returning height ", 
       height, "mm. The minnoisechan:",minchannel 

Scanner Loop---------------------------------------------- 
while True: 
    ser.write(scan("FF", "FF", str(scanlength))) #Channel Mask, Length 
    time.sleep(scanlength+2.0) 
    sData = ser.read(100) 
    if len(sData)>0: 
     for i in range(0, len(sData)-16): 
      if sData[i]==chr(1) and sData[i+1]==chr(23) and sData[i+2]==chr(int("C5", 16)): 
       for j in range(0, 16): 
        chan[j] = sData[i+5+j] 
        print "channel: ",j+11,"=",ord(chan[j]) 
        if ord(chan[j])<minvalue: 
         minvalue=ord(chan[j]) 
         minchannel=j+11 
       count+=1 
       print "count",count,"minvalue:",minvalue,"minchannel:",minchannel 
       minvalue=999 

Ich möchte minchannel vom Scanner Host zugänglich sein.

Beispielcode ist im Link oder unten in der Antwort, sorry, ich musste einen anderen Browser verwenden.

+0

Ohne Code zu gehen, meine erste Frage wäre, verwenden Sie Threads, um Ihre zwei Module zu laufen? Wenn Sie einen vorhandenen Code haben, würde ich es gerne sehen. – spade78

+0

Fügen Sie einen Beispielcode hinzu, um zu verdeutlichen, was Sie tun. –

+0

Hi - wähle den Code aus, den du gepostet hast, und drücke dann den Button mit den '{}' Klammern, damit wir ihn als Code lesen können. – bgporter

Antwort

1

Also noch einmal, wenn Sie nicht erforscht haben, Ihren Code mit Threads zu implementieren, dann würde ich vorschlagen, dass zwei Schleifen zur gleichen Zeit ausgeführt werden. So etwas wie das:

Zumindest wird dies Sie beginnen, Ihre zwei Prozesse zusammen laufen. Sie müssen immer noch den Thread-Management-Aspekt von diesem herausfinden.

Verwandte Themen