STM32将串口信息发送到NB-ioT模块


/*-----------------------------------------------------*/
/*             µÛÔ¼¿ÆÓ¢STM32ϵÁпª·¢°å                */
/*-----------------------------------------------------*/
/*                     ³ÌÐò½á¹¹                        */
/*-----------------------------------------------------*/
/*out1 -> B14
  out2 -> B5
    out3 -> B8
    out4 -> B6
    
    key  -> A10
    GA6_RST->C13
    GAT_CHECK->B1
    ָʾµÆ->B10
    ESP8266_RST->A0
    scl->A6
    sda->A5
    */
/*-----------------------------------------------------*/
#include "stm32f10x.h"  //°üº¬ÐèÒªµÄÍ·Îļþ
#include "main.h"       //°üº¬ÐèÒªµÄÍ·Îļþ
#include "delay.h"
#include "usart1.h"     //°üº¬ÐèÒªµÄÍ·Îļþ
#include "usart2.h"     //°üº¬ÐèÒªµÄÍ·Îļþ
#include "timer2.h"     //°üº¬ÐèÒªµÄÍ·Îļþ
#include "timer3.h"     //°üº¬ÐèÒªµÄÍ·Îļþ
#include "timer4.h"     //°üº¬ÐèÒªµÄÍ·Îļþ
#include "GA6.h"        //°üº¬ÐèÒªµÄÍ·Îļþ
#include "led.h"        //°üº¬ÐèÒªµÄÍ·Îļþ
#include "mqtt.h"       //°üº¬ÐèÒªµÄÍ·Îļþ
#include "dht11.h"
#include "lcd.h"
#include "distance.h"  
#include "ADXL345.h"
#include "sys.h"
#include "usart.h"
#include "ut.h"
#include "ds18b20.h"
#include "bsp_adc.h"
//#include "oled.h"
char *CMD1 = "APP+DTSW=1C";     //¿ª¹Ø1¿ØÖÆÃüÁ״̬·­×ª£¬¿ª->¹Ø ¹Ø->¿ª 
extern int weiyi;
int wendu=97;
int yali=96;
#define x 48 //´Ë´¦¸Ä±äÆÁÄ»ÏÔʾλÖÃ
#define y 2
#define x2 4
#define y2 4
#define uint unsigned int
    // ADC1ת»»µÄµçѹֵͨ¹ýMDA·½Ê½´«µ½SRAM
extern __IO uint16_t ADC_ConvertedValue[NOFCHANEL];

