0

Pythonのマルチプロセッシング環境でpySerial操作を実行する例を見ることができる場所はありますか?

===上記の質問に更新===

Arduinoのコード:

//Initialize the pins

void setup()
{
    //Start serial communication
}

void loop()
{
    //Keep polling to see if any input is present at the serial PORT
    //If present perform the action specified.
    //In my case : TURN ON the led or TURN OFF.
}

同様に、Pythonフロントエンドのコードは次のとおりです。

基本的なリファレンスとして、 Painless Concurrency:the multiprocessing Module(PDF、3.0 MB)を使用しました。

#import the different modules like time,multiprocessing
#Define the two parallel processes:
def f1(sequence):
    #open the serial port and perform the task of controlling the led's
    #As mentioned in the answer to the above question : Turn ON or OFF as required
    #The 10 seconds ON, then the 10 seconds OFF,finally the 10 seconds ON.

def f2(sequence):
    #Perform the task of turning the LED's off every 2 seconds as mentioned.
    #To do this copy the present conditions of the led.
    #Turn off the led.
    #Turn it back to the saved condition.

def main():
    print "Starting main program"

    hilo1 = multiprocessing.Process(target=f1, args=(sequence))
    hilo2 = multiprocessing.Process(target=f2, args=(sequence))

    print "Launching threads"
    hilo1.start()
    hilo2.start()
    hilo1.join()
    hilo2.join()
    print "Done"

if ____name____ == '____main____':
    main()

上記を実行する際に私が直面しているいくつかの問題があります。

  1. プロセスf1は、必要に応じてタスクを実行します。つまり、LEDを10秒間オンにし、LEDを10秒間オフにし、最後にLEDを10秒間オンにします。一見すると、プログラムは正常に終了しますが、プロセスf2はまったく実行されていないように見えます(つまり、2秒ごとにLEDがオフになることはありません)。ここで何が起こっているのでしょうか?

  2. 印刷を使用してプロセスで何かを印刷すると、画面に表示されません。例に言及している人々がどのようにしてプロセスのプリントの出力を表示することができたのか知りたいです。

4

2 に答える 2

0

なぜ join を使用したのですか? join は、 join() メソッドが呼び出されたプロセスが終了するか、オプションのタイムアウトが発生するまで、呼び出しスレッドをブロックします。これが、f1 が実行されているために f2 が開始されない理由です。

代わりにメインでこのコードを試してください

procs = []
procs.append(Process(target=f1, args=(sequence))
procs.append(Process(target=f2, args=(sequence))
map(lambda x: x.start(), procs)
map(lambda x: x.join(), procs)
于 2014-01-02T16:07:53.577 に答える
-1

さて、ここに、別のスレッドで実行される GUI アプリ (PyQt) での PySerial 監視のコード サンプルがあります。

于 2011-09-07T05:02:26.490 に答える