首页 > 解决方案 > 如何以有效的方式从此类中获取数据?

问题描述

我正在尝试从 f1 游戏中获取数据。目前我能够访问保存数据的类。但无法从中获取数据。问题是该类似乎没有属性。到目前为止,这是我的代码:

from f1_2020_telemetry.packets import unpack_udp_packet
import socket
import f1_2020_telemetry.packets

udp_socket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)
udp_socket.bind(("", 20777))

while True:
    udp_packet = udp_socket.recv(2048)  # Reading udp-packet
    packet = unpack_udp_packet(udp_packet)  # Packing up udp-packet

    if isinstance(packet, f1_2020_telemetry.packets.PacketLapData_V1):
        print(type(packet))
        break

输出:<class 'f1_2020_telemetry.packets.PacketLapData_V1'>

如果我这样输入:

if isinstance(packet, f1_2020_telemetry.packets.PacketLapData_V1):
    print(packet)
    break

输出将是: PacketLapData_V1(header=PacketHeader(packetFormat=2020, gameMajorVersion=1, gameMinorVersion=19), lapData=[LapData_V1(lastLapTime=111.75323486328125, currentLapTime=1004.9793701171875), LapData_V1(lastLapTime=98.846435546875, currentLapTime=23.304824829101562), LapData_V1(lastLapTime=100.474609375, currentLapTime=84.88221740722656)])

所以我知道信息在那里,但我不能用例如访问它packet.lastLapTime。令我惊讶的是它packet.__dict__返回 0。我能够将整个内容读取为字符串,然后对其进行切片和拆分,但想知道一种更简单的方法来处理这个问题。

链接到包含有关数据包信息的站点: https ://forums.codemasters.com/topic/50942-f1-2020-udp-specification/ 链接到我正在使用的库: https ://gitlab.com/gparent/f1 -2020-遥测/

标签: python

解决方案


推荐阅读