![](/img/trans.png)
[英]Can I use CircuitPython countio library on Raspberry pi 4B?
[英]Use Raspberry Pi 4B Terminal Command in Python Application
我目前正在開發一個小型 Python 應用程序,它將 Raspberry Pi 4B 變成 48 通道錄音機。 基礎工作,但在錄制過程中,我需要一個日志文件來告訴我何時開始錄制、發生了哪些 ALSA 警告以及何時停止錄制。
可以使用以下終端命令啟動記錄器:
pi@raspberrypi:~ $ rec -q -t caf --endian little --buffer 96000 -c 48 -b 24 /home/pi/myssd-one/Aufnahmen/test.caf 2>&1 | tee /home/pi/myssd-one/Aufnahmen/logging.log
這會在 test.caf 文件中記錄音頻並將 ALSA 警告寫入 logging.log 到目前為止一切順利。
Python 程序(應該在帶有 GUI 的觸摸屏上運行,以便輕松開始和停止錄制)負責可變音頻文件名(日期時間戳)並控制 LED 以顯示錄制正在運行。
這部分代碼負責打開和關閉:
#!/usr/bin/env python
from tkinter import *
import shlex
import os
import subprocess
import tkinter.font
import datetime
from gpiozero import LED
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(11, GPIO.OUT)
def ledToggle():
if led.is_lit:
led.off()
my_env = os.environ.copy()
my_env['AUDIODRIVER'] = 'alsa'
my_env['AUDIODEV'] = 'hw:KTUSB,0'
ledButton["text"] = "Turn Recorder on"
print ("recorder stops")
subprocess.Popen(['sudo', 'pkill', '-SIGINT', 'rec'], env = my_env, shell = FALSE, stdout=subprocess.PIPE)
else:
led.on()
my_env = os.environ.copy()
my_env['AUDIODRIVER'] = 'alsa'
my_env['AUDIODEV'] = 'hw:KTUSB,0'
ledButton["text"] = "Turn Recorder off"
print ("recorder starts")
##reference statement command line: "rec -q -t caf --endian little --buffer 96000 -c 48 -b 24 /home/pi/myssd-one/Aufnahmen/test.caf 2>&1 | tee /home/pi/myssd-one/Aufnahmen/logging.log"
command_line = shlex.split("rec '-q' '-t' 'caf' '--buffer' '96000' '-c 48' '-b 24' '/home/pi/myssd-one/Aufnahmen/test.caf' '"2>&1 | tee"' '/home/pi/myssd-one/Aufnahmen/logging.log'")
p1 = subprocess.Popen(command_line, env = my_env, shell = False, stdout=subprocess.PIPE)
我正在嘗試將原始命令行語句移動到 subprocess.Popen 命令中,但尚未成功。 完成路由到日志文件的部分失敗。 看起來啟動的 sox 應用程序“rec”試圖將其解釋為它自己的參數列表的一部分,而不是將其解釋為 stdout 和 stderr 到日志文件的重定向。 我感謝在這個問題上的一些指導。 音頻文件的變量文件名已經完成,但為了簡單起見,從這個代碼片段中取出。
謝謝馬克,我根據你的提示深入研究了這個命令行,它只能在 shell=True 下運行,這意味着它必須寫成一個完整的語句,而不用分隔逗號和轉義引號。 現在它起作用了。 實際上, shlex.split() 已經過時了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.