EthW5500+STM32

Dependencies:   MQTT WIZnet_Library mbed

Fork of EthW5500 by YX ZHANG

Files at this revision

API Documentation at this revision

Comitter:
AlexQian
Date:
Fri Apr 20 07:28:56 2018 +0000
Parent:
3:54ad271708ff
Child:
5:23424c038538
Commit message:
updata

Changed in this revision

ETHW5500.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/ETHW5500.cpp	Fri Apr 20 01:37:27 2018 +0000
+++ b/ETHW5500.cpp	Fri Apr 20 07:28:56 2018 +0000
@@ -1,13 +1,14 @@
 #include "ETHW5500.h"
 
 //W5500接线 mosi,miso,sclk,cs,reset
-WIZnetInterface wiz(PA_7,PA_6,PA_5,PB_6,PC_7);
-
+//WIZnetInterface wiz(PA_7,PA_6,PA_5,PB_6,PC_7);
+extern WIZnetInterface wiz;
+extern Serial pc;
 void meta_report(MClient& client, const char *topic, 
                     const char* payload = NULL, size_t payload_len = 0, 
                     bool retain = false, MQTT::QoS qos = MQTT::QOS1){
     int ret = client.publish(topic, (void*)payload, payload_len, qos, retain);
-    printf("client.publish()=%d\r\n",ret);
+    pc.printf("client.publish()=%d\r\n",ret);
 }
 void messageArrived(MQTT::MessageData& md)
 {
@@ -19,7 +20,7 @@
     memcpy(buf, message.payload, len);
     buf[len] = '\0';
     sscanf(buf, "%d", &value);
-    printf("received %d\r\n", value);
+    pc.printf("received %d\r\n", value);
 }
 MQTTSocket sock;
 MClient client(sock);
@@ -27,37 +28,31 @@
 {
     int ret;
     wiz.init(mac_addr);
-    printf("DHCP...\r\n");
+    pc.printf("DHCP...\r\n");
     wiz.connect();
-    printf("IP: %s\r\n", wiz.getIPAddress());
-    return ret;
+    pc.printf("IP: %s\r\n", wiz.getIPAddress());
     
-}
-int Eth_ConnectToSer(char *URL)
-{
-    int ret;
     int timecount=1;
-    ret = sock.connect(URL,1883);
-    //printf("%d-th Server connetion attemp\n",timecount);
+    ret = sock.connect("tdxls-iot.xicp.net",1883);
+    //pc.printf("%d-th Server connetion attemp\n",timecount);
     while(ret!=0){
         timecount++;
-        //printf("%d-th Server connetion attemp\n",timecount);
-        ret = sock.connect(URL,1883);
+        //pc.printf("%d-th Server connetion attemp\n",timecount);
+        ret = sock.connect("tdxls-iot.xicp.net",1883);
         if(timecount>20){
-            printf("failed to connet Server,Please Check out and Reset\n");
+            pc.printf("failed to connet Server,Please Check out and Reset\n");
             return 1;
         }
     }
-    printf("sock.connect()=%d\r\n",ret);
+    pc.printf("sock.connect()=%d\r\n",ret);
     
     ret = client.connect();
     if(ret != 0){
-        printf("MQTT connect failed\r\n");
+        pc.printf("MQTT connect failed\r\n");
         return 1;
     }
-    printf("client.connect()=%d\r\n",ret);
+    pc.printf("client.connect()=%d\r\n",ret);
     return ret;
-    
 }
 
 int Eth_Subscribe(const char* ns,const char *NODE_NAME, const char* type)
@@ -67,16 +62,16 @@
     sprintf(topic, "/%s/%s/%s", ns, NODE_NAME, type);
     //printf("topic=%s\r\n",topic);
     ret = client.subscribe(topic, MQTT::QOS1, messageArrived);    
-    printf("sock.subscribe()=%d\r\n",ret);
+    pc.printf("sock.subscribe()=%d\r\n",ret);
     return ret;
 }
 void Eth_Report(const char* ns,const char *NODE_NAME, const char* type,const char* payload = NULL, size_t payload_len = 0, 
                     bool retain = false)
 {
-    char topic[64];
-    sprintf(topic, "/%s/%s/%s", ns, NODE_NAME, type);
-    //printf("topic=%s\r\n",topic);
-    meta_report(client, topic,payload,payload_len,retain);
+        char topic[64];
+        sprintf(topic, "/%s/%s/%s", ns, NODE_NAME, type);
+        //printf("topic=%s\r\n",topic);
+        meta_report(client, topic,payload,payload_len,retain);
 }
 
  
--- a/main.cpp	Fri Apr 20 01:37:27 2018 +0000
+++ b/main.cpp	Fri Apr 20 07:28:56 2018 +0000
@@ -3,29 +3,27 @@
 #include "MQTTSocket.h"
 #include "MQTTClient.h"
 #include "ETHW5500.h"
-
-DigitalIn BTN(PC_13);
+Serial pc(PA_2,PA_3);//串口
+//W5500接线 mosi,miso,sclk,cs,reset
+WIZnetInterface wiz(PA_7,PA_6,PA_5,PB_5,PB_4);
+DigitalIn BTN(PA_4);//按键
 //节点名称任取
 char *NODE_NAME="n_12345";
  //接在同一子网下的设备MAC地址必须不同
 uint8_t mac_addr[6]={0x50,0x51,0x50,0x00,0x00,0x01};
-//服务器地址
-char *SeverURL="tdxls-iot.xicp.net";
 
 int main() {
-    
-    const char* actuators = "switch,int\n";
+        const char* actuators = "switch,int\n";
     const char* sensors = "analog,mV\n";
-    
-    Eth_Init(mac_addr);//初始化
-    Eth_ConnectToSer(SeverURL);//连接到服务器
+        pc.printf("Initing\n");
+        Eth_Init(mac_addr);
     
-    Eth_Subscribe("control",NODE_NAME,"switch");//订阅服务器信息
+    Eth_Subscribe("control",NODE_NAME,"switch");
     
-    Eth_Report("event",NODE_NAME,"online",NULL,0,false);//报告节点状态
-    Eth_Report("capability",NODE_NAME,"control",actuators,strlen(actuators),true);//报告传感器参数
-    Eth_Report("capability",NODE_NAME,"values",sensors,strlen(sensors),true);
-    bool btn = 0;//报告GPIO电平
+    Eth_Report("event",NODE_NAME,"online",NULL,0,false);
+        Eth_Report("capability",NODE_NAME,"control",actuators,strlen(actuators),true);
+        Eth_Report("capability",NODE_NAME,"values",sensors,strlen(sensors),true);
+    bool btn = 0;
     while(1){
         bool newBTN = BTN;
         if(newBTN != btn){