Great_data=>Copy_Data=>Chart_RealTime=>UI_All

Great_data

import csv
import os
import random
from datetime import datetime
import logging
import time

# 配置日志记录
logging.basicConfig(filename='D:/Tim_Study/Case/Great_Data/log.txt',
                    level=logging.INFO,
                    format='%(asctime)s - %(levelname)s - %(message)s')

def 记录日志(消息):
    logging.info(消息)
    print(消息)

def 生成随机记录():
    # 生成随机数据
    aX_ICM_1 = random.uniform(-0.29969177, 0.29969177)
    aY_ICM_1 = random.uniform(0.6930143, 2.29969177)
    aZ_ICM_1 = random.uniform(-0.6866665, 0.69969177)
    timestamp = datetime.now().strftime("%Y/%m/%d %H:%M:%S:%f")[:-3]  # 格式化时间戳

    aX_MPU_1 = random.uniform(-0.38232422, 0.69969177)
    aY_MPU_1 = random.uniform(0.5595703, 0.79969177)
    aZ_MPU_1 = random.uniform(0.7294922, 2.7294922)

    # 数据记录列表
    record = [
        aX_ICM_1,
        aY_ICM_1,
        aZ_ICM_1,
        timestamp,
        aX_MPU_1,
        aY_MPU_1,
        aZ_MPU_1
    ]
    return record

def 追加到CSV(文件路径, 记录, 表头=None):
    # 尝试写入CSV文件
    try:
        if not os.path.exists(文件路径):
            # 如果文件不存在,则创建新文件并写入表头
            with open(文件路径, mode='w', newline='', encoding='utf-8') as 文件:
                writer = csv.writer(文件)
                if 表头:
                    writer.writerow(表头)
                writer.writerow(记录)
        else:
            # 否则追加记录
            with open(文件路径, mode='a', newline='', encoding='utf-8') as 文件:
                writer = csv.writer(文件)
                writer.writerow(记录)
        记录日志(f"记录已追加到 {文件路径}")
    except PermissionError:
        记录日志("权限拒绝:请确保目录可访问,并尝试以管理员身份运行脚本。")
    except Exception as e:
        记录日志(f"写入CSV时发生错误:{e}")

# 定义文件路径
基础目录 = 'D:/Tim_Study/Case/Great_Data/Data'
os.makedirs(基础目录, exist_ok=True)  # 创建目录(如果不存在)

# 文件名称模板
文件名模板 = 'AA@BB@{index}@{time}.csv'
文件索引 = 0

# 获取所有符合条件的文件
文件列表 = []
for 文件名 in os.listdir(基础目录):
    if 文件名.startswith('AA@BB@'):
        文件路径 = os.path.join(基础目录, 文件名)
        文件列表.append(文件路径)

# 按照时间戳排序文件列表
文件列表.sort(key=lambda x: int(os.path.basename(x).split('@')[2].split('.')[0]), reverse=True)

# 只保留最新的两个文件
保留文件列表 = 文件列表[:1]
删除文件列表 = 文件列表[1:]

# 删除多余的文件,并记录到日志
for 文件路径 in 删除文件列表:
    os.remove(文件路径)
    记录日志(f"{文件路径} 已被删除。")

# 如果没有文件,则创建第一个文件
if not 保留文件列表:
    文件索引 += 1
    当前时间 = datetime.now().strftime("%Y%m%d_%H%M%S_%f")[:-3]
    文件路径 = os.path.join(基础目录, 文件名模板.format(index=文件索引, time=当前时间))
    表头 = [ 'aX_ICM_1', 'aY_ICM_1', 'aZ_ICM_1', '时间戳','aX_MPU_1', 'aY_MPU_1', 'aZ_MPU_1']
    追加到CSV(文件路径, 表头, 表头=表头)
    记录日志(f"{文件路径} 已创建并写入表头。")
    保留文件列表.append(文件路径)

# 开始生成记录
记录总数 = 0
while 文件索引 <= 1:
    for 文件路径 in 保留文件列表:
        if 记录总数 >= 10:
            文件索引 += 1
            if 文件索引 > 1:
                记录日志("所有文件均已达到最大行数。")
                break
            当前时间 = datetime.now().strftime("%Y%m%d_%H%M%S_%f")
            文件路径 = os.path.join(基础目录, 文件名模板.format(index=文件索引, time=当前时间))
            表头 = [ 'aX_ICM_1', 'aY_ICM_1', 'aZ_ICM_1', '时间戳','aX_MPU_1', 'aY_MPU_1', 'aZ_MPU_1']
            追加到CSV(文件路径, 表头, 表头=表头)
            记录日志(f"{文件路径} 已创建并写入表头。")
            保留文件列表.append(文件路径)
            记录总数 = 0

        记录 = 生成随机记录()
        追加到CSV(文件路径, 记录)
        记录总数 += 1
        记录日志(f"当前 {文件路径} 总行数为:{记录总数}")
 
    if 文件索引 > 2:
        break

