Android Studio 无法使用 chaquopy 打开 COM 端口 python
Android Studio could not open COM port with chaquopy python
我正在 android 工作室构建物联网应用程序,我正在使用 Chaquopy - Python SDK for android 所以当我在 android 应用程序中按下按钮时,我的 python 脚本将 运行 但不知何故我收到无法打开端口这样的错误。
Process: com.example.firebaseheartratemonitor, PID: 16761
com.chaquo.python.PyException: SerialException: [Errno 2] could not open port COM4: [Errno 2] No such file or directory: 'COM4'
at <python>.serial.serialposix.open(serialposix.py:325)
at <python>.serial.serialutil.__init__(serialutil.py:244)
我的 android 代码在 Java:
if (!Python.isStarted()){
Python.start(new AndroidPlatform(this));
}
Python py = Python.getInstance();
PyObject module = py.getModule("get");
sendDataOverDisplay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PyObject pyObject = module.callAttr("main", heartrate);
sendData.setText(pyObject.toString());
}
});
我的python代码:
import serial
import time
def main(data):
with serial.Serial('COM4', 9600) as ser:
ser.open()
requiredData = data[0]
ser.write((requiredData).encode())
time.sleep(.01)
ser.close()
return requiredData
已经一个星期了,我想不出如何解决这个错误任何线索将不胜感激。
“COM4”看起来像一个 Windows 串行端口名称,因此在 Android 上不起作用。尝试使用 serial.tools.list_ports
之类的东西来发现正确的名称。
此外,即使您使用了正确的名称,您的应用也可能仍然没有直接访问该端口的权限。如果您 运行 在有根设备上,您可以通过更改端口设备文件的权限来让 pyserial 工作。在非根设备上,我知道的唯一选择是使用 Java UsbManager
instead, perhaps with the help of a library like UsbSerial. You can still call these APIs from Python with the help of the Chaquopy Python API.
我正在 android 工作室构建物联网应用程序,我正在使用 Chaquopy - Python SDK for android 所以当我在 android 应用程序中按下按钮时,我的 python 脚本将 运行 但不知何故我收到无法打开端口这样的错误。
Process: com.example.firebaseheartratemonitor, PID: 16761
com.chaquo.python.PyException: SerialException: [Errno 2] could not open port COM4: [Errno 2] No such file or directory: 'COM4'
at <python>.serial.serialposix.open(serialposix.py:325)
at <python>.serial.serialutil.__init__(serialutil.py:244)
我的 android 代码在 Java:
if (!Python.isStarted()){
Python.start(new AndroidPlatform(this));
}
Python py = Python.getInstance();
PyObject module = py.getModule("get");
sendDataOverDisplay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PyObject pyObject = module.callAttr("main", heartrate);
sendData.setText(pyObject.toString());
}
});
我的python代码:
import serial
import time
def main(data):
with serial.Serial('COM4', 9600) as ser:
ser.open()
requiredData = data[0]
ser.write((requiredData).encode())
time.sleep(.01)
ser.close()
return requiredData
已经一个星期了,我想不出如何解决这个错误任何线索将不胜感激。
“COM4”看起来像一个 Windows 串行端口名称,因此在 Android 上不起作用。尝试使用 serial.tools.list_ports
之类的东西来发现正确的名称。
此外,即使您使用了正确的名称,您的应用也可能仍然没有直接访问该端口的权限。如果您 运行 在有根设备上,您可以通过更改端口设备文件的权限来让 pyserial 工作。在非根设备上,我知道的唯一选择是使用 Java UsbManager
instead, perhaps with the help of a library like UsbSerial. You can still call these APIs from Python with the help of the Chaquopy Python API.