// ¾Ö²¿±äÁ¿£¬ÓÃÓÚ±£´æ×ª»»¼ÆËãºóµÄµçѹֵ      
float ADC_ConvertedValueLocal[NOFCHANEL];    
float S2,S4,S1;  //¾àÀë
extern volatile float distance;
u8 temperature;          
u8 humidity; 
int main(void) 
{    
    int i=21,j=0;
    u8 devid;
    u8 aa[20] = {"Distance :"};
    //u16 DS18B20Temp=20;
    //u16 DHT11Temp=20;
    //Ultrasound_Init();    
    delay_init();
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);     
    uart_init(115200);     //´®¿Ú³õʼ»¯Îª115200
    ADCx_Init();
    DS18B20_Init();
    //OLED_Init();
    //OLED_Clear();
    //OLED_ShowString(0,0,aa,16);
    LCD_Init();                   //³õʼ»¯LCD  
    POINT_COLOR=BLACK;
    Usart1_Init(9600);              //´®¿Ú1¹¦Äܳõʼ»¯£¬²¨ÌØÂÊ9600
    Usart2_Init(115200);            //´®¿Ú2¹¦Äܳõʼ»¯£¬²¨ÌØÂÊ115200    
    TIM4_Init(300,7200);            //TIM4³õʼ»¯£¬¶¨Ê±Ê±¼ä 300*7200*1000/72000000 = 30ms
    LED_Init();                        //LED³õʼ»¯
  MQTT_Buff_Init();               //³õʼ»¯½ÓÊÕ,·¢ËÍ,ÃüÁîÊý¾ÝµÄ »º³åÇø ÒÔ¼°¸÷״̬²ÎÊý
    AliIoT_Parameter_Init();        //³õʼ»¯Á¬½ÓOneNetÔÆIoTƽ̨MQTT·þÎñÆ÷µÄ²ÎÊý    
    while(DHT11_Init())    //DHT11³õʼ»¯    
    {
        LCD_ShowString(30,130,200,16,16,"DHT11 Error");
        delay_ms(200);
        LCD_Fill(30,130,239,130+16,WHITE);
         delay_ms(200);
    }
      LCD_ShowString(30,40,200,16,16,"QIAO QIAO WO MEN DUI");    
    LCD_ShowString(30,60,200,16,16,"2023-7");     
    Init_ADXL345();  
    devid=Single_Read_ADXL345(0X00);    //¶Á³öµÄÊý¾ÝΪ0XE5,±íʾÕýÈ·
    while(1)                        //Ö÷Ñ­»·
    {
        Multiple_read_ADXL345();           //Á¬Ðø¶Á³öÊý¾Ý£¬´æ´¢ÔÚBUFÖÐ
        //Multiple_read_ADXL345
        //DS18B20Temp=DS18B20_Get_Temp()/10;
        DHT11_Read_Data(&temperature,&humidity);    //¶ÁÈ¡ÎÂʪ¶ÈÖµ
        //wendu = (int)DS18B20Temp;
        //OLED_ShowString(0,2,"TEM:",16);
        //OLED_ShowString(0,4,"AD:",16);
        LCD_ShowString(30,80,200,16,16,"TEM:");
    LCD_ShowString(30,100,200,16,16,"HUM:");
        LCD_ShowString(30,120,200,16,16,"AD:");
        //LCD_ShowString(30,178,100,16,16,aa);
    LCD_ShowString(30,140,36,16,16,"X:");
    LCD_ShowString(30,160,36,16,16,"Y:");
    LCD_ShowString(30,180,36,16,16,"Z:");

        if(i>20){
        i = 0;
        //Send();
        ADC_ConvertedValueLocal[1] =(float) ADC_ConvertedValue[1]/4096*3.3;
        yali = (int)(ADC_ConvertedValue[1]/30);
        }
        i++;
        j++;
        //OLED_ShowNum(40,4,yali,3,16);
        //OLED_ShowNum(40,2,wendu,3,16);
        LCD_ShowNum(60,120,yali,2,16);//X_num
        LCD_ShowNum(70,80,temperature,2,16);
    LCD_ShowNum(70,100,humidity,2,16);
    LCD_ShowNum(58,140,X_num,2,16);
    LCD_ShowNum(58,160,Y_num,2,16);
    LCD_ShowNum(58,180,Z_num,2,16);
        /*--------------------------------------------------------------------*/
        /*   Connect_flag=1ͬ·þÎñÆ÷½¨Á¢ÁËÁ¬½Ó,ÎÒÃÇ¿ÉÒÔ·¢²¼Êý¾ÝºÍ½ÓÊÕÍÆËÍÁË    */
        /*--------------------------------------------------------------------*/
        if(Connect_flag==1){     
            /*-------------------------------------------------------------*/
            /*                     ´¦Àí·¢ËÍ»º³åÇøÊý¾Ý                      */
            /*-------------------------------------------------------------*/
                if(MQTT_TxDataOutPtr != MQTT_TxDataInPtr){                //if³ÉÁ¢µÄ»°£¬ËµÃ÷·¢ËÍ»º³åÇøÓÐÊý¾ÝÁË
                //3ÖÖÇé¿ö¿É½øÈëif
                //µÚ1ÖÖ£º0x10 Á¬½Ó±¨ÎÄ
                //µÚ2ÖÖ£º0x82 ¶©Ôı¨ÎÄ£¬ÇÒConnectPack_flagÖÃ룬±íʾÁ¬½Ó±¨Îijɹ¦
                //µÚ3ÖÖ£ºSubcribePack_flagÖÃλ£¬ËµÃ÷Á¬½ÓºÍ¶©Ôľù³É¹¦£¬ÆäËû±¨ÎĿɷ¢
                if((MQTT_TxDataOutPtr[1]==0x10)||((MQTT_TxDataOutPtr[1]==0x82)&&(ConnectPack_flag==1))||(SubcribePack_flag==1)){    
                    u1_printf("·¢ËÍÊý¾Ý:0x%x\r\n",MQTT_TxDataOutPtr[0]);  //´®¿ÚÌáʾÐÅÏ¢

                    MQTT_TxData(MQTT_TxDataOutPtr);                       //·¢ËÍÊý¾Ý
                    MQTT_TxDataOutPtr += BUFF_UNIT;                       //Ö¸ÕëÏÂÒÆ
                    if(MQTT_TxDataOutPtr==MQTT_TxDataEndPtr)              //Èç¹ûÖ¸Õëµ½»º³åÇøÎ²²¿ÁË
                        MQTT_TxDataOutPtr = MQTT_TxDataBuf[0];            //Ö¸Õë¹éλµ½»º³åÇø¿ªÍ·
                }                 
            }//´¦Àí·¢ËÍ»º³åÇøÊý¾ÝµÄelse if·ÖÖ§½áβ
            
            /*-------------------------------------------------------------*/
            /*                     ´¦Àí½ÓÊÕ»º³åÇøÊý¾Ý                      */
            /*-------------------------------------------------------------*/
            if(MQTT_RxDataOutPtr != MQTT_RxDataInPtr){  //if³ÉÁ¢µÄ»°£¬ËµÃ÷½ÓÊÕ»º³åÇøÓÐÊý¾ÝÁË                                                        
                u1_printf("½ÓÊÕµ½Êý¾Ý:%x\r\n",MQTT_RxDataOutPtr[0]);
                /*-----------------------------------------------------*/
                /*                    ´¦ÀíCONNACK±¨ÎÄ                  */
                /*-----------------------------------------------------*/                
                //ifÅжϣ¬Èç¹ûÒ»¹²½ÓÊÕÁË4¸ö×Ö½Ú£¬µÚÒ»¸ö×Ö½ÚÊÇ0x20£¬±íʾÊÕµ½µÄÊÇCONNACK±¨ÎÄ
                //½Ó×ÅÎÒÃÇÒªÅжϵÚ4¸ö×Ö½Ú£¬¿´¿´CONNECT±¨ÎÄÊÇ·ñ³É¹¦
                if((MQTT_RxDataOutPtr[0]==4)&&(MQTT_RxDataOutPtr[1]==0x20)){                         
//                    switch(MQTT_RxDataOutPtr[4]){                    
//                        case 0x00 : u1_printf("CONNECT±¨Îijɹ¦\r\n");                            //´®¿ÚÊä³öÐÅÏ¢    
//                                    ConnectPack_flag = 1;                                        //CONNECT±¨Îijɹ¦£¬¶©Ôı¨ÎĿɷ¢
//                                    break;                                                       //Ìø³ö·ÖÖ§case 0x00                                              
//                        case 0x01 : u1_printf("Á¬½ÓÒѾܾø£¬²»Ö§³ÖµÄЭÒé°æ±¾£¬×¼±¸ÖØÆô\r\n");     //´®¿ÚÊä³öÐÅÏ¢
//                                    Connect_flag = 0;                                            //Connect_flagÖÃÁã£¬ÖØÆôÁ¬½Ó
//                                    break;                                                       //Ìø³ö·ÖÖ§case 0x01   
//                        case 0x02 : u1_printf("Á¬½ÓÒѾܾø£¬²»ºÏ¸ñµÄ¿Í»§¶Ë±êʶ·û£¬×¼±¸ÖØÆô\r\n"); //´®¿ÚÊä³öÐÅÏ¢
//                                    Connect_flag = 0;                                            //Connect_flagÖÃÁã£¬ÖØÆôÁ¬½Ó
//                                    break;                                                       //Ìø³ö·ÖÖ§case 0x02 
//                        case 0x03 : u1_printf("Á¬½ÓÒѾܾø£¬·þÎñ¶Ë²»¿ÉÓã¬×¼±¸ÖØÆô\r\n");         //´®¿ÚÊä³öÐÅÏ¢
//                                    Connect_flag = 0;                                            //Connect_flagÖÃÁã£¬ÖØÆôÁ¬½Ó
//                                    break;                                                       //Ìø³ö·ÖÖ§case 0x03
//                        case 0x04 : u1_printf("Á¬½ÓÒѾܾø£¬ÎÞЧµÄÓû§Ãû»òÃÜÂ룬׼±¸ÖØÆô\r\n");   //´®¿ÚÊä³öÐÅÏ¢
//                                    Connect_flag = 0;                                            //Connect_flagÖÃÁã£¬ÖØÆôÁ¬½Ó                        
//                                    break;                                                       //Ìø³ö·ÖÖ§case 0x04
//                        case 0x05 : u1_printf("Á¬½ÓÒѾܾø£¬Î´ÊÚȨ£¬×¼±¸ÖØÆô\r\n");               //´®¿ÚÊä³öÐÅÏ¢
//                                    Connect_flag = 0;                                            //Connect_flagÖÃÁã£¬ÖØÆôÁ¬½Ó                        
//                                    break;                                                       //Ìø³ö·ÖÖ§case 0x05         
//                        default   : u1_printf("Á¬½ÓÒѾܾø£¬Î´Öª×´Ì¬£¬×¼±¸ÖØÆô\r\n");             //´®¿ÚÊä³öÐÅÏ¢ 
//                                    Connect_flag = 0;                                            //Connect_flagÖÃÁã£¬ÖØÆôÁ¬½Ó                    
//                                    break;                                                       //Ìø³ö·ÖÖ§case default                                 
//                    }    
ConnectPack_flag = 1;
                }            
                //ifÅжϣ¬Èç¹ûÒ»¹²½ÓÊÕÁË5¸ö×Ö½Ú£¬µÚÒ»¸ö×Ö½ÚÊÇ0x90£¬±íʾÊÕµ½µÄÊÇSUBACK±¨ÎÄ
                //½Ó×ÅÎÒÃÇÒªÅж϶©ÔĻظ´£¬¿´¿´ÊDz»Êdzɹ¦
                else if((MQTT_RxDataOutPtr[0]==5)&&(MQTT_RxDataOutPtr[1]==0x90)){ 
                        switch(MQTT_RxDataOutPtr[5]){                    
                        case 0x00 :
                        case 0x01 : u1_printf("¶©Ôijɹ¦\r\n");            //´®¿ÚÊä³öÐÅÏ¢
                                    SubcribePack_flag = 1;                //SubcribePack_flagÖÃ1£¬±íʾ¶©Ôı¨Îijɹ¦£¬ÆäËû±¨ÎĿɷ¢ËÍ
                                    Ping_flag = 0;                        //Ping_flagÇåÁã
                                       TIM3_ENABLE_30S();                    //Æô¶¯30sµÄPING¶¨Ê±Æ÷
                        LED_DATA_State();
                        TIM2_ENABLE_10S();
                                    break;                                //Ìø³ö·ÖÖ§                                             
                        default   : u1_printf("¶©ÔÄʧ°Ü£¬×¼±¸ÖØÆô\r\n");  //´®¿ÚÊä³öÐÅÏ¢ 
                                    Connect_flag = 0;                     //Connect_flagÖÃÁã£¬ÖØÆôÁ¬½Ó
                                    break;                                //Ìø³ö·ÖÖ§                                 
                    }                    
                }
                //ifÅжϣ¬Èç¹ûÒ»¹²½ÓÊÕÁË2¸ö×Ö½Ú£¬µÚÒ»¸ö×Ö½ÚÊÇ0xD0£¬±íʾÊÕµ½µÄÊÇPINGRESP±¨ÎÄ
                else if((MQTT_RxDataOutPtr[0]==2)&&(MQTT_RxDataOutPtr[1]==0xD0)){ 
                    u1_printf("PING±¨ÎĻظ´\r\n");           //´®¿ÚÊä³öÐÅÏ¢ 
                    if(Ping_flag==1){                     //Èç¹ûPing_flag=1£¬±íʾµÚÒ»´Î·¢ËÍ
                         Ping_flag = 0;                      //ÒªÇå³ýPing_flag±êÖ¾
                    }else if(Ping_flag>1){                   //Èç¹ûPing_flag>1£¬±íʾÊǶà´Î·¢ËÍÁË£¬¶øÇÒÊÇ2s¼ä¸ôµÄ¿ìËÙ·¢ËÍ
                        Ping_flag = 0;                       //ÒªÇå³ýPing_flag±êÖ¾
                        TIM3_ENABLE_30S();                   //PING¶¨Ê±Æ÷ÖØ»Ø30sµÄʱ¼ä
                    }                
                }    
                //ifÅжϣ¬Èç¹ûµÚÒ»¸ö×Ö½ÚÊÇ0x30£¬±íʾÊÕµ½µÄÊÇ·þÎñÆ÷·¢À´µÄÍÆËÍÊý¾Ý
                //ÎÒÃÇÒªÌáÈ¡¿ØÖÆÃüÁî
                else if((MQTT_RxDataOutPtr[1]==0x30)){ 
                    u1_printf("·þÎñÆ÷µÈ¼¶0ÍÆËÍ\r\n");            //´®¿ÚÊä³öÐÅÏ¢ 
//                    MQTT_DealPushdata_Qs0(MQTT_RxDataOutPtr);  //´¦ÀíµÈ¼¶0ÍÆËÍÊý¾Ý
                }                
                                
                MQTT_RxDataOutPtr += BUFF_UNIT;                     //Ö¸ÕëÏÂÒÆ
                if(MQTT_RxDataOutPtr==MQTT_RxDataEndPtr)            //Èç¹ûÖ¸Õëµ½»º³åÇøÎ²²¿ÁË
                    MQTT_RxDataOutPtr = MQTT_RxDataBuf[0];          //Ö¸Õë¹éλµ½»º³åÇø¿ªÍ·                        
            }//´¦Àí½ÓÊÕ»º³åÇøÊý¾ÝµÄelse if·ÖÖ§½áβ
            
            /*-------------------------------------------------------------*/
            /*                     ´¦ÀíÃüÁ³åÇøÊý¾Ý                      */
            /*-------------------------------------------------------------*/
            if(MQTT_CMDOutPtr != MQTT_CMDInPtr){                             //if³ÉÁ¢µÄ»°£¬ËµÃ÷ÃüÁ³åÇøÓÐÊý¾ÝÁË            
                MQTT_CMDOutPtr[MQTT_CMDOutPtr[0]+1] = '\0';                  //¼ÓÈë×Ö·û´®½áÊø·û        
                u1_printf("ÃüÁî:%s\r\n",&MQTT_CMDOutPtr[1]);                 //´®¿ÚÊä³öÐÅÏ¢
                if(!memcmp(&MQTT_CMDOutPtr[1],CMD1,strlen(CMD1))){           //ÅжÏÖ¸ÁÈç¹ûÊÇCMD1
                    LED1_OUT(!LED1_IN_STA);                                  //¿ª¹Ø1״̬·­×ª Èç¹ûµãÁÁ¾ÍϨÃ𣬷´Ö®Èç¹ûϨÃð¾ÍµãÁÁ        
                    LED_DATA_State();                                         //ÅжÏ2·¿ª¹Ø×´Ì¬ºÍ²É¼¯×´Ì¬£¬²¢·¢²¼¸ø·þÎñÆ÷
                }else {
                     u1_printf("δָ֪Áî\r\n");
           Connect_flag = 0;                     
                 }                         
                MQTT_CMDOutPtr += BUFF_UNIT;                                  //Ö¸ÕëÏÂÒÆ
                if(MQTT_CMDOutPtr==MQTT_CMDEndPtr)                            //Èç¹ûÖ¸Õëµ½»º³åÇøÎ²²¿ÁË
                    MQTT_CMDOutPtr = MQTT_CMDBuf[0];                           //Ö¸Õë¹éλµ½»º³åÇø¿ªÍ·                
            }//´¦ÀíÃüÁ³åÇøÊý¾ÝµÄelse if·ÖÖ§½áβ    
        }//Connect_flag=1µÄif·ÖÖ§µÄ½áβ        
        
        /*--------------------------------------------------------------------*/
        /*      Connect_flag=0ͬ·þÎñÆ÷¶Ï¿ªÁËÁ¬½Ó,ÎÒÃÇÒªÖØÆôÁ¬½Ó·þÎñÆ÷         */
        /*--------------------------------------------------------------------*/
        else{ 
            u1_printf("ÐèÒªÁ¬½Ó·þÎñÆ÷\r\n");                 //´®¿ÚÊä³öÐÅÏ¢
            TIM_Cmd(TIM4,DISABLE);                           //¹Ø±ÕTIM4 
            TIM_Cmd(TIM3,DISABLE);                           //¹Ø±ÕTIM3  
            GA6_RxCounter=0;                                //GA6½ÓÊÕÊý¾ÝÁ¿±äÁ¿ÇåÁã                        
            memset(GA6_RX_BUF,0,GA6_RXBUFF_SIZE);          //Çå¿ÕGA6½ÓÊÕ»º³åÇø 
            if(GA6_Connect_IoTServer()==0){                    //Èç¹ûGA6Á¬½ÓÔÆ·þÎñÆ÷º¯Êý·µ»Ø0£¬±íʾÕýÈ·£¬½øÈëif
                u1_printf("½¨Á¢TCPÁ¬½Ó³É¹¦\r\n");            //´®¿ÚÊä³öÐÅÏ¢
                Connect_flag = 1;                            //Connect_flagÖÃ1£¬±íʾÁ¬½Ó³É¹¦    
                GA6_RxCounter=0;                            //GA6½ÓÊÕÊý¾ÝÁ¿±äÁ¿ÇåÁã                        
                memset(GA6_RX_BUF,0,GA6_RXBUFF_SIZE);      //Çå¿ÕGA6½ÓÊÕ»º³åÇø 
                MQTT_Buff_ReInit();                          //ÖØÐ³õʼ»¯·¢ËÍ»º³åÇø                    
            }                
        }
    }
}
/*-------------------------------------------------*/
/*º¯ÊýÃû£ºÅжÏ2·¿ª¹ØºÍ²É¼¯×´Ì¬£¬²¢·¢²¼¸ø·þÎñÆ÷    */
/*²Î  Êý£ºÎÞ                                       */
/*·µ»ØÖµ£ºÎÞ                                       */
/*-------------------------------------------------*/
void LED_DATA_State(void)
{
  char temp[BUFF_UNIT];                   //¶¨ÒåÒ»¸öÁÙʱ»º³åÇø
//    sprintf(temp,"{\"method\":\"thing.event.property.post\",\"id\":\"203302322\",\"params\":{\"manger1\":%d,\"manger2\":%d,\"manger3\":%d,\"magner4\":%d},\"version\":\"1.0.0\"}",temper,humd,humd2,senor);  //¹¹½¨»Ø¸´Êª¶ÈζÈÊý¾Ý
    sprintf(temp,"{\"method\":\"thing.event.property.post\",\"id\":\"203302322\",\"params\":{\"sensor6\":%d,\"sensor7\":%d,\"sensor8\":%d},\"version\":\"1.0.0\"}",weiyi,wendu,yali);  //¹¹½¨»Ø¸´Êª¶ÈζÈÊý¾Ý Î»ÒÆ ÎÂ¶È Ñ¹Á¦
    MQTT_PublishQs0(P_TOPIC_NAME,temp,strlen(temp));   //Ìí¼ÓÊý¾Ý£¬·¢²¼¸ø·þÎñÆ÷    
  
}

在这段代码中串口发送数据的地方

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 看下这篇博客,也许你就懂了,链接:STM32简单控制NB-IoT模组
  • 除此之外, 这篇博客: 基于STM32的NB-IoT模块驱动中的 一、概述 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

            目前这个NB-IoT在国内还是比较火的,最近刚好使用了一款NB-IoT模块。将驱动程序贡献给大家。希望能对用到的朋友有点帮助。

  • 以下回答来自chatgpt:

    可以在主循环的适当位置添加串口发送数据的代码。具体来说,你可以在从串口读取数据之后,将读取到的数据发送到NB-IoT模块。以下是一个示例代码:

    // 初始化串口
    void UART_Init()
    {
       // 串口初始化代码
    }
    
    // 主函数
    int main()
    {
       UART_Init(); // 初始化串口
    
       while(1)
       {
          // 从串口读取数据的代码
          char data = UART_Read(); // 假设UART_Read()函数用于从串口读取单个字符
    
          // 这里应该添加串口发送数据的代码
          UART_Send(data); // 假设UART_Send(data)函数用于向串口发送单个字符
       }
    
       return 0;
    }
    

    在这个示例代码中,你需要定义UART_Read()函数用于从串口读取单个字符,并假设已经实现了UART_Send(data)函数用于向串口发送单个字符。

    请注意,实际的代码可能会因为使用的具体串口库或者操作系统等的不同而有所差异。因此,在实际编写代码时,请参考具体的资料和文档,并根据你所使用的开发环境进行适当的调整和修改。我希望这个解决方案能对你有所帮助!


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^