Python调用可执行C语言文件的代码

#!/bin/bash
#一步启动两个程序
python3 doatest1.py &

build/bin/odaslive -c /home/aaaa/odas/config/usb4.cfg


#多线程代码
import threading
import queue

# 创建队列用于线程之间的数据传递
data_queue = queue.Queue()

def process_data(data):
    # 在这里处理数据,绘制圆圈等
    pass

def data_thread():
    # 启动C语言程序并获取数据的循环
    for line in process.stdout:
        # 将数据放入队列
        data_queue.put(line)

def video_thread():
    # 循环获取视频画面并处理
    while True:
        ret, frame = cap.read()

        # 从队列中获取数据
        try:
            data = data_queue.get_nowait()
            # 处理数据
            process_data(data)
        except queue.Empty:
            pass

        # 在这里处理视频画面,绘制圆圈等
        pass

# 创建线程
data_processing_thread = threading.Thread(target=data_thread)
video_processing_thread = threading.Thread(target=video_thread)

# 启动线程
data_processing_thread.start()
video_processing_thread.start()

# 等待线程结束(可选)
data_processing_thread.join()
video_processing_thread.join()
import subprocess

# 启动C语言程序,并通过管道捕获其输出
command = "./odaslive -c /home/aaaa/odas/config/usb4a.cfg"
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, text=True, bufsize=1, universal_newlines=True)

# 逐行读取并处理实时输出
for line in process.stdout:
    # 在这里处理每行输出,例如打印它
    print("实时输出:", line, end='')

# 等待进程完成(可选)
process.wait()

# 获取进程的返回码
return_code = process.returncode
print("返回码:", return_code)
import subprocess
import os

os.chdir("/home/aaaa/odas/build/bin")

command = "./odaslive -c /home/aaaa/odas/config/usb4a.cfg"

# 使用 subprocess.Popen 执行命令
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

# 读取标准输出和标准错误
stdout, stderr = process.communicate()

# 输出结果
print("标准输出:")
print(stdout)

# 如果需要,输出标准错误
if stderr:
    print("标准错误:")
    print(stderr)

# 获取命令的返回码
return_code = process.returncode
print("返回码:", return_code)
import subprocess

# 调用你的C语言可执行文件
process = subprocess.Popen(["./your_c_program"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

# 等待程序执行完成
stdout, stderr = process.communicate()

# 检查程序的返回码
if process.returncode == 0:
    print("C程序执行成功")
    print("标准输出:", stdout.decode("utf-8"))
else:
    print("C程序执行失败")
    print("标准错误:", stderr.decode("utf-8"))
import subprocess

# 要执行的命令
command = "./bin/odaslive -c config/odaslive/shao.cfg"

try:
    # 使用subprocess.run来执行命令
    result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=True)

    # 如果命令有输出,可以通过 result.stdout 获取标准输出的内容
    print("标准输出:", result.stdout)
except subprocess.CalledProcessError as e:
    # 如果执行失败,你可以捕获异常,并查看标准错误的输出
    print("C程序执行失败")
    print("标准错误:", e.stderr)
import subprocess
import json

# 调用C语言程序并捕获输出
command = "./build/bin/odaslive -c config/usb4a.cfg"
output = subprocess.check_output(command, shell=True, text=True)

# 输出结果
print("C语言程序输出:")
print(output)

# 解析JSON数据
try:
    data = json.loads(output)
    # 现在你可以处理数据,例如:
    time_stamp = data.get("timeStamp")
    src = data.get("src")
    if src is not None:
        for data_point in src:
            data_id = data_point.get("id")
            x = data_point.get("x")
            y = data_point.get("y")
            z = data_point.get("z")
            activity = data_point.get("activity")
            print(f"数据点 {data_id}: x={x}, y={y}, z={z}, 活动={activity}")
except json.JSONDecodeError as e:
    print("无法解析JSON数据:", e)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值