python - 我可以将串行对象转换为文件描述符并将其传递给 C 程序吗?

标签 python c serial-port subprocess pyserial

我使用 subprocess.Popen(..) 从 python 调用 C 子进程 在可执行文件中,使用 CreateFile(...) 打开 COM 端口以与串行设备进行通信。 .

是否可以使用 pyserial 打开 python 中已有的串行端口并将一些“文件句柄”传递给可执行文件?

至少我可以将 stdin、stdout 和 stderr 作为文件描述符 (int) 或文件对象传递。但我不知道如何将 Serial 对象转换为上述选项之一。也许根本不可能,但我还是想问......

该问题应是与以下内容相关的解决方法 USB VCP connection fails occasionally 因为反复打开和关闭COM端口数千次后失败。可执行文件被经常调用(每次都使用其他参数用于测试目的),但没有必要每次都重新打开 COM 端口。

当然用CreateFile()解决问题会更好,但我花了几天时间才找到问题,最后得出的结论是,它已经不在我手中了......

最佳答案

我找到了一种解决方法,即使用管道将串行输出重定向到 python。 现在可以工作了。

关于python - 我可以将串行对象转换为文件描述符并将其传递给 C 程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49766933/

相关文章:

python - 在多索引 Pandas 中使用 groupby 添加列

python - 如何验证 python 中没有调用模拟方法?

c - 在 C 中动态地从 3D 数组到 2D 数组

c++ - COM 端口上的 Win32 重叠读取文件返回 ERROR_OPERATION_ABORTED

java - 在java中获取USB调制解调器连接的com端口

Java串行通信: way to set receieve threshold when using async.读取通知

Python - 在其他两个特定字符之间的字符串中提取文本?

c++ - 从 boost python 调用具有可变数量输入参数的 Python 函数

c - 尝试解除分配二维数组时访问冲突读取

c - C 中的位域数组