Python - 可从多个模块访问的全局串行obj实例

时间:2015-09-22 04:53:04

标签: python global

我有5个不同的游戏用python编写,运行在树莓派上。每个游戏都需要使用串行连接将数据传入和传出到控制器。一些其他代码(用nodeJS编写)可以让用户选择任何游戏。

我想我每次开始和完成游戏时都不想打开和关闭串口。无论如何要将串行对象实例设为“全局”,打开一次,然后从多个游戏模块访问它,所有这些都可以随意打开和关闭?

我看到如果我创建一个将Serial对象分配给变量的模块(使用PySerial),我可以从任何继续导入第一个模块的模块访问该变量,但我可以看到使用id()函数当它们被各种游戏导入时,它们实际上是不同的对象 - 不同的实例。

关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:0)

将串口的打开和管理委托给单独的守护程序,并使用UNIX域套接字将串行端口的文件描述符传输到客户端程序。

答案 1 :(得分:0)

串行对象说它将处理到达特定端口的数据。

您在端口上有can't have more than one process handling TCP个数据。

当游戏导入公共串行模块时,我认为它们是在不同的进程中运行,这意味着它们无法在同一个端口上创建一个串行对象。

您必须让公共模块在同一个流程或新流程中运行游戏。对不起,这个答案有点笼统,但你的问题很广泛。