记录日志("处理完成。")

print("Task completed. Will reboot in 3 minutes.")
time.sleep(180)  # 等待180秒
print("Rebooting now...")
os.system('sudo reboot')

'''
[Unit]
Description=Great Data Service
After=network.target

[Service]
User=pi
WorkingDirectory=/home/pi/Great_Data
ExecStart=/usr/bin/python3 /home/pi/Great_Data/Great_data.py

[Install]
WantedBy=multi-user.target

'''

Copy_Data

import pyautogui
import time
import os
import shutil

#10 秒计时后开始运行
pyautogui.countdown(3)


#到达位置鼠标左键单击
pyautogui.click(1154,1038,button='left')#任务栏图标
time.sleep(0.1)
pyautogui.click(1158,910,button='left')#VNC程序
time.sleep(0.1)
pyautogui.click(659,65,button='left')#PI程序
time.sleep(0.1)##
pyautogui.click(1285,366,button='left')#MENU 菜单
time.sleep(0.1)
pyautogui.click(1170,486,button='left')#File Transfer
time.sleep(0.1)
pyautogui.click(743,677,button='left')#SendFile
time.sleep(0.1)
pyautogui.click(953,498,button='left')#File选择
time.sleep(0.1)
pyautogui.click(1039,615,button='left')#OK
time.sleep(0.1)
pyautogui.click(1039,616,button='left')#桌面路径
time.sleep(0.1)
pyautogui.click(1002,762,button='left')#确定
time.sleep(0.1)
pyautogui.click(1298,300,button='left')#X1
time.sleep(0.1)
pyautogui.click(1190,373,button='left')#X2
time.sleep(0.1)
pyautogui.click(1295,333,button='left')#X3
time.sleep(0.1)

pyautogui.click(1157,1037,button='left')##VNC程序
time.sleep(0.1)
pyautogui.click(1465,874,button='left')#Close File Transfere
time.sleep(0.1)

#到达位置鼠标左键双击
pyautogui.doubleClick(x=1298, y=301, button="left")
time.sleep(1.2)
#pyautogui.click(922,68,button='left')
#time.sleep(1)

#存储截图
im = pyautogui.screenshot()
im.save(r'D:\GGY\屏幕截图.png')

#####获取最新文件,并单独复制至处理文件夹

# 定义源目录和目标目录
src_dir = r'C:\Users\Administrator\Desktop\Great_Data\Data'
dst_dir = r'C:\Users\Administrator\Desktop\Great_Data\Data\Send'
# 如果目标目录不存在,则创建之
if not os.path.exists(dst_dir):
    os.makedirs(dst_dir)

# 获取目录下所有的文件及其修改日期,并找到最新的那个
files = [os.path.join(src_dir, f) for f in os.listdir(src_dir) if os.path.isfile(os.path.join(src_dir, f))]
files.sort(key=lambda x: os.path.getmtime(x), reverse=True)

# 检查是否找到了文件
if files:
    latest_file = files[0]
    print(f'Copying the latest file: {latest_file}')
    shutil.copy2(latest_file, dst_dir)  # 使用shutil.copy2来保持元数据
else:
    print('No files found in the directory.')

#####获取最新文件,并单独复制至处理文件夹    

#填入参数, 第一参数是输入内容,第二个参数是每个字符间的间隔时间;
#pyautogui.moveTo(1241,311)
#count=(r'd:\aa')
#for c in str(count):
#    pyautogui.keyDown(c)

#填入参数, 第一参数是输入内容,第二个参数是每个字符间的间隔时间;
#pyautogui.click(915,87,button='left')
#time.sleep(2)
#pyautogui.click(364,284,button='left')
#count=(2  )
#for cc in str(count):
#    pyautogui.keyDown(cc)
    

#实时显示坐标
#pyautogui.displayMousePosition()

Chart_RealTime

 

import os
import pygame
import pandas as pd
import glob
import logging
from pygame.locals import *

