2回目の更新
もうすぐです!! しかし、「ValueError:開いていないポートを使用しようとしています」というメッセージが表示されます
File "c:\Python27\lib\site-packages\flask\app.py", line 1701, in __call__ return self.wsgi_app(environ, start_response) File "c:\Python27\lib\site-packages\flask\app.py", line 1689, in wsgi_app response = self.make_response(self.handle_exception(e)) File "c:\Python27\lib\site-packages\flask\app.py", line 1687, in wsgi_app response = self.full_dispatch_request() File "c:\Python27\lib\site-packages\flask\app.py", line 1360, in full_dispatch_request rv = self.handle_user_exception(e) File "c:\Python27\lib\site-packages\flask\app.py", line 1358, in full_dispatch_request rv = self.dispatch_request() File "c:\Python27\lib\site-packages\flask\app.py", line 1344, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "G:\OverAir\arduino\server.py", line 19, in light_off board.output([pin]) File "G:\OverAir\arduino\arduino.py", line 16, in output self.__sendData(len(pinArray)) File "G:\OverAir\arduino\arduino.py", line 56, in __sendData while(self.__getData()[0] != "w"): File "G:\OverAir\arduino\arduino.py", line 61, in __getData return self.serial.readline().rstrip('\n') File "c:\Python27\lib\site-packages\serial\serialwin32.py", line 221, in read if not self.hComPort: raise portNotOpenError ValueError: Attempting to use a port that is not open
アップデート
以下の@Blenderの回答のコードはおそらく正しいでしょう。現在発生している問題は、 「SerialException:ポートCOM5を開けませんでした:[エラー5]アクセスが拒否されました」というメッセージが表示されることです。
ただし、元のon.pyまたはoff.pyスクリプトを個別に実行すると、正常に機能します...新しいコードがどのように機能しないかわかりません... COM5を2回開こうとしない限り、??
更新を終了
Flaskを使用して、複数のPython関数を実行するか、.pyスクリプトを分離しようとしています。個別のURLを生成するため。Arduinoをローカルで実行してオン/オフにしようとしているだけです。
たとえば、on.pyとoff.pyがあり、sever.pyをビルドしたいとします。したがって、127.0.0.1:5000 / onを開くと、on.pyが実行され、同様に127.0.0.1:5000/offはoff.pyを実行します。
数時間後、両方の.py関数をserver.pyに追加することにしましたが、もちろん機能しません...パラメーターの使用法がわからないと思います。
よろしくお願いします!
## Open a serial connection with Arduino.
from time import sleep
from arduino import Arduino
from flask import Flask
b = Arduino("COM5",9600)
pin = 13
num = 5
ON = Flask("Light_ON")
OFF = Flask("Light_OFF")
def LightON():
#declare output pins as a list/tuple
b.output([pin])
b.setHigh(pin)
b.close()
return 'Light is ON'
def LightOFF():
#declare output pins as a list/tuple
b.output([pin])
b.setLow(pin)
return 'Light is OFF'
@ON.route('/ON')
@OFF.route('/OFF')
ON.run()
OFF.run() //I know this doesn't run, just not sure how to include it.