QAQ ==!

Dependencies:   mbed QEI-1 nRF24L01P xiugai

Committer:
AlexQian
Date:
Sat Dec 14 05:45:16 2019 +0000
Revision:
15:934289377f7a
Parent:
9:d03b1af2b8d8
Balance_Car;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zhangyx 9:d03b1af2b8d8 1 #include "useful_func.h"
zhangyx 9:d03b1af2b8d8 2
zhangyx 9:d03b1af2b8d8 3 #include <stdio.h>
zhangyx 9:d03b1af2b8d8 4
zhangyx 9:d03b1af2b8d8 5 #ifdef ENABLE_FILESYSTEM
zhangyx 9:d03b1af2b8d8 6 extern Serial ser2usb;
zhangyx 9:d03b1af2b8d8 7
zhangyx 9:d03b1af2b8d8 8 void read_file_names(const char *dir, vector<string> & filenames)
zhangyx 9:d03b1af2b8d8 9 //Õâ¸öº¯ÊýºóÆÚ¿ÉÒÔÖØÔسɴøÒ»¸öÊäÈëvector<string>ÒýÓöÔÏóµÄ·½·¨
zhangyx 9:d03b1af2b8d8 10 //ÕâÑùÕâ¸övector¿ÉÒÔ²»ÓÃÉùÃ÷³ÉÈ«¾Ö±äÁ¿
zhangyx 9:d03b1af2b8d8 11 //already reload
zhangyx 9:d03b1af2b8d8 12 {
zhangyx 9:d03b1af2b8d8 13 //ser2usb.printf("-----Calling read_file_names-----\r\n");
zhangyx 9:d03b1af2b8d8 14 filenames.clear();
zhangyx 9:d03b1af2b8d8 15 //ser2usb.printf("reading files...\r\n");
zhangyx 9:d03b1af2b8d8 16 DIR *dp;//Ò»¸öÎļþµØÖ·¶ÔÏóÖ¸Õë
zhangyx 9:d03b1af2b8d8 17 struct dirent *dirp;
zhangyx 9:d03b1af2b8d8 18 //ÏÂÃæÊÇdirentµÄ¶¨Òå
zhangyx 9:d03b1af2b8d8 19 //struct dirent
zhangyx 9:d03b1af2b8d8 20 //{
zhangyx 9:d03b1af2b8d8 21 // long d_ino;
zhangyx 9:d03b1af2b8d8 22 // off_t d_off;
zhangyx 9:d03b1af2b8d8 23 // unsigned short d_reclen;
zhangyx 9:d03b1af2b8d8 24 // char d_name [NAME_MAX+1];
zhangyx 9:d03b1af2b8d8 25 //}
zhangyx 9:d03b1af2b8d8 26
zhangyx 9:d03b1af2b8d8 27 /****************************************************************
zhangyx 9:d03b1af2b8d8 28 ÕâÀïµÄdirent.hÊÇlinuxϵij£ÓÃÍ·Îļþ
zhangyx 9:d03b1af2b8d8 29 ʹÓ÷½·¨²Î¿´
zhangyx 9:d03b1af2b8d8 30 https://blog.csdn.net/dream_allday/article/details/75243818
zhangyx 9:d03b1af2b8d8 31 *****************************************************************/
zhangyx 9:d03b1af2b8d8 32 int i = 0;
zhangyx 9:d03b1af2b8d8 33 dp = opendir(dir);
zhangyx 9:d03b1af2b8d8 34 //read all directory and file names in current directory into filename vector
zhangyx 9:d03b1af2b8d8 35 while((dirp = readdir(dp)) != NULL)
zhangyx 9:d03b1af2b8d8 36 {
zhangyx 9:d03b1af2b8d8 37 if (strcmp("System Volume Information", dirp->d_name))
zhangyx 9:d03b1af2b8d8 38 {
zhangyx 9:d03b1af2b8d8 39 filenames.push_back(string(dirp->d_name));
zhangyx 9:d03b1af2b8d8 40 //push_backÊÇvector¶ÔÏóÖеÄÒ»¸ö·½·¨
zhangyx 9:d03b1af2b8d8 41 //ÓÃÓÚ½«ÔªËØÌí¼Óµ½vector¶ÔÏóĩβ
zhangyx 9:d03b1af2b8d8 42 //ÕâÀïÊǽ«Ò»¸ödirentÀàÐ͵ĽṹÌå¶ÔÏóÖеÄd_name(ÎļþÃû)Ìí¼Óµ½filenamesµÄĩβ
zhangyx 9:d03b1af2b8d8 43 //r2usb.printf("%d - %s\r\n", i++, dirp->d_name);
zhangyx 9:d03b1af2b8d8 44 }
zhangyx 9:d03b1af2b8d8 45 }
zhangyx 9:d03b1af2b8d8 46 closedir(dp);
zhangyx 9:d03b1af2b8d8 47 //2usb.printf("file names read\r\n");
zhangyx 9:d03b1af2b8d8 48 }
zhangyx 9:d03b1af2b8d8 49 #endif // ENABLE_FILESYSTEM
zhangyx 9:d03b1af2b8d8 50
zhangyx 9:d03b1af2b8d8 51 #ifdef ENABLE_ESP8266
zhangyx 9:d03b1af2b8d8 52 extern Serial ser2usb;
zhangyx 9:d03b1af2b8d8 53 void mqtt_client_init(
zhangyx 9:d03b1af2b8d8 54 Esp8266 & client,
zhangyx 9:d03b1af2b8d8 55 const char* device_name,
zhangyx 9:d03b1af2b8d8 56 const char* publish_topic[][2],
zhangyx 9:d03b1af2b8d8 57 const char* subscribe_topic[][2]
zhangyx 9:d03b1af2b8d8 58 )
zhangyx 9:d03b1af2b8d8 59 //³õʼ»¯mqtt¿Í»§¶ËµÄº¯Êý
zhangyx 9:d03b1af2b8d8 60 //Ó¦ÊäÈ붩ÔÄÁбí
zhangyx 9:d03b1af2b8d8 61 {
zhangyx 9:d03b1af2b8d8 62 client.connect_mqtt_broker("192.168.12.1", device_name, publish_topic, subscribe_topic);
zhangyx 9:d03b1af2b8d8 63
zhangyx 9:d03b1af2b8d8 64 //subscribe topic
zhangyx 9:d03b1af2b8d8 65 /*
zhangyx 9:d03b1af2b8d8 66 for (int i = 0; subscribe_topic[i][0] != NULL; i++)
zhangyx 9:d03b1af2b8d8 67 {
zhangyx 9:d03b1af2b8d8 68 ser2usb.printf("subscribe topic \"%s\"\r\n", subscribe_topic[i][0]);
zhangyx 9:d03b1af2b8d8 69 client.subscribe_control(subscribe_topic[i][0]);
zhangyx 9:d03b1af2b8d8 70 }
zhangyx 9:d03b1af2b8d8 71 */
zhangyx 9:d03b1af2b8d8 72 }
zhangyx 9:d03b1af2b8d8 73 void send_file_names(Esp8266 & client, vector<string> & filenames, const char * publish_topic)
zhangyx 9:d03b1af2b8d8 74 {
zhangyx 9:d03b1af2b8d8 75 //ser2usb.printf("-----Calling send_file_names-----\r\n");
zhangyx 9:d03b1af2b8d8 76 //er2usb.printf("filenames:\r\n");
zhangyx 9:d03b1af2b8d8 77 char filename[128];
zhangyx 9:d03b1af2b8d8 78 //std::stringstream ss;
zhangyx 9:d03b1af2b8d8 79 int filenumber = 0;
zhangyx 9:d03b1af2b8d8 80 client.publish_value(publish_topic, "_upload");
zhangyx 9:d03b1af2b8d8 81 wait(0.15);
zhangyx 9:d03b1af2b8d8 82 for(vector<string>::iterator it = filenames.begin(); it < filenames.end(); it++)
zhangyx 9:d03b1af2b8d8 83 /******************************
zhangyx 9:d03b1af2b8d8 84 ÕâÀïiteratorÊÇvectorÀàÖеĵü´úÆ÷¶ÔÏó
zhangyx 9:d03b1af2b8d8 85 Ñ­»·Àï´ÓvectorµÄµÚÒ»¸öÔªËصØÖ·¿ªÊ¼
zhangyx 9:d03b1af2b8d8 86 µü´úµ½×îºóÒ»¸ö
zhangyx 9:d03b1af2b8d8 87 µü´úÆ÷µÄÆäËûÓ÷¨²Î¿´
zhangyx 9:d03b1af2b8d8 88 https://blog.csdn.net/yyangzhenjie/article/details/74518905
zhangyx 9:d03b1af2b8d8 89 ******************************/
zhangyx 9:d03b1af2b8d8 90 {
zhangyx 9:d03b1af2b8d8 91 //ser2usb.printf("---loop %d---\r\n", filenumber);
zhangyx 9:d03b1af2b8d8 92 // ss << filenumber << " - " << (*it) << "\r\n";
zhangyx 9:d03b1af2b8d8 93 sprintf(filename, "%d - %s", filenumber, it->c_str());
zhangyx 9:d03b1af2b8d8 94
zhangyx 9:d03b1af2b8d8 95 //ser2usb.printf("%s\r\n", filename);
zhangyx 9:d03b1af2b8d8 96 client.publish_value("file_list", filename);
zhangyx 9:d03b1af2b8d8 97
zhangyx 9:d03b1af2b8d8 98 filenumber++;
zhangyx 9:d03b1af2b8d8 99 sprintf(filename, "");
zhangyx 9:d03b1af2b8d8 100 wait(0.15);
zhangyx 9:d03b1af2b8d8 101 }
zhangyx 9:d03b1af2b8d8 102 client.publish_value("file_list", "_end");
zhangyx 9:d03b1af2b8d8 103 //er2usb.printf("all sent. \r\n");
zhangyx 9:d03b1af2b8d8 104 }
zhangyx 9:d03b1af2b8d8 105 #endif // ENABLE_ESP8266
zhangyx 9:d03b1af2b8d8 106