# 配置日志记录
log_path = r'D:\Tim_Study\Case\Chart_RealTime\log.txt'
logging.basicConfig(filename=log_path, level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

# 初始化pygame
pygame.init()

# 设置窗口大小和标题
WINDOW_WIDTH = 1920
WINDOW_HEIGHT = 1080
WINDOW_TITLE = "Pump PHM"
screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption(

void S1mmeSession::CtEncodeKqi(S1MMEKQI* kqi, S1APNode* p_node, uint8_t worker_id) { MsgCommonInfo& common = p_node->GetCommonInfo(); SPUserInfo& sp_user_info = p_node->GetUserInfo(); //获取 buf TlvEncoder* p_encoder_cur = g_p_encoder_[worker_id]; YdCDR_T* p_dst_data = (YdCDR_T*)malloc(sizeof(YdCDR_T)); if (p_dst_data == NULL) { return; } p_dst_data->not_associate = 0; if ((common.not_associate & 0x03) == 0x03) p_dst_data->not_associate = 1; p_encoder_cur->Set(p_dst_data->cdr_data,kMaxOneCdrBufLen); uint64_t imsi = sp_user_info->GetIMSI(); if(common.eci == 0) { common.eci = sp_user_info->GetEci(); } uint16_t tmp_enbid = common.tac;//>>8; //uint32_t tmp_enbid = (common.eci >> 8)&0xfffff; char xdrid_str[32]={0}; #ifdef OPEN_NEW_HUISU convert_xdrid_to_string(xdrid_str, kqi->xdrid, s_xdr_id_len); #else #ifdef OPENCTPR g4sigtran::pr::ProcBlock* p_blk = kqi->binary_block_in_xdr_.GetBlock(); p_blk->SerializeXid(xdrid_str, sizeof(xdrid_str)); #else uint64_t subcdrid = g_ct_xdr_id.GetXid(); //reverse subend; if(::is_open_reverse) { SetReverseSubend(p_node, subcdrid); } #ifdef ONE_THIRD_YUNNAN_MRO g_ct_xdr_id.Serialize((uint8_t*)xdrid_str, s_xdr_id_len, imsi); #else g_ct_xdr_id.Serialize((uint8_t*)xdrid_str, s_xdr_id_len); #endif #endif #endif struct timespec start_time = kqi->request_time_, end_time = kqi->response_time_; if (kqi->request_time_.tv_sec == 0) { if (!(kqi->response_time_.tv_sec == 0)) { start_time = kqi->response_time_; } else if (!(kqi->complete_time_.tv_sec == 0)) { start_time = kqi->complete_time_; } }要求:在S1mmeSession::CtEncodeKqi函数后面新加一个函数,来维护一组key、value的关系。 key为:imsi value为:imsi、imei、common.eci、common.tac、last_time 当imsi相同时,以最后一条记录的value内容为准进行保存;imsi不同时直接插入。请用C++实现该功能,需要用到哈希的知识点
06-13
像进行JPEG解压缩,并将解压缩后的图像存储到视频文件中。 ```matlab outputVideo =好的,根据您的要求,我可以为您提供以下C++代码来实现所需功能,其中使用了哈希表来维护key-value关系: #include <unordered_map> #include <ctime> struct KqiInfo { uint64 VideoWriter('compressed.avi'); open(outputVideo); for k = 1:numFrames decoded_img = decoded_imgs{k}; % 调_t imsi; uint64_t imei; uint32_t eci; uint16_t tac; timespec last_time; }; std::unordered_map<uint64_t, KqiInfo> kqi_map; void update_kqi_map(S1MMEKQI用jpegdec函数进行JPEG解压缩 img = jpegdec(decoded_img); writeVideo(outputVideo,img); end close(output* kqi, S1APNode* p_node) { MsgCommonInfo& common = p_node->GetCommonInfo(); SPUserInfo& sp_user_info = p_node->GetUserInfo(); uint64_t imsi = sp_user_info->GetIMSI(); uintVideo); ``` 完整的代码如下: ```matlab % 读取视频文件并将每一帧图像进行64_t imei = sp_user_info->GetIMEI(); uint32_t eci = common.eci; uint16_t tacJPEG压缩 vidObj = VideoReader('sample.avi'); numFrames = vidObj.NumberOfFrames; for k = 1:numFrames = common.tac; timespec now; clock_gettime(CLOCK_REALTIME, &now); KqiInfo kqi_info = {imsi, imei, eci, tac, now}; kqi_map[imsi] = kqi_info; } 在 img = read(vidObj, k); compressed_img = jpegenc(img); % 调用jpegenc函数进行JPEG压缩原有的S1mmeSession::CtEncodeKqi函数中,调用update_kqi_map函数即可将相关信息保存到哈希表中。如果imsi已经存在,会自动覆盖原有记录;如果imsi不存在,则新,返回压缩后的图像 % 将压缩后的图像存储到数组中,用于后续的建一条记录。需要注意的是,本代码中使用的哈希表默认使用std::hash函数进行哈希,如果需要自定义哈希函数可以通过std::unordered_map的第三个模板参数传入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值