我正在构建一个在python上运行的quadcopter。在
script1
是一个让我控制4个马达速度的过程。在
script2
应该是一个调节马达的过程,以使我的四旋翼机保持稳定。在
我在script1.py
中有一个变量motorspeed
,我想把它导入script2.py
。我试过了
from script1.py import motorspeed
但是,这只启动script1.py
,而不执行script2
。由于script1.py
是while循环,script2.py
永远不会执行。while循环确实结束了,当我按下一个按钮(它关闭了quadcopter),所以我需要在script1.py
运行时运行script2.py
。我如何得到script2.py
中的变量motorspeed
来增加和降低电机的速度?在
你可以试试
根据你所描述的,你只需要实时改变速度。所以基本上你不应该在你的
script1
中放一个while循环。script1
应该只关注控制put(与机器接口)。然后在你的script2
(在你的例子中是main),你应该把你的while
循环放进去。在你不需要多个过程。您只需要寻找一些基本的并发性(即,在同一时间执行多个任务,而不需要一个阻塞另一个),从而可以使用线程。在
script1.py
:
^{pr2}$script2.py
:运行
script2.py
几秒钟的输出:基本上,你想把电机的速度从一个运行的
script1.py
发送到一个正在运行的script2.py
,对吗?在注意:从一个文件导入某个文件不会将该文件作为一个单独的进程运行!在
要使正在运行的程序交换数据,必须
至少有三种方法可以启动两个脚本,使它们同时运行。在
A)从命令行
B)使用
^{pr2}$subproces
。在script1.py
do中C)使用
multiprocessing
如何进行IPC取决于如何启动脚本。在
在这三种情况下,您都可以使用sockets作为通信手段。您必须将
script2
设置为所选端口号(比如12345)上的服务器。如果script1
想要增加或降低电机速度,它将连接到端口12345并发送包含新电机速度的消息。除了链接的howto之外,还有很多socket教程,这里的详细答案可能太长了。在如果选择使用} 。在
multiprocessing
(选项C),则可以使用共享内存^{当然
script2.main
应该识别一个参数! 两个进程现在都可以操作motorspeed
对象。在如果} 。在
script2
也可以改变motorspeed
是不可取的,那么可以设置^{在这种情况下,
script2.main
应该定期阅读消息!在总之,我建议走
multiprocessing
路线,因为它有最简单的建立沟通的方式。在相关问题 更多 >
编程相关推荐