diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\344\275\234\344\270\232/Day5/test.c" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\344\275\234\344\270\232/Day5/test.c" new file mode 100644 index 0000000000000000000000000000000000000000..d40a911bcb85a1a8771c6ff4aeb9082227009af7 --- /dev/null +++ "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\344\275\234\344\270\232/Day5/test.c" @@ -0,0 +1,104 @@ + +/* + * @Author: jiejie + * @Github: https://github.com/jiejieTop + * @LastEditTime: 2020-06-17 14:35:29 + * @Description: the code belongs to jiejie, please keep the author information and source code according to the license. + */ +#include +#include +#include +#include +#include +#include "mqttclient.h" + +#ifndef KAWAII_MQTT_HOST +#define KAWAII_MQTT_HOST "jiejie01.top" +#endif +#ifndef KAWAII_MQTT_PORT +#define KAWAII_MQTT_PORT "1883" +#endif +#ifndef KAWAII_MQTT_CLIENTID +#define KAWAII_MQTT_CLIENTID "rtthread001" +#endif +#ifndef KAWAII_MQTT_USERNAME +#define KAWAII_MQTT_USERNAME "rt-thread" +#endif +#ifndef KAWAII_MQTT_PASSWORD +#define KAWAII_MQTT_PASSWORD "rt-thread" +#endif +#ifndef KAWAII_MQTT_SUBTOPIC +#define KAWAII_MQTT_SUBTOPIC "rtt-sub" +#endif +#ifndef KAWAII_MQTT_PUBTOPIC +#define KAWAII_MQTT_PUBTOPIC "rtt-pub" +#endif + +static void sub_topic_handle1(void* client, message_data_t* msg) +{ + mqtt_message_t msg1; + (void) client; + KAWAII_MQTT_LOG_I("-----------------------------------------------------------------------------------"); + KAWAII_MQTT_LOG_I("%s:%d %s()...\ntopic: %s\nmessage:%s", __FILE__, __LINE__, __FUNCTION__, msg->topic_name, (char*)msg->message->payload); + KAWAII_MQTT_LOG_I("-----------------------------------------------------------------------------------"); + + //响应信息 + memset(&msg1, 0, sizeof(msg1)); + msg1.qos = QOS0; + msg1.payload = (void *)"辛苦了,下周的比赛加油!"; + mqtt_publish(client, KAWAII_MQTT_PUBTOPIC, &msg1); +} + +static int mqtt_publish_handle1(mqtt_client_t *client) +{ + mqtt_message_t msg; + memset(&msg, 0, sizeof(msg)); + + msg.qos = QOS0; + msg.payload = (void *)"this is a kawaii mqtt test ..."; + + return mqtt_publish(client, KAWAII_MQTT_PUBTOPIC, &msg); +} + +static void kawaii_mqtt_demo(void *parameter) +{ + mqtt_client_t *client = NULL; + + mqtt_log_init(); + + client = mqtt_lease(); + + mqtt_set_host(client, KAWAII_MQTT_HOST); + mqtt_set_port(client, KAWAII_MQTT_PORT); + mqtt_set_user_name(client, KAWAII_MQTT_USERNAME); + mqtt_set_password(client, KAWAII_MQTT_PASSWORD); + mqtt_set_client_id(client, KAWAII_MQTT_CLIENTID); + mqtt_set_clean_session(client, 1); + + KAWAII_MQTT_LOG_I("The ID of the Kawaii client is: %s ", KAWAII_MQTT_CLIENTID); + + mqtt_connect(client); + + mqtt_subscribe(client, KAWAII_MQTT_SUBTOPIC, QOS0, sub_topic_handle1); + + while (1) { + //mqtt_publish_handle1(client); + + mqtt_sleep_ms(4 * 1000); + } +} + +int ka_mqtt(void) +{ + rt_thread_t tid_mqtt; + + tid_mqtt = rt_thread_create("kawaii_demo", kawaii_mqtt_demo, RT_NULL, 2048, 17, 10); + if (tid_mqtt == RT_NULL) { + return -RT_ERROR; + } + + rt_thread_startup(tid_mqtt); + + return RT_EOK; +} +MSH_CMD_EXPORT(ka_mqtt, Kawaii MQTT client test program); diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/2333fc86-d182-4d07-91fd-e55afa37e9de.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/2333fc86-d182-4d07-91fd-e55afa37e9de.png" new file mode 100644 index 0000000000000000000000000000000000000000..a04bbc3834f7dfe20af9e812f7c812489f617dfc Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/2333fc86-d182-4d07-91fd-e55afa37e9de.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/buildconfig3.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/buildconfig3.png" new file mode 100644 index 0000000000000000000000000000000000000000..158e7ee519815cf5955c92add35798ffe5ad79f6 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/buildconfig3.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728200646021.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728200646021.png" new file mode 100644 index 0000000000000000000000000000000000000000..5b7afcc946f6420ec3d0f01250b4d68019bbb9b9 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728200646021.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728201351947.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728201351947.png" new file mode 100644 index 0000000000000000000000000000000000000000..fcb6c4e253785035d07d0c66d3150a5b890fe73e Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728201351947.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728202833312.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728202833312.png" new file mode 100644 index 0000000000000000000000000000000000000000..b88fb8adc147bfdcb3928df94be728236f022dee Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728202833312.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728203856762.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728203856762.png" new file mode 100644 index 0000000000000000000000000000000000000000..59985cf6059d92cc87ed39761d158f5daa7399d4 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728203856762.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728204049574.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728204049574.png" new file mode 100644 index 0000000000000000000000000000000000000000..e730c8e53c0bc5422836da53d960fdebd93bd74f Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728204049574.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728205623092.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728205623092.png" new file mode 100644 index 0000000000000000000000000000000000000000..7c12e6b31c8478dccb9557585d13ae4122d9e036 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728205623092.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728211915183.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728211915183.png" new file mode 100644 index 0000000000000000000000000000000000000000..3bc99a7f28d8cd3a4ebd9ca8b75aba2786b63cbc Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728211915183.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728213929373.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728213929373.png" new file mode 100644 index 0000000000000000000000000000000000000000..49f516e3a7182f68dbe7ed5b40d3ebe8370f4bbd Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728213929373.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728215121662.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728215121662.png" new file mode 100644 index 0000000000000000000000000000000000000000..35e04f0d921debecc499acf353eb28f99dcc9874 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728215121662.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728215216638.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728215216638.png" new file mode 100644 index 0000000000000000000000000000000000000000..81e055502c1723119a1e1124d114c9062050335f Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728215216638.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728215620586.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728215620586.png" new file mode 100644 index 0000000000000000000000000000000000000000..1ba3af8ae4fed277a85b55fed11689778f5310ce Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250728215620586.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729004440327.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729004440327.png" new file mode 100644 index 0000000000000000000000000000000000000000..497558f78a06e61b0e4c380fc64291787007ac4a Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729004440327.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729004710188.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729004710188.png" new file mode 100644 index 0000000000000000000000000000000000000000..596a9b70a888075c31de74c12a58326686cb5331 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729004710188.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729004748086.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729004748086.png" new file mode 100644 index 0000000000000000000000000000000000000000..ef9ec084bbadadb9151599e2c748c5b2029f49f1 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729004748086.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729005057160.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729005057160.png" new file mode 100644 index 0000000000000000000000000000000000000000..01323bd4df4b953193119bed62ad882433157b1b Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729005057160.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729005313104.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729005313104.png" new file mode 100644 index 0000000000000000000000000000000000000000..00687eaaa7c5c01769eb5cd9ea22630a6a14ec5c Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729005313104.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010016109.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010016109.png" new file mode 100644 index 0000000000000000000000000000000000000000..d899857011008008f69c2178a1318da2501297b3 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010016109.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010328061.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010328061.png" new file mode 100644 index 0000000000000000000000000000000000000000..60f125c5b542d38c9487b8d44c882c5d6ccdfce7 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010328061.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010505217.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010505217.png" new file mode 100644 index 0000000000000000000000000000000000000000..90856293fc32c393b3a5031e2bfcf11ef0dc3e34 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010505217.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010928319.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010928319.png" new file mode 100644 index 0000000000000000000000000000000000000000..5d401662903ada049c0a806878e256e62ddbf297 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729010928319.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729012242433.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729012242433.png" new file mode 100644 index 0000000000000000000000000000000000000000..83039ae87a53247bccbbc90d9881fe7edf723e0d Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729012242433.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729012732420.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729012732420.png" new file mode 100644 index 0000000000000000000000000000000000000000..e9fa52eb302d0e4e414d6e0991d352ae3f13c9c0 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729012732420.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729012919414.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729012919414.png" new file mode 100644 index 0000000000000000000000000000000000000000..c109b7894a471f376b47d67187a5df87e2e300cc Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729012919414.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729013308033.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729013308033.png" new file mode 100644 index 0000000000000000000000000000000000000000..e995176c254d6f6db9817a607656dd2580f7f47a Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729013308033.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729013532480.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729013532480.png" new file mode 100644 index 0000000000000000000000000000000000000000..4be37e151195957dfa3075e14c0e8ffb93103453 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729013532480.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729014054830.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729014054830.png" new file mode 100644 index 0000000000000000000000000000000000000000..7bac630d3bfab9ce2d6bd1780f1185f0298b0b6e Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729014054830.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729014350507.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729014350507.png" new file mode 100644 index 0000000000000000000000000000000000000000..a5df8c5919a83299e8ee41e5b416eb9b18b3d3f1 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729014350507.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729105021059.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729105021059.png" new file mode 100644 index 0000000000000000000000000000000000000000..a7d50f9bc27055d1859dec8816027c453381f8e2 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729105021059.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729191735079.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729191735079.png" new file mode 100644 index 0000000000000000000000000000000000000000..f9d239690bdab25afb1614603411174c4a190a2a Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729191735079.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729192737679.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729192737679.png" new file mode 100644 index 0000000000000000000000000000000000000000..d58209a858eed3946a2f475966e99fa1bc94b6da Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729192737679.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729193423985.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729193423985.png" new file mode 100644 index 0000000000000000000000000000000000000000..a8211688c2d7d70fc2c05d1e6448630592377018 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729193423985.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729195957403.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729195957403.png" new file mode 100644 index 0000000000000000000000000000000000000000..100b5991342e84a89c4d910e09ad78db3f5e2ac6 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729195957403.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729200123574.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729200123574.png" new file mode 100644 index 0000000000000000000000000000000000000000..c6f7ca5495abb4173fbb86a3d896a2f4b6e32ef0 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729200123574.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729201117498.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729201117498.png" new file mode 100644 index 0000000000000000000000000000000000000000..fd1d42db427e5e9817139796eb34f936d3dc3a34 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729201117498.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729201427904.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729201427904.png" new file mode 100644 index 0000000000000000000000000000000000000000..41a3c3efad21b41bc2c8e11b29dab0958cf84947 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729201427904.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729202119185.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729202119185.png" new file mode 100644 index 0000000000000000000000000000000000000000..8bd276241ca246de6849308d87718d7d743e946c Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729202119185.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729203414504.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729203414504.png" new file mode 100644 index 0000000000000000000000000000000000000000..46bc3ca039e99f9d9655fbc61d135425d4607148 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729203414504.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729204451558.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729204451558.png" new file mode 100644 index 0000000000000000000000000000000000000000..3a97d648b105c77dc6ec8f3dc2f0bcf248f99c33 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729204451558.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729204913421.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729204913421.png" new file mode 100644 index 0000000000000000000000000000000000000000..d7a87feb7979134435477e128f9eb34869c1cc89 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729204913421.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729205410198.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729205410198.png" new file mode 100644 index 0000000000000000000000000000000000000000..e32db96a8a5ffc5be67a62f44d273db5e783b849 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729205410198.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729213622034.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729213622034.png" new file mode 100644 index 0000000000000000000000000000000000000000..51c5442618afffe4a8ebb7b5c671241671a2b2e9 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729213622034.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729213658425.png" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729213658425.png" new file mode 100644 index 0000000000000000000000000000000000000000..0a53cca1a24d0a39111ccb898b02494b5015c8d6 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/image-20250729213658425.png" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/network_frame.jpg" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/network_frame.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..5980ac6d929c4aa3387a02c6305c876a328de658 Binary files /dev/null and "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/image/day5/network_frame.jpg" differ diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/\350\275\257\344\273\266\345\214\205\345\222\214\347\275\221\347\273\234\347\273\204\344\273\266.md" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/\350\275\257\344\273\266\345\214\205\345\222\214\347\275\221\347\273\234\347\273\204\344\273\266.md" new file mode 100644 index 0000000000000000000000000000000000000000..9182aed43b1080725d9b75d4ff4b4ce6b8030c23 --- /dev/null +++ "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\351\230\256\347\247\213\345\251\225/\347\254\224\350\256\260/\350\275\257\344\273\266\345\214\205\345\222\214\347\275\221\347\273\234\347\273\204\344\273\266.md" @@ -0,0 +1,222 @@ +# 软件包和网络组件 + +## 软件包机制 + +指路:https://packages.rt-thread.org/ + +![image-20250728200646021](./image/day5/image-20250728200646021.png) + +![image-20250728201351947](./image/day5/image-20250728201351947.png) + +![image-20250729105021059](./image/day5/image-20250729105021059.png) + +### [Kconfig](https://www.rt-thread.org/document/site/#/development-tools/build-config-system/Kconfig) + +#### Kconfig工作机制 + +C语言项目的裁剪配置本质上通过条件编译和宏的展开来实现的,RT-Thread借助Kconfig这套机制更方便的实现了这一功能。当前以Windows下Env工具中的使用为例,简述Kconfig在RT-Thread的工作机制。 + +Kconfig机制包括了Kconfig文件和配置UI界面(如`menuconfig`,`pyconfig`等)。Kconfig机制有如下特点: + +- Kconfig文件中的配置项会映射至rtconfig.h中 +- Kconfig文件可以随源码分散至各级子目录,便于灵活修改。 + +![2333fc86-d182-4d07-91fd-e55afa37e9de](./image/day5/2333fc86-d182-4d07-91fd-e55afa37e9de.png) + +Kconfig文件在源码中呈现树形结构,需要**在工程的根目录下存在一份顶层Kconfig文件**,顶层Kconfig文件在文件中通过source语句显示地调用各子目录下的Kconfig文件。Env在根目录下执行menuconfig命令后会递归解析各级Kconfig文件,然后提供如下配置界面,完成相应的配置后并保存,根目录下会存在一份.config文件保存当前选择的配置项,并将.config文件转为RT-Thread的系统配置文件rtconfig.h。 + +![构建配置系统](./image/day5/buildconfig3.png) + +#### 注释 + +Kconfig 采用 `#` 作为注释标记符,例如: + +```C +# This is a comment +``` + +### [SCons](https://www.rt-thread.org/document/site/#/development-tools/build-config-system/SCons) + +#### SCons简介 + +SCons 是一套由 Python 语言编写的开源构建系统,类似于 GNU Make。它采用不同于通常 Makefile 文件的方式,而是使用 SConstruct 和 SConscript 文件来替代。这些文件也是 Python 脚本,能够使用标准的 Python 语法来编写。所以在 SConstruct、SConscript 文件中可以调用 Python 标准库进行各类复杂的处理,而不局限于 Makefile 设定的规则 + +## 添加软件包 + +按图示路径在空白处通过右键打开env + +![image-20250728202833312](./image/day5/image-20250728202833312.png) + +输入`menuconfig`查看图形化界面 + +![image-20250728203856762](./image/day5/image-20250728203856762.png) + +按下`/`进入搜索界面,输入我们想要搜索的软件包 + +![image-20250728204049574](./image/day5/image-20250728204049574.png) + +配置完成保存退出后会打印下图内容,可以得知我们实际操控的是.config文件。 + +![image-20250728205623092](./image/day5/image-20250728205623092.png) + +输入`code .`进入vscode + +![image-20250728211915183](./image/day5/image-20250728211915183.png) + +* `pkgs --help`:查看命令 +* `pkgs --update`:更新并安装未选中软件包 +* `pkgs --upgrade`:从仓库更新软件包索引到本地 + +![image-20250728215620586](./image/day5/image-20250728215620586.png) + +如果`pkgs --update`同步失败,可以在设置中找到env地址 + +![image-20250728213929373](./image/day5/image-20250728213929373.png) + +然后手动同步,`git pull`获取远端分支。 + +![image-20250728215121662](./image/day5/image-20250728215121662.png) + +![image-20250728215216638](./image/day5/image-20250728215216638.png) + +### 示例:LLM-Chat + +按图示一步步选择 + +![image-20250729004440327](./image/day5/image-20250729004440327.png) + +![image-20250729004710188](./image/day5/image-20250729004710188.png) + +![image-20250729004748086](./image/day5/image-20250729004748086.png) + +enter进入后,我们需要获取api key,这里直接使用老师的:`sk-6af0822c7da545bd99090a3adc6148c9`。 + +![image-20250729005057160](./image/day5/image-20250729005057160.png) + +注册阿里云账号:https://bailian.console.aliyun.com/?tab=model#/model-market + +![image-20250729005313104](./image/day5/image-20250729005313104.png) + +设置好api key之后,进入RT-Thread online packges → mbedtls菜单,修改Maxium feagment length in bytes 字段为 `6144`。 + +![image-20250729010016109](./image/day5/image-20250729010016109.png) + +使能MbedTLS support,通过`/`搜索。 + +![image-20250729010328061](./image/day5/image-20250729010328061.png) + +![image-20250729010505217](./image/day5/image-20250729010505217.png) + +按图示路径使能网络驱动 + +![image-20250729010928319](./image/day5/image-20250729010928319.png) + +保存好之后通过`pkgs --update`拉取下来,如果失败可以先输入`pkgs --upgrade`,再重新拉取。下图所示就是成功了。 + +![image-20250729012242433](./image/day5/image-20250729012242433.png) + +输入`scons j8`编译一下,编译成功之后输入`qemu-nographic.bat`运行。 + +![image-20250729012732420](./image/day5/image-20250729012732420.png) + +运行之后按下tab键看一下有没有支持`llm`这个命令 + +![image-20250729012919414](./image/day5/image-20250729012919414.png) + +输入`llm`会发现进入另外一个终端,提示`CTRL+D`可以退出这个终端。 + +![image-20250729013308033](./image/day5/image-20250729013308033.png) + +可以在这个终端和大语言模型进行对话,这整个流程都是联网的,通过HTTP协议进行聊天。 + +![image-20250729013532480](./image/day5/image-20250729013532480.png) + +如何验证有联网能力,输入`ifconfig`,有LINK_UP的状态意味着当前可以使用网络。 + +![image-20250729014054830](./image/day5/image-20250729014054830.png) + +可以尝试`ping jd.com`,可以ping通说明具备联网能力。 + +![image-20250729014350507](./image/day5/image-20250729014350507.png) + +## 网络组件 + +### SAL网络框架 + +RT-Thread 的 网络框架结构如下所示: + +![img](./image/day5/network_frame.jpg) + +最顶层是网络应用层,提供一套标准 BSD Socket API ,如 socket、connect 等函数,用于系统中大部分网络开发应用。 + +往下第二部分为 SAL 套接字抽象层,通过它 RT-Thread 系统能够适配下层不同的网络协议栈,并提供给上层统一的网络编程接口,方便不同协议栈的接入。套接字抽象层为上层应用层提供接口有:accept、connect、send、recv 等。 + +第三部分为 netdev 网卡层,主要作用是解决多网卡情况设备网络连接和网络管理相关问题,通过 netdev 网卡层用户可以统一管理各个网卡信息和网络连接状态,并且可以使用统一的网卡调试命令接口。 + +第四部分为协议栈层,该层包括几种常用的 TCP/IP 协议栈,例如嵌入式开发中常用的轻型 TCP/IP 协议栈 lwIP 以及 RT-Thread 自主研发的 AT Socket 网络功能实现等。这些协议栈或网络功能实现直接和硬件接触,完成数据从网络层到传输层的转化。 + +RT-Thread 的网络应用层提供的接口主要以标准 BSD Socket API 为主,这样能确保程序可以在 PC 上编写、调试,然后再移植到 RT-Thread 操作系统上。 + +## 添加网络相关软件包 + +### 示例:netutils + +![image-20250729191735079](./image/day5/image-20250729191735079.png) + +退出保存后`pkgs --update`拉取软件包,拉取完`scons -j8`编译查看效果,编译后`qemu-nographic.bat`运行,`ifconfig`查看是否联网。 + +![image-20250729192737679](./image/day5/image-20250729192737679.png) + +`date`可以校准时间,网络调试功能:`ntp_sync`。 + +![image-20250729193423985](./image/day5/image-20250729193423985.png) + +### 示例:MQTT + +* EMQX:https://www.emqx.com/zh + +* MQTTX:https://mqttx.app/zh/downloads + +* 在线使用:https://mqttx.app/web-client#/recent_connections + +把服务器地址改成:`broker.emqx.io` + +![image-20250729195957403](./image/day5/image-20250729195957403.png) + +修改一下id + +![image-20250729200123574](./image/day5/image-20250729200123574.png) + +拉取软件包:`pkgs --update` + +![image-20250729201117498](./image/day5/image-20250729201117498.png) + +编译:`scons -j8` + +![image-20250729201427904](./image/day5/image-20250729201427904.png) + +打开vscode可以看到我们刚刚配置的信息 + +![image-20250729202119185](./image/day5/image-20250729202119185.png) + +`qemu-nographic.bat`运行,`ifconfig`查看是否联网,运行MQTT`ka_mqtt`。 + +![image-20250729203414504](./image/day5/image-20250729203414504.png) + +通过`ps`查看线程,发现tcpip内存快满了。 + +![image-20250729204451558](./image/day5/image-20250729204451558.png) + +按图示路径将内存改大一点 + +![image-20250729204913421](./image/day5/image-20250729204913421.png) + +![image-20250729205410198](./image/day5/image-20250729205410198.png) + +发送数据 + +![image-20250729213622034](./image/day5/image-20250729213622034.png) + +可以看到env这边接收到数据 + +![image-20250729213658425](./image/day5/image-20250729213658425.png)