如何在不使用外部API的情况下从python中的串口读取?

时间:2010-06-24 07:37:56

标签: python serial-port

我必须通过串口读取从自制设备发送的流。问题是它应该部署在我无法安装任何新东西的机器上,这意味着我必须使用python标准库来执行此操作。这是可能的,如果是这样,我该如何管理呢。

如果事实证明几乎是不可能的,我将不得不让某人安装pySerial,但如果没有这个可以做到,我真的很感激。

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

2 个答案:

答案 0 :(得分:7)

在类Unix操作系统上,串口就像文件一样工作,只需打开它就可以读取或写入字节。你可以设置一些额外的调用来设置波特率和诸如此类的东西,但这基本上就是一切。

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

pyserial库提供了一种统一的跨平台访问串行端口的方式。它依赖于ctypes,它位于Python 2.5之后的标准库中,因此您可以在应用程序中包含pyserial并使用它。

答案 1 :(得分:0)

您说您无法安装任何新内容。我猜这是一个权限问题 - 即您无法获得提升的管理访问权限,并且pip install / conda安装失败。

如果您对该计算机有任何正常的用户登录访问权限(我认为您必须直接或间接地为了将您的脚本放在计算机上),那么您可以使用虚拟环境安装所需的模块。这可以通过普通用户帐户完成。

只是Google for" python虚拟环境"并且你会找到你所需要的一切。

如果你使用的是Anaconda Python,它会略有不同。 Google for" conda environment"。

如果你甚至无法在主机PC上获得命令提示符 - 例如您压缩文件并将其分发给其他人进行部署 - 您可以仍然使用虚拟环境。您只需将虚拟环境与脚本一起压缩即可。使用Anaconda,您可以使用-p开关安排在与项目相同的目录中创建环境。我认为pipenv有类似的东西。

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