CT511 4G模块 UART

好了 初步写了一下啊 micropython的设置:

from machine import Pin,UART
import time,re

class CT511(object):
    def __init__(self,tx=0,rx=1,num=0):
        self.uart=UART(num, baudrate=115200, tx=Pin(tx), rx=Pin(rx),rxbuf=2048,txbuf=2048)
        self.init_system()
        print("4G init")
        time.sleep(3)
        print("done")
        self.open_http()
    def init_system(self):
        return self.uart_write("""AT+QICSGP=1,1,"","",""""")
    def open_http(self):
        return self.uart_write("""AT$HTTPOPEN""")
    def close_http(self):
        return self.uart_write("""AT$HTTPCLOSE""")
    def start_get(self,url,port=80):
        url_cmd_1="AT$HTTPPARA="+url+","+str(port)
        url_cmd_2="AT$HTTPACTION=0"
        self.uart_write(url_cmd_1)
        return self.uart_write(url_cmd_2,10)
        # 0.5s GET
#     下面与股票API有关
    def uart_write(self,cmd,t=1):
        self.uart.write(cmd+"\r")
        time.sleep(0.2*t)
        return self.uart.read()
    def get_gp(self,code="000858",hs="sz"):
        if hs=="sz":
            hs="sz"
        else:
            hs="sh"
        url="http://qt.gtimg.cn/q="+hs+str(code)
        info=self.start_get(url)
        if info:
            gp=self.get_rev(info)
            if gp:
                return gp
        return False
    def get_rev(self,info,status=200):
        if b'HTTP/1.1 200 OK' in info:
            li=info.split(b"~")
            if len(li)>10:
                li=info.split(b"~")
                gp={}
                gp['name']=li[1] #编码问题 无法str
                gp['now']=li[3]
                gp['yestday']=li[4]
                gp['start']=li[5]
                gp['ud']=li[31] #涨跌
                gp['rate']=li[32] #涨跌率
                gp['top']=li[33]
                gp['down']=li[34]
                gp['buy_n']=li[36]
                gp['buy_m']=li[37] #万元
                gp['change']=li[38] #成交率
                self.gp=gp
                return gp
        return False

ct511=CT511()
info=ct511.start_get("http://qt.gtimg.cn/q=sz000858")
bal=ct511.get_rev(info)
ct511.get_gp("600020","sh")

需要取得的信息 GET 未解决的信息

#GET取得的原始信息 bytes 混合GBK 需要转str


b'AT$HTTPACTION=0\r\r\n$HTTPRECV:DATA,272\r\nHTTP/1.1 200 OK\r\nDate: Tue, 11 Feb 2025 06:31:12 GMT\r\nContent-Type: text/html; charset=GBK\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\nServer: openresty/1.11.2.1\r\nExpires: Tue, 11 Feb 2025 06:31:12 GMT\r\nCache-Control: max-age=0\r\nAccess-Control-Allow-Origin: *\r\n\r\n\r\n$HTTPRECV:DATA,520\r\nv_sz000858="51~\xce\xe5 \xc1\xb8 \xd2\xba~000858~126.00~127.53~127.60~158580~64547~94021~125.99~1~125.98~8~125.97~62~125.96~56~125.95~80~126.00~7~126.03~7~126.04~38~126.05~7~126.06~16~~20250211143109~-1.53~-1.20~128.07~125.72~126.00/158580/2001872045~158580~200187~0.41~15.14~~128.07~125.72~1.84~4890.72~4890.83~3.87~140.28~114.78~1.09~132~126.24~14.71~16.19~~~1.30~200187.2045~0.0000~0~ ~GP-A~-8.34~-0.94~5.75~23.69~19.58~176.18~103.75~-4.35~-1.76~-18.13~3881525907~3881608005~46.81~-12.56~3881525907~~~-0.27~-0.01~~CNY~0~~126.12~-108";\n\r\nOK\r\n'

状态
\r\nHTTP/1.1 200 OK\r\n

在之
\r\n$HTTPRECV:DATA,520\r\n
后的数据。

发表回复