送外卖的CV工程师 2023-11-20 22:05 采纳率: 0%
浏览 20
已结题

OneNET如何调用MQTT的API在APP上显示属性值

我想实现stm32与ESP8266还有制作于MIT App Inventor加强版的图形化编程的APP来实现stm32数据通过串口发送到ESP8266,然后ESP8266连接OneNET云平台的MQTT(新版)上传属性值,然后我的手机APP(图形化开发的APP)接收到MQTT的属性值,然后手机APP也可以发送命令如:开关LED灯,然后ESP8266通过串口去控制stm32,如何用图形化编程APP去调用这个设备API去获取最新的属性值,然后解析,我目前碰到了几个错误,在评论中,解决了我会额外付费,因为这个问题真的搞晕我了
我目前已经实现了ESP8266上传数据到MQTT,弄清了一些订阅和发布,我在MQTT设备API调试那里好像看到了可以获取最新属性值的API调用,返回结果确实是最新的属性值,但是我不知道如何去调用这个API来解析数据最后显示在APP里,也不知道怎么从APP下发命令来控制STM32,希望有佬来帮忙解答一下,或许不一定是OneNET新版的MQTT,应该MQTT都是差不多的接入吧,有酬谢!

  • 写回答

12条回答 默认 最新

  • 专家-赤兔[在线] 2023-11-20 22:05
    关注

    引自强大而免费的微信小程序:皆我百晓生

    首先需要明确以下几个步骤:

    1. 配置ESP8266使其与STM32通过串口通信;
    2. 通过ESP8266连接OneNET云平台的MQTT;
    3. 在APP中使用MQTT协议接收属性值;
    4. 在APP中使用MQTT协议发送命令;
    5. ESP8266通过串口控制STM32。

    下面是每个步骤的详细解答:

    1. 配置ESP8266使其与STM32通过串口通信

    首先,确保你已经正确连接了ESP8266和STM32并且能够通过串口通信。

    下面是一个简单的示例代码,演示STM32通过串口向ESP8266发送数据,并从ESP8266接收数据。

    // 在STM32中发送数据给ESP8266
    void sendToESP8266(uint8_t data) {
        // 将 data 发送到 ESP8266
        // 例如:USART_SendData(USART1, data);
    }
    
    // STM32 接收 ESP8266 发送的数据
    void receiveFromESP8266(uint8_t data) {
        // 处理从 ESP8266 接收到的数据
    }
    
    // 在 STM32 中发送一些数据给 ESP8266
    void sendTestDataToESP8266() {
        uint8_t testData[] = {'T', 'e', 's', 't', '\n'};
        for (int i = 0; i < sizeof(testData); i++) {
            sendToESP8266(testData[i]);
        }
    }
    
    // 主循环
    int main() {
        // 初始化串口通信
        // 例如:USART_Init(USART1, ...);
        
        while (1) {
            // 在这里添加你的代码逻辑
            
            // 例如,发送测试数据给 ESP8266
            sendTestDataToESP8266();
        }
    }
    

    请根据你的具体硬件和串口配置修改这段代码。确保该代码能够正常发送和接收数据。

    2. 通过ESP8266连接OneNET云平台的MQTT

    在ESP8266上使用AT指令集来连接OneNET云平台的MQTT服务器。

    以下是ESP8266连接OneNET云平台MQTT服务器的AT指令示例:

    // 设置WIFI模块连接的SSID和密码
    AT+CWJAP="your_SSID","your_password"
    
    // 设置MQTT服务器地址和端口
    AT+MQTT_SERVER="mqtt.heclouds.com",1883
    
    // 设置设备ID和API Key(替换为你的设备ID和API Key)
    AT+MQTT_USER="your_device_id"
    AT+MQTT_PASS="your_api_key"
    
    // 连接MQTT服务器
    AT+MQTT_CONNECT
    

    确保ESP8266能够成功连接到OneNET云平台的MQTT服务器。

    3. 在APP中使用MQTT协议接收属性值

    你可以使用MQTT库来在APP中使用MQTT协议接收来自OneNET云平台的属性值。

    以下是一个示例代码,使用MQTT库在APP中接收MQTT消息:

    // 连接到MQTT服务器
    mqtt.connect("mqtt.heclouds.com", 1883)
    
    // 订阅属性值
    mqtt.subscribe("your_topic")
    
    // MQTT消息到达事件处理
    mqtt.onMessageReceived(function(topic, message) {
        // 在这里处理接收到的消息
        // 例如,显示在界面上
        // 属性值位于 `message` 中
        basic.showString(message)
    })
    

    在你的APP中,你需要使用MQTT库连接到OneNET的MQTT服务器,并订阅你感兴趣的主题。当消息到达时,你可以通过事件处理函数来处理接收到的消息,并在你的APP界面上显示。

    4. 在APP中使用MQTT协议发送命令

    你也可以使用MQTT库在APP中使用MQTT协议发送命令给OneNET云平台。

    以下是一个示例代码,使用MQTT库在APP中发送MQTT消息:

    // 连接到MQTT服务器
    mqtt.connect("mqtt.heclouds.com", 1883)
    
    // 发布命令
    function sendCommand(command: string) {
        // 发布命令到 `your_topic` 主题
        mqtt.publish("your_topic", command)
    }
    
    // 按钮点击事件处理
    input.onButtonPressed(Button.A, function() {
        // 发送命令给STM32
        // 例如,发送控制LED灯的命令
        sendCommand("LED_ON")
    })
    

    在你的APP中,你需要使用MQTT库连接到OneNET的MQTT服务器,并通过mqtt.publish函数发布你的命令给OneNET云平台。你可以根据你的需要,定义自己的命令格式,并在按钮点击事件中调用sendCommand函数来发送命令。

    5. ESP8266通过串口控制STM32

    当ESP8266接收到来自OneNET云平台的命令后,你可以使用串口通信将命令传递给STM32。

    请在ESP8266接收到来自OneNET的命令后,调用一个函数来执行串口通信发送给STM32的代码。

    // ESP8266 接收来自 MQTT 的命令
    void receiveCommandFromMQTT(const char* command) {
        // 根据命令执行相应的操作
        // 例如,判断命令是 "LED_ON" 还是 "LED_OFF"
        // 然后通过串口发送相应的命令给 STM32
        if (strcmp(command, "LED_ON") == 0) {
            sendToSTM32('1'); // 通过串口发送字符 "1" 给 STM32
        } else if (strcmp(command, "LED_OFF") == 0) {
            sendToSTM32('0'); // 通过串口发送字符 "0" 给 STM32
        }
    }
    

    当ESP8266接收到来自OneNET云平台的命令时,调用receiveCommandFromMQTT函数来执行串口通信发送给STM32的代码。

    请根据你的具体硬件和串口配置修改这段代码。确保该代码能够正确发送命令给STM32。

    以上就是实现ESP8266、STM32和APP之间通过MQTT进行数据互通的详细步骤和示例代码。请根据你的具体需求和硬件配置进行相应的修改和调试。

    评论 编辑记录
  • Monster-XH 2023-11-20 22:13
    关注
    • 现在的挑战是从APP调用API获取MQTT数据,并通过APP下发命令控制STM32。

    • 可以分为以下几个步骤:

    1. 获取MQTT数据显示在APP上

      • 用MIT App Inventor加强版,设计一个用户界面,用提供的HTTP组件来调用OneNET的API。
      • OneNET的API文档会提供相关的API接口信息。要调用获取最新属性值的API接口,这通常是一个HTTP GET请求。
      • 在App Inventor中,配置HTTP组件发送请求到指定的API URL,并处理返回的JSON数据,显示在APP的界面上。
    2. 从APP下发命令控制STM32

      • 在APP中,设置按钮或其他控件来发送命令。
      • 当用户点击按钮时,APP通过HTTP POST请求发送命令到OneNET的MQTT接口。
      • ESP8266作为订阅者,监听MQTT主题以接收来自OneNET的命令。
      • 当ESP8266接收到命令后,通过串口将命令发送给STM32。
      • STM32接收到串口命令后,执行相应操作(如控制LED灯)。
    3. ESP8266和STM32的联动

      • 确保STM32和ESP8266之间的串口通信正常工作。
      • STM32应该能够解析来自ESP8266的命令,并作出响应。
      • 同样STM32也可以通过串口向ESP8266发送数据,ESP8266再上传到OneNET。

    在实现这些步骤时,注意以下几点:

    • API调用和数据解析:了解如何在App Inventor中发起HTTP请求并解析JSON格式的响应。
    • MQTT协议:深入理解MQTT协议的发布/订阅机制,以便正确配置ESP8266和APP之间的通信。
    • 串口通信:确保STM32和ESP8266之间的串口通信是可靠的。

    这个项目涉及到的硬件和软件结合,需要较强的调试和集成能力。我建议你一步一步来,先确保每个部分独立工作无误,再进行整合测试。

    评论
  • 郭老师的小迷弟雅思莫了 Java领域新星创作者 2023-11-20 23:33
    关注

    人工智能:
    你的项目涉及到嵌入式开发(STM32)、无线通信(ESP8266)、物联网平台(OneNET)以及手机应用开发(MIT App Inventor加强版)。这是一个复杂的项目,需要将各个部分进行集成。

    以下是一些建议和步骤,供你参考:

    1. STM32和ESP8266串口通信:

      • 在STM32上编写代码,通过串口将数据发送给ESP8266。确保两者波特率、数据位等串口配置一致。
      • ESP8266通过串口接收STM32的数据,并通过相应的代码进行处理。
    2. ESP8266连接OneNET平台的MQTT:

      • 使用OneNET提供的MQTT库或者其他MQTT库,配置ESP8266连接到OneNET的MQTT服务器。
      • 实现ESP8266发布数据到OneNET,可以使用OneNET提供的MQTT API。
    3. 手机APP与OneNET MQTT通信:

      • 在MIT App Inventor加强版中,使用相关组件连接到OneNET MQTT服务器。
      • 可以使用App Inventor的Web组件来实现MQTT通信,可能需要编写一些JavaScript代码。
      • 从OneNET获取最新属性值,可以使用OneNET提供的设备API。在App Inventor中,可以使用Web组件发起HTTP请求并处理返回的JSON数据。
    4. 手机APP发送控制命令到ESP8266:

      • 在App Inventor中,设计界面,添加按钮或其他交互组件。
      • 通过Web组件发送控制命令到ESP8266。这可能需要在ESP8266上实现一个简单的HTTP服务器,接收来自App Inventor的HTTP请求并执行相应的操作。
    5. ESP8266控制STM32:

      • 根据ESP8266接收到的控制命令,通过串口通信发送相应的指令给STM32。
      • 在STM32上实现串口接收和相应指令的处理逻辑。

    请注意,这只是一个大致的指导方向,具体的实现细节可能需要根据你的硬件、固件、App Inventor版本等情况进行调整。确保各个组件的通信协议和数据格式相互匹配,同时测试每个单独的部分,确保其正常工作。

    评论
  • bug菌¹ Java领域优质创作者 2023-11-21 00:13
    关注

    该回答引用ChatGPT,望对题主有所帮助/启发;若有帮助,还望采纳。


    你的项目涉及到多个层面的技术,包括物联网通信、嵌入式系统、移动应用开发等。我会简要地为你提供一个整体的思路,但具体的实现步骤可能需要根据你的具体环境和需求进行调整。

    1. STM32与ESP8266串口通信

    确保STM32和ESP8266之间能够通过串口进行通信。你可能需要在STM32上编写代码,通过串口将数据发送给ESP8266。ESP8266也需要相应的代码来接收并处理这些数据。

    2. ESP8266连接到OneNET云平台的MQTT

    已经实现了ESP8266上传数据到MQTT,这是一个重要的一步。确保ESP8266正确连接到OneNET的MQTT服务器,并能够发布和订阅主题。

    3. 获取最新属性值

    通过OneNET的MQTT设备API,你可以订阅设备的属性更新主题。当设备的属性发生变化时,MQTT服务器会向订阅了该主题的客户端发送通知。在ESP8266的代码中,你需要编写逻辑来处理这些通知,获取最新的属性值,并进行相应的处理。

    4. APP开发

    在MIT App Inventor或其他图形化编程工具中,创建一个APP来接收MQTT的属性值和发送命令。你需要使用MQTT客户端库,确保APP能够订阅设备属性更新主题,并能够向设备发送控制命令。

    5. 控制STM32

    在ESP8266接收到来自APP的命令后,通过串口将相应的控制指令发送给STM32。在STM32的代码中,需要解析接收到的指令,并执行相应的操作,例如开关LED灯。

    注意事项:

    • 确保设备之间的通信协议和格式一致,以便正确解析和处理数据。
    • 在处理数据时考虑安全性,例如使用加密算法确保通信的安全性。
    • 逐步调试每个模块,确保每一步都能正常工作。

    酬谢

    非常感谢你的慷慨提供的酬谢!如果你有进一步的问题或需要更详细的帮助,请随时告诉我。祝你的项目顺利完成!

    评论
  • lzh_me 2023-11-21 09:56
    关注

    逻辑都是一样的,定义MqttCallback接收数据,然后处理逻辑,再通过MqttClient发送出去,服务端和客户端直接定义好主题。

    评论
  • 呈两面包夹芝士 2023-11-21 10:58
    关注

    引自讯飞星火
    首先,你需要在ESP8266上实现一个API,用于接收手机APP发送的命令并控制STM32。这个API可以是一个HTTP服务器,也可以是一个简单的TCP服务器。当手机APP发送命令时,ESP8266会解析命令并通过串口发送给STM32。

    接下来,你需要在STM32上实现一个程序,用于接收ESP8266通过串口发送的数据。这个程序需要能够解析OneNET云平台返回的属性值,并将其显示在图形化编程APP中。同时,STM32还需要能够根据接收到的命令来控制LED灯等设备。

    最后,你需要在图形化编程APP中调用ESP8266的API来获取最新的属性值和发送命令。你可以使用HTTP客户端库(如libcurl)来实现这个功能。以下是一个简单的示例代码:

    // 初始化HTTP客户端库
    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl_easy_setopt(curl, CURLOPT_URL, "http://esp8266_ip_address/api/your_api_path");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
    
    // 发送GET请求并获取响应
    curl_easy_perform(curl);
    
    // 解析响应数据
    parse_response(&response);
    
    // 关闭HTTP客户端库
    curl_easy_cleanup(curl);
    curl_global_cleanup();
    

    在这个示例中,你需要将esp8266_ip_address替换为你的ESP8266设备的IP地址,将your_api_path替换为你在ESP8266上实现的API的路径。你还需要实现write_callback函数来处理从ESP8266接收到的数据,以及parse_response函数来解析这些数据并将它们显示在APP中。

    希望这个解答能帮助你解决问题。如果你还有其他问题,请随时提问。

    评论
  • 小明说Java 2023-11-21 12:34
    关注

    引用文心一言及个人思考回答:
    这是一个涉及多个领域的问题,包括嵌入式编程(STM32和ESP8266),MQTT协议,以及图形化编程(MIT App Inventor)。下面我将按照步骤解释如何实现你的需求。

    首先,关于STM32和ESP8266的串口通信,这个需要你在STM32上实现串口通信,然后把数据通过串口发送到ESP8266。在ESP8266上,你需要编写或者使用现有的库来实现对接收到的串口数据的处理,然后通过MQTT协议上传到OneNET云平台。

    其次,关于手机APP(使用MIT App Inventor)接收MQTT数据,你需要使用APP Inventor的组件来建立MQTT的连接,然后订阅OneNET云平台的MQTT话题。同时,你需要在APP中实现数据的解析和显示。

    最后,关于APP下发命令来控制STM32,你需要在APP中实现特定的按钮或者事件,当用户触发这些按钮或者事件时,APP会向ESP8266发送特定的指令,然后ESP8266会把这些指令通过串口发送给STM32。

    关于调用OneNET新版的MQTT设备API的问题,一般来说,你需要知道设备的唯一标识(通常在设备的元数据中可以找到),然后通过API调用获取设备的属性值。具体的方法你可以参考OneNET的官方文档或者API文档。

    关于如何使用图形化编程来实现以上功能,MIT App Inventor应该提供了一套比较完整的解决方案。你可以通过拖拽组件和设置组件的行为来实现以上所有的功能。

    至于你遇到的错误,我需要更具体的信息才能提供帮助。你可以尝试把错误信息或者报错的具体情况提供出来,我会尽力帮你解决。同时,如果你对某个步骤有疑问,也可以详细描述你的问题,我会尽力帮你解答。

    评论 编辑记录
  • yy64ll826 2023-11-21 14:58
    关注
    评论
  • 技术宅program 2023-11-21 18:33
    关注

    (1) API使用_开发者文档_OneNET - 10086. https://open.iot.10086.cn/doc/mqtt/book/application-develop/apiUsage.html.
    (2) OneNET - 中国移动物联网开放平台. https://open.iot.10086.cn/doc/v5/develop/.
    (3) OneNET-中国移动物联网开放平台 - 10086. https://open.iot.10086.cn/devdoc.
    (4) 实现调用API接口 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/450746231.
    (5) What is an Application Programming Interface (API)? | IBM. https://www.ibm.com/topics/api.
    (6) 主控STM32配合ESP8266 实现手机app远程控制 - CSDN博客. https://blog.csdn.net/qq_43294876/article/details/104452691.
    (7) 物联网(三)---WEB下发命令控制单片机[STM32+OneNET+ESP8266] - 简书. https://www.jianshu.com/p/33a0c3ffefca.
    (8) app 与 api 的区别是什么? - 知乎. https://www.zhihu.com/question/19724318.
    (9) 【OneNet教程】HTTP协议+STM32+ESP8266 接入云平台 - 哔哩哔哩. https://www.bilibili.com/video/BV1Yb411T7D1/.

    评论
  • threenewbee 2023-11-20 22:18
    关注
    评论
  • 心梓知识 2023-11-20 23:42
    关注

    结合GPT给出回答如下请题主参考
    实现MQTT与ESP8266和APP数据互通的步骤如下:

    1. 连接ESP8266和STM32。ESP8266可以通过WiFi与STM32进行通信,可以使用AT指令或者ESP8266的API来实现。

    2. 在STM32上使用串口发送数据。可以使用HAL库提供的USART接口来实现。以下是一个使用HAL库中的USART接口发送数据的例子:

      // 初始化USART1
      HAL_USART_Init(&huart1);
      
      // 待发送的数据
      uint8_t data[] = "Hello, world!";
      
      // 发送数据
      HAL_USART_Transmit(&huart1, data, sizeof(data), HAL_MAX_DELAY);
      
    3. 在ESP8266上接收STM32发送的数据。ESP8266可以使用AT指令或者API来接收串口数据。以下是一个使用AT指令接收串口数据的例子:

      // 设置串口波特率
      AT+UART_DEF=115200,8,1,0,0
      
      // 接收串口数据
      AT+UART_READ=10,100
      
    4. 在ESP8266上连接OneNET云平台的MQTT。可以使用ESP8266的API来连接OneNET的MQTT服务器。以下是一个连接OneNET的MQTT服务器的例子:

      // 设置MQTT服务器地址和端口号
      MQTTClient_SetServer(&client, "mqtt.heclouds.com", 6002);
      
      // 设置MQTT用户名和密码
      MQTTClient_SetUsername(&client, "device_id");
      MQTTClient_SetPassword(&client, "api_key");
      
      // 连接MQTT服务器
      MQTTClient_Connect(&client);
      
    5. 在APP上使用MQTT协议发送和接收数据。可以使用APP Inventor提供的MQTT扩展来实现。以下是一个发送和接收MQTT数据的例子:

      // 发送MQTT数据
      MQTT.publish("topic", "payload");
      
      // 接收MQTT数据
      MQTT.subscribe("topic");
      
      // 处理接收到的MQTT数据
      if (MQTT.messageArrived()) {
        String topic = MQTT.getLastTopic();
        String payload = MQTT.getLastPayload();
        // 处理MQTT数据
      }
      

    以上是实现MQTT与ESP8266和APP数据互通的基本步骤,具体的实现方式需要根据具体的需求和硬件平台来进行调整和优化。

    评论
  • Leodong. 2023-11-21 09:36
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    要实现STM32与ESP8266和APP数据互通,可以按照以下步骤进行:

    1、 首先,确保你已经正确连接了STM32、ESP8266和手机APP。

    2、 在STM32上编写代码,通过串口发送数据到ESP8266。以下是一个简单的示例代码:

    #include "stm32f10x.h"
    #include "usart.h"
    
    int main(void)
    {
        uint8_t data = 0;
        USART_Init(); // 初始化串口
    
        while (1)
        {
            // 从APP接收数据
            if (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) != RESET)
            {
                data = USART_ReceiveData(USART1); // 读取数据
                // 将数据发送到ESP8266
                USART_SendData(USART1, data);
            }
        }
    }
    

    3、 在ESP8266上编写代码,连接到OneNET云平台并订阅主题。以下是一个简单的示例代码:

    #include <ESP8266WiFi.h>
    #include <PubSubClient.h>
    
    const char* ssid = "your_SSID";
    const char* password = "your_PASSWORD";
    const char* mqttServer = "mqtt.openthings.io";
    const int mqttPort = 1883;
    const char* clientId = "ESP8266Client";
    
    WiFiClient espClient;
    PubSubClient client(espClient);
    
    void setup()
    {
        Serial.begin(115200);
        espClient.begin(clientId, mqttServer, mqttPort);
    }
    
    void reconnect()
    {
        while (!client.connected())
        {
            Serial.print("Attempting MQTT connection...");
            if (client.connect("ESP8266Client", mqttServer, mqttPort))
            {
                Serial.println("connected");
                client.subscribe("your_topic");
            }
            else
            {
                Serial.print("failed, rc=");
                Serial.print(client.state());
                Serial.println(" try again in 5 seconds");
                delay(5000);
            }
        }
    }
    
    void callback(char* topic, byte* payload, unsigned int length)
    {
        Serial.print("Message arrived [");
        Serial.print(topic);
        Serial.print("] ");
        for (int i = 0; i < length; i++)
        {
            Serial.print((char)payload[i]);
        }
        Serial.println();
    }
    
    void loop()
    {
        if (!client.connected())
        {
            reconnect();
        }
        client.loop();
    }
    

    4、 在手机APP上编写代码,连接到MQTT服务器并接收数据。以下是一个简单的示例代码(以Arduino IDE为例):

    #include <ESP8266WiFi.h>
    #include <PubSubClient.h>
    
    const char* ssid = "your_SSID";
    const char* password = "your_PASSWORD";
    const char* mqttServer = "mqtt.openthings.io";
    const int mqttPort = 1883;
    const char* clientId = "ESP8266Client";
    
    WiFiClient espClient;
    PubSubClient client(espClient);
    
    void setup()
    {
        Serial.begin(115200);
        espClient.begin(clientId, mqttServer, mqttPort);
    }
    
    void reconnect()
    {
        while (!client.connected())
        {
            Serial.print("Attempting MQTT connection...");
            if (client.connect("ESP8266Client", mqttServer, mqttPort))
            {
                Serial.println("connected");
                client.subscribe("your_topic");
            }
            else
            {
                Serial.print("failed, rc=");
                Serial.print(client.state());
                Serial.println(" try again in 5 seconds");
                delay(5000);
            }
        }
    }
    
    void callback(char* topic, byte* payload, unsigned int length)
    {
        Serial.print("Message arrived [");
        Serial.print(topic);
        Serial.print("] ");
        for (int i = 0; i < length; i++)
        {
            Serial.print((char)payload[i]);
        }
        Serial.println();
    }
    
    void loop()
    {
        if (!client.connected())
        {
            reconnect();
        }
        client.loop();
    }
    

    5、 根据需要修改代码中的常量值,如SSID、密码、MQTT服务器地址等。然后编译并上传代码到STM32、ESP8266和手机APP上。这样,你就可以实现STM32与ESP8266和APP数据互通了。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论 编辑记录

报告相同问题?

问题事件

  • 请选择合适的标签 11月24日
  • 已结题 (查看结题原因) 11月22日
  • 专家修改了标签 11月21日
  • 修改了问题 11月21日
  • 展开全部

悬赏问题

  • ¥15 字符串的比较老是报错
  • ¥15 很简单的c#代码补全
  • ¥15 复杂表达式求值程序里的函数优先级问题
  • ¥15 求密码学的客成社记ji着用
  • ¥35 POI导入树状结构excle
  • ¥15 初学者c语言题目解答
  • ¥15 div editable中的光标问题
  • ¥15 mysql报错1415Not allowed to return a result set from a trigger 不知如何修改
  • ¥60 Python输出Excel数据整理,算法较为复杂
  • ¥15 回答几个问题 关于数据库