如何在不使用外部api的情况下读取python中的串行端口?

2024-04-19 11:31:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须读一个流,这是从一个自制设备通过串行端口发送。问题是它应该部署在一台我无权安装任何新的机器上,这意味着我必须使用python标准库来完成这项工作。这有可能吗?如果有,我怎么办。在

如果这几乎是不可能的,我将不得不找人来安装pySerial,但是如果没有这个我会非常感激。在

如果Linux/Windows之间存在差异,这是在Windows机器上,但我会非常感谢跨平台解决方案。在


Tags: 端口机器标准linuxwindows部署跨平台差异
2条回答

在类Unix的操作系统上,串行端口的工作方式与文件类似,您只需打开它并读取或写入字节即可。你可以打一些额外的电话来设置波特率等等,但基本上就是这样。在

在Windows上,可以像打开文件一样打开串行端口,但必须使用一些特定的访问方式,这与Python对普通文件的访问方式略有不同。不幸的是,仅使用本机Python库很难成功地访问Windows串行端口。在

^{}库提供了访问串行端口的统一的跨平台方法。它依赖于ctypes,这是Python2.5以来的标准库,因此您可以在应用程序中包含{},并使用它。在

你说你没有权限安装任何新的东西。我猜这是一个权限问题-也就是说,您无法获得提升的管理权限,pip install/conda install失败。在

如果您有任何类型的普通用户登录访问权(我想您必须直接或间接地将脚本放在计算机上),那么您可以使用虚拟环境来安装所需的模块。这一切都可以从一个普通用户帐户完成。在

只要谷歌搜索“python虚拟环境”,你就会找到你所需要的一切。在

如果你使用的是PythonPython,那就稍微不同了。谷歌搜索“康达环境”。在

如果您甚至无法在主机上获得命令提示符—例如,您压缩文件并将其交给其他人部署—您仍然可以使用虚拟环境。您只需压缩虚拟环境和脚本。使用Anaconda,您可以使用-p开关将环境创建在与项目相同的目录中。我想pipenv也有类似的情况。在

或者,您可以使用pyinstaller将所有内容打包,这将创建一个包含所有模块的独立运行时。在

相关问题 更多 >