1 Star 0 Fork 173

幽兰/自美人工智能系统

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
run.py 3.43 KB
一键复制 编辑 原始数据 按行查看 历史
科艺创想 提交于 2022-01-11 16:08 . ## 2022-01-11版发布日志:
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
# @Date: 2020-01-03 09:09:04
# @LastEditTime: 2020-03-26 10:05:48
# @Description: 启动和停止 ./run.py debug ./run.py stop
import os
import subprocess
import sys
import time
from python.package.Mylib import Mylib
def stop(pname):
if processExist(pname):
print('[\033[31m停止任务 {} 成功!\033[0m]'.format(pname))
cmd = "sudo pkill -fe {}".format(pname)
os.system(cmd)
return 1
else:
return 0
def processExist(pname):
''' 查询pname进程是否存在 是则返回true '''
query = 'sudo ps ax | grep {} | grep -v grep '.format(pname)
out = os.popen(query).read()
return out != ''
def init():
os.chdir(os.path.dirname(os.path.abspath(__file__)))
# os.system("sudo alsactl --file data/conf/asound.state restore") # 加载音量设置
os.system("sudo amixer set Capture 70%") # 设置话筒
# os.system("alsactl --file data/conf/asound.state restore") # 加载音量设置
os.system("amixer set Capture 70%") # 设置话筒
# 设定目录权限 特别是pi
os.system("sudo chmod -R 0777 data")
os.system("sudo chmod -R 0777 runtime")
os.system("sudo chmod -R 0777 /music/")
bak = "data/conf/configBAK.yaml"
cfg = "config.yaml"
if not os.path.exists(cfg) or os.path.getsize(cfg) < 10:
os.system('sudo cp -f %s %s ' % (bak, cfg))
os.system('sudo chown pi.pi %s' % cfg)
os.system('sudo chmod 0666 %s' % cfg)
print("修复配置文件 %s ,以前配置丢失。 " % cfg)
# 如果屏幕配置为不启动 则也不启动前端app
mojing = Mylib.getConfig()["LoadModular"]["Screen"]
if mojing is False:
global tasks
del(tasks[2])
tasks = [
{"pname": "ControlCenter.py", "cmd": "python3 ControlCenter.py", "sleep": 1},
{"pname": "WebServer.py", "cmd": "python3 WebServer.py", "sleep": 1}, # 前端必须在第一位
{"pname": "moJing", "cmd": "export DISPLAY=:0.0 & app/moJing", "sleep": 1},
{"pname": os.path.basename(__file__), "cmd": __file__, "sleep": 1}] # 自已必须在最后一位
if __name__ == '__main__':
args = str(sys.argv[1:]).lower()
if 'stop' in args:
stop_i = 0
stop_i += stop('awake') # 语音唤醒
stop_i += stop('mplayer')
stop_i += stop('mosquitto')
for task in tasks:
stop_i += stop(task['pname'])
print('=='*40)
print( stop_i )
print('=='*40)
if 'debug' in args:
tasks[1]['cmd'] += " debug"
tasks[2]['cmd'] += " debug"
if not os.popen('export | grep DISPLAY').read():
del(tasks[2])
# 检测自己是否已运行
isroot = 0
if int(os.popen("id -u").read()) == 0:
isroot = 1
thisfile = os.path.basename(__file__)
cmd = "sudo ps ax | grep {} | grep -v grep | wc -l".format(thisfile)
n = int(os.popen(cmd).read()) - isroot
if n >= 2:
print("\033[31m{}已经运行! \033[0m结束任务用: ./{} stop".format(thisfile, thisfile))
exit()
init() # 运行前初始化工作
os.system("mosquitto -d") # 启动本地MQTT服务器
while True:
for task in tasks:
if not processExist(task['pname']):
print("\033[32mRun Task: %s\033[0m" % task['pname'])
subprocess.Popen(args=task['cmd'], shell=True)
time.sleep(task['sleep'])
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/yunhang2020/zimeimojing.git
git@gitee.com:yunhang2020/zimeimojing.git
yunhang2020
zimeimojing
自美人工智能系统
master

搜索帮助