Quellcode durchsuchen

Добавил FTP Server, и UDP Server

Vladimir N. Shilov vor 9 Jahren
Ursprung
Commit
e8c988431c
2 geänderte Dateien mit 53 neuen und 7 gelöschten Zeilen
  1. 10 0
      README.md
  2. 43 7
      app/application.cpp

+ 10 - 0
README.md

@@ -95,3 +95,13 @@ int what_day(const struct struct_date  const date)
 Далее в планах -- переделать под себя страницу конфигурации,
 убрать всё лишнее, добавить нужное -- например, задание 2-4 порогов регулировки
 яркости в зависимости от внешнего освещения.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+2016.02.02
+
+Переделал обработку времени, поправил обработку данных от датчика.
+
+FTP сервер уже влазит, вот только нужен ли он? 
+
+UDP Server тоже влез. Если я всё правильно понял, то на строку "get_sensors"
+должен возвращать температуру и влажность. На любые другие данные -- echo.

+ 43 - 7
app/application.cpp

@@ -21,16 +21,22 @@ String StrCF;
 // Time values
 time_t Time, NTPLastUpdate;
 
-/* FTPServer ftp; */
-
 void process();
 void connectOk();
 void connectFail();
-void onNtpReceive(NtpClient& client, time_t timestamp);
 void showTime();
 
+// UDP server
+void onReceive(UdpConnection& connection, char *data, int size, IPAddress remoteIP, uint16_t remotePort); // Declaration
+const uint16_t EchoPort = 777;
+UdpConnection udp(onReceive);
+
+// NTP Client
+void onNtpReceive(NtpClient& client, time_t timestamp);
 NtpClient ntpClient ("ntps1-0.cs.tu-berlin.de", 300, onNtpReceive);
 
+// FTP Server;
+FTPServer ftp;
 
 void init()
 {
@@ -172,15 +178,19 @@ void process()
 	}
 	else
 	{
+		/*
+		 *  ñëó÷àå, åñëè îò äàò÷èêà íè÷åãî íå ïîëó÷èëè, çàïóñòèì ïîâòîðíûé îïðîñ ÷åðåç
+		 * 10 ñåêóíä, íî íå áîëåå 5 ðàç ïîäðÿä.
+		 */
 		if (status < 6)
 		{
 			status ++;
-			procTimer.
+			procRTimer.initializeMs(10000, process).startOnce();
 		}
 	}
 }
 
-/*
+
 void startFTP()
 {
 	// Start FTP server
@@ -188,7 +198,7 @@ void startFTP()
 	ftp.addUser("user", "resu"); // FTP account
 	// You can also use special FTP comand: "fsformat" for clearing file system (for example from TotalCMD)
 }
-*/
+
 
 void connectOk()
 {
@@ -198,7 +208,9 @@ void connectOk()
 
 	startWebServer();
 
-/*	startFTP(); */
+	startFTP();
+
+	udp.listen(EchoPort);
 }
 
 /*
@@ -227,3 +239,27 @@ void onNtpReceive(NtpClient& client, time_t timestamp) {
 	NTPLastUpdate = SystemClock.now();
 	Serial.println("*** Time synchronized OK! ***"); // DEBUG
 }
+
+/*
+ * UDP Server
+ */
+void onReceive(UdpConnection& connection, char *data, int size, IPAddress remoteIP, uint16_t remotePort)
+{
+	debugf("UDP Sever callback from %s:%d, %d bytes", remoteIP.toString().c_str(), remotePort, size);
+
+	// We implement string mode server for example
+	Serial.print(">\t");
+	Serial.print(data);
+
+	if (data == "get_sensors")
+	{
+		String text = String("Temperature: ") + String(SensorT, 2) + String("\rHumidity: ") + String(SensorH, 2) + String("\r");
+		udp.sendStringTo(remoteIP, EchoPort, text);
+	}
+	else
+	{
+		// Send echo to remote sender
+		String text = String("echo: ") + data;
+		udp.sendStringTo(remoteIP, EchoPort, text);
+	}
+}