gpt4 book ai didi

python - 当另一个程序正在使用串行端口时,我如何连接并向串行端口发送命令?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:31 24 4
gpt4 key购买 nike

我使用的是 telit he910g 卡。它使用 miniPCI 插槽直接连接到我的 PC。我将其用于 3G 互联网连接和 A-GPS/GPS 服务。

我的系统运行的是 linux mint 17.1,3G 连接是使用网络管理器 APP 处理的,效果很好。 3G 连接是使用一个模块启动和处理的,该模块是我正在编写的程序的一部分。我用来连接串口的代码是这样的:

def _connect_to_device(self):
""" Connect to a serial port """

try:
self._device = serial.Serial(self._filename, baudrate=self._baud_rate)
except StandardError, e:
raise StandardError("Couldn't connect to GPS device. Error: %s" % str(e))

当我单独使用 python 程序时,效果很好。但是当我在 3G 开启时尝试使用它时,我无法连接到串行设备。奇怪的是,如果我在打开 3G 时尝试使用“minicom”之类的程序连接到它,它确实有效。

所以我的问题是:我怎样才能同时运行和工作?因为现在它们是相互排斥的。

感谢所有帮助过的人。 :)

最佳答案

很高兴您找到了解决问题的方法。只是为了完整性:

一般情况下,串口是可以被多个进程打开的。如果其中之一对打开的文件执行 ioctl(,TIOCEXCL),则进一步打开将返回 EBUSY,直到每个人都关闭设备。只有 root 可以通过此操作并始终打开设备。

如果 root 打开设备并执行 ioctl(,TIOCNXCL),那么其他进程也可以打开设备。

在 python 中,TIOCNXCL 未在任何地方定义,但您可以执行 ioctl(例如在标准输入上):

import fcntl
TIOCEXCL = 0x540c # from /usr/lib64/perl5/asm-generic/ioctls.ph
TIOCNXCL = 0x540d
print fcntl.ioctl(0, TIOCNXCL)

关于python - 当另一个程序正在使用串行端口时,我如何连接并向串行端口发送命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30826646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com