在游戏中如何抓取设备电流、电压、功率

            为了记录首次尝试使用程序自动抓取和监控设备电流、电压、功率数据,并自动生产CSV文档。

请品鉴完整代码:

import time  # 导入时间模块,用于延时和获取当前时间
import datetime  # 导入日期时间模块,用于格式化文件名和时间戳
import serial  # 导入串口通信模块
import serial.tools.list_ports  # 导入串口列表工具模块,用于获取可用的串口
import csv  # 导入CSV模块,用于写入CSV文件

# 定义要写入的数据表头
data = ['时间', '电流', '电压', '功率']
# 按照当前时间创建数据文件,精确到秒
file = open('./' + datetime.datetime.now().strftime('%H时%M分%S秒') + '20241118_wheel' + '.csv', 'w', newline='')
# 创建一个CSV写入器对象
writer = csv.writer(file)

writer.writerow(data)  # 写入表头

# 打印本机COM端口列表
port_list = list(serial.tools.list_ports.comports())

if len(port_list) == 0:
    print("未使用的串口!")
else:
    for port in port_list:  # 直接迭代port_list,使代码更简洁
        print(port)

# 提示用户输入串口名,如"COM12"
com = input('请输入列表中的串口名!\r\n')

# 初始化串口通信,波特率9600
ser = serial.Serial(com, 9600)
if ser.is_open:  # 使用is_open属性检查串口是否打开
    print("打开成功")
else:
    print("打开失败")

print('退出程序,请按[CTRL+C]。')
print('--------------------------------')

# 读取直流电源的电压值
ser.write("MEAS:VOLT?\n".encode("utf8"))  # 发送命令读取电压
vol = ser.readline().decode('ascii', 'ignore').strip()  # 读取并解码,去除首尾空白字符

def main():
    count = 0
    while True:
        count += 1
        # 读取直流电源的电流值
        ser.write("MEAS:CURR?\n".encode("utf8"))  # 发送命令读取电流
        line = ser.readline().decode('ascii', 'ignore').strip()  # 读取并解码,去除首尾空白字符
        
        # 转换电流值并计算功率
        current = float(line)
        power = current * float(vol)
        
        # 准备写入CSV的数据
        timestamp = datetime.datetime.now().strftime('%H:%M:%S.%f')  # 获取当前时间戳
        row_data = [timestamp, line, vol, format(power, '.6f')]  # 构造数据行
        
        writer.writerow(row_data)  # 写入CSV文件
        
        # 打印当前计数和功率
        print("count=" + str(count) + "    new_power:" + str(format(power, '.6f')))
        
        time.sleep(0.033)  # 延时33毫秒

if __name__ == "__main__":
    try:
        main()  # 运行主函数
    except KeyboardInterrupt:  # 捕获键盘中断(Ctrl+C)
        if ser.is_open:  # 检查串口是否打开
            ser.close()  # 关闭串口
        file.close()  # 关闭文件
        print("\n程序已退出。")  # 添加退出提示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jackyin0720

你的绵薄之力是对我最大的肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值