python获取奥运奖牌

注意

素材说明: python获取奥运奖牌目前只在windows下验证过

注意

在windows下建议使用vscode运行,如果无法通讯时,建议使用管理员权限打开vscode再运行,由于pycharm需要配置虚拟环境,不建议在pycharm下运行,可能会导致无法通讯。

此例程属于python代码,仅提供参考,淘晶驰不提供python代码的技术支持。

python获取奥运奖牌代码

# 使用前请安装pyserial库和requests库

import requests
import serial #导入模块
import time
import json
from threading import Timer

# 端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM1 等
# 波特率,标准值:2400 4800 9600 19200 38400 57600 115200 230400 256000 512000 921600
port="com9"
baud=115200

# 初始化任务时间
task1time=600   #每600秒请求一次服务器数据,避免造成服务器负担过大,网络菩萨提供的免费服务器请小力薅,常怀感恩之心
task2time=10    #每10秒向屏幕发送一次

# 初始化金银铜牌数量
gold = 0
silver = 0
bronze = 0

url="https://api.mg-tool.cn/v1/jpb/?country=中国"
def repeat_task1():
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()  #将响应内容解析为JSON
        print(data)
        # 找到中国的奖牌数据
        china_medal_data = next(item for item in data['data'] if item['country'] == '中国')

        # 提取中国的金牌、银牌、铜牌数量
        global gold,silver,bronze
        gold = china_medal_data['gold']
        silver = china_medal_data['silver']
        bronze = china_medal_data['bronze']

        print(f"中国的金牌数:{gold}")
        print(f"中国的银牌数:{silver}")
        print(f"中国的铜牌数:{bronze}")

    else:
        print("获取数据失败:",response.status_code)

    Timer(task1time,repeat_task1).start()

def repeat_task2():
    try:
    #超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
    # 打开串口,并得到串口对象
        ser=serial.Serial(port=port,baudrate=baud,timeout=5)
        print("串口详情参数:", ser)
    # 写数据
        #注意:编码应与工程的编码一致(设备-字符编码,如果usarthmi中设置的为utf-8,则这里也填写utf8,如果usarthmi中设置的为GB2312,则这里也填写GB2312也可以填写GBK)
        # 金牌
        str = "gold.val=%d" %gold
        result=ser.write(str.encode())
        print("发送的数据为:"+str)
        # 发送结束符
        ser.write(bytes.fromhex('ff ff ff'))
        # 银牌
        str = "silver.val=%d" % silver
        result = ser.write(str.encode())
        print("发送的数据为:"+str)
        # 发送结束符
        ser.write(bytes.fromhex('ff ff ff'))
        # 铜牌
        str = "bronze.val=%d" % bronze
        result = ser.write(str.encode())
        print("发送的数据为:" + str)
        # 发送结束符
        ser.write(bytes.fromhex('ff ff ff'))
        ser.close()#关闭串口

    except Exception as e:
        print("---异常---:",e)

    Timer(task2time, repeat_task2).start()

if __name__ == '__main__':
    repeat_task1()
    repeat_task2()