@UKHeliBob Thanks a lot.
Actually, I'm develop API Server using FastAPI by Python.
My purpose that if I request API success, it will send data via serial to Arduino. I also try but still failed.
Case 1: If I use this code, Python script is working well and Arduino also working well but my program is delayed.
from fastapi import FastAPI
import uvicorn
import time
import serial
app = FastAPI()
@app.get("/")
async def root():
arduino = serial.Serial(port='COM4', baudrate=9600, timeout=.5)
time.sleep(2)
command="ON"
arduino.write(command.encode('utf-8'))
return {"message": "Hello World"}
if __name__ == "__main__":
uvicorn.run("APIServerTPR:app", host="192.168.30.39", port=5000, log_level="info")
Case 2: If I use this code, Python script is occured an error:
from fastapi import FastAPI
import uvicorn
import time
import serial
arduino = serial.Serial(port='COM4', baudrate=9600, timeout=.5)
time.sleep(2)
app = FastAPI()
@app.get("/")
async def root():
command="ON"
arduino.write(command.encode('utf-8'))
return {"message": "Hello World"}
if __name__ == "__main__":
uvicorn.run("APIServerTPR:app", host="192.168.30.39", port=5000, log_level="info")
Error:
Traceback (most recent call last):
File "D:\TECHPRO\PythonLearning\TPR-DCS\APIServerTPR.py", line 22, in <module>
uvicorn.run("APIServerTPR:app", host="192.168.30.39", port=5000, log_level="info")
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\main.py", line 578, in run
server.run()
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\server.py", line 61, in run
return asyncio.run(self.serve(sockets=sockets))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 650, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\server.py", line 68, in serve
config.load()
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\config.py", line 473, in load
self.loaded_app = import_from_string(self.app)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\importer.py", line 21, in import_from_string
module = importlib.import_module(module_str)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "D:\TECHPRO\PythonLearning\TPR-DCS\APIServerTPR.py", line 8, in <module>
arduino = serial.Serial(port='COM4', baudrate=9600, timeout=.5)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\site-packages\serial\serialwin32.py", line 33, in __init__
super(Serial, self).__init__(*args, **kwargs)
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\site-packages\serial\serialutil.py", line 244, in __init__
self.open()
File "C:\Users\toanh\AppData\Local\Programs\Python\Python311\Lib\site-packages\serial\serialwin32.py", line 64, in open
raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port 'COM4': PermissionError(13, 'Access is denied.', None, 5)
Thanks