嵌入式以太网社区

?找回密码
?立即注册
搜索
365bet官网足球官方开户网利用Python来控制STM32365bet官网足球官方开户网365bet官网足球官方开户网
STM32高速USB数据传输方案,支持多系统!STM32全速USB数据传输方案,支持多系统!Flash高速烧写方案STM32 HID IAP/Bootloader升级方案
查看: 55620|bet365体-在线体育投注_365体育投注地址_365体育投注登录: 420
打印 上一主题 下一主题

STM32+W5500+MQTT+Android实现远程数据采集及控制

? [复制链接]

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
跳转到指定楼层
楼主
发表于 2015-8-10 13:57:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 飞鸿踏雪 于 2015-8-18 18:44 编辑

0 前言
最近在学习MQTT,发现MQTT还是挺好用的,于是花了点时间做了一个简单的应用示例,希望能给需要做这方面的人一些参考。
相关背景知识:http://www.embed-net.com/thread-224-1-1.html
具体功能为:
1,STM32F405为主控芯片,它通过传感器采集环境数据,比如温度,湿度,光照度,大气压强等;
2,主控芯片通过W5500模块将测量的数据通过MQTT协议方式发布到MQTT服务器(服务器域名和IP见固件程序);
3,主控订阅LED灯控制的消息,当接收到对应的控制指令后点亮或者熄灭对应的LED灯;
4,安卓手机端订阅传感器数据的消息,当接收到消息后将传感器数据在界面显示;
5,安卓手机可发送点亮或者熄灭LED灯的指令到服务器,然后服务器会将该指令转发给STM32主控,然后STM32主控解析该指令并执行指令。

1 单片机端实现
MQTT协议是基于TCP的协议,所以我们只需要在单片机端实现TCP客户端代码之后就很容易移植MQTT了,STM32F4+W5500实现TCP客户端的代码我们以前已经实现过,代码下载地址为:
http://www.embed-net.com/thread-87-1-1.html
当然,如果你想在代码里面直接使用服务器域名方式进行连接,我们还得在TCP客户端代码里面集成DNS的代码,当然在上面这个连接里面也有相关的代码。
MQTT代码源码下载地址:
http://www.eclipse.org/paho/
在STM32这边我们使用的是C/C++ MQTT Embedded clients代码。
硬件连接如下图所示:

1.1 MQTT的移植
MQTT的移植非常简单,将C/C++ MQTT Embedded clients的代码添加到工程中,然后我们只需要再次封装4个函数即可:
[C] 纯文本查看 复制代码
int transport_sendPacketBuffer(unsigned char* buf, int buflen);
int transport_getdata(unsigned char* buf, int count);
int transport_open(void);
int transport_close(void);

transport_sendPacketBuffer:通过网络以TCP的方式发送数据;
transport_getdata:TCP方式从服务器端读取数据,该函数目前属于阻塞函数;
transport_open:打开一个网络接口,其实就是和服务器建立一个TCP连接;
transport_close:关闭网络接口。
如果已经移植好了socket方式的TCP客户端的程序,那么这几个函数的封装也是非常简单的,程序代码如下所示:
[C] 纯文本查看 复制代码
/**
  * @brief  通过TCP方式发送数据到TCP服务器
  * @param  buf 数据首地址
  * @param  buflen 数据长度
  * @retval 小于0表示发送失败
  */
int transport_sendPacketBuffer(unsigned char* buf, int buflen)
{
  return send(SOCK_TCPS,buf,buflen);
}
/**
  * @brief  阻塞方式接收TCP服务器发送的数据
  * @param  buf 数据存储首地址
  * @param  count 数据缓冲区长度
  * @retval 小于0表示接收数据失败
  */
int transport_getdata(unsigned char* buf, int count)
{
  return recv(SOCK_TCPS,buf,count);
}


/**
  * @brief  打开一个socket并连接到服务器
  * @param  无
  * @retval 小于0表示打开失败
  */
int transport_open(void)
{
  int32_t ret;
  //新建一个Socket并绑定本地端口5000
  ret = socket(SOCK_TCPS,Sn_MR_TCP,5000,0x00);
  if(ret != SOCK_TCPS){
    printf("%d:Socket Error\r\n",SOCK_TCPS);
    while(1);
  }else{
    printf("%d:Opened\r\n",SOCK_TCPS);
  }

  //连接TCP服务器
  ret = connect(SOCK_TCPS,domain_ip,1883);//端口必须为1883
  if(ret != SOCK_OK){
    printf("%d:Socket Connect Error\r\n",SOCK_TCPS);
    while(1);
  }else{
    printf("%d:Connected\r\n",SOCK_TCPS);
  }                
        return 0;
}
/**
  * @brief  关闭socket
  * @param  无
  * @retval 小于0表示关闭失败
  */
int transport_close(void)
{
  close(SOCK_TCPS);
  return 0;
}


完成了这几个函数,然后我们就可以根据官方提供的示例代码实现我们自己的代码了,比如我们向代理服务器发送一个消息的代码如下所示:
[C] 纯文本查看 复制代码
/**
  * @brief  向代理(服务器)发送一个消息
  * @param  pTopic 消息主题
  * @param  pMessage 消息内容
  * @retval 小于0表示发送失败
  */
int mqtt_publish(char *pTopic,char *pMessage)
{
  int32_t len,rc;
  MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
  unsigned char buf[200];
  MQTTString topicString = MQTTString_initializer;
  int msglen = strlen(pMessage);
  int buflen = sizeof(buf);

  data.clientID.cstring = "me";
  data.keepAliveInterval = 5;
  data.cleansession = 1;
  len = MQTTSerialize_connect(buf, buflen, &data); /* 1 */

  topicString.cstring = pTopic;
  len += MQTTSerialize_publish(buf + len, buflen - len, 0, 0, 0, 0, topicString, (unsigned char*)pMessage, msglen); /* 2 */

  len += MQTTSerialize_disconnect(buf + len, buflen - len); /* 3 */
  transport_open();        
  rc = transport_sendPacketBuffer(buf,len);
  transport_close();
        if (rc == len)
                printf("Successfully published\n\r");
        else
                printf("Publish failed\n\r");
  return 0;
}

下面我们看下主函数的代码,思路也比较清晰:
[C] 纯文本查看 复制代码
int main(void)
{
  static char meassage[200];
  int rc;
  char *led;
  char led_value;
  float temperature,humidity,light,pressure;
  srand(0);
  //配置LED灯引脚
  LED_Config();
        //初始化配置网络
        network_init();
  while(1){
    memset(meassage,0,sizeof(meassage));
    //订阅消息
    rc = mqtt_subscrib("pyboard_led",meassage);
    printf("rc = %d\n\r",rc);
    if(rc >= 0){
      printf("meassage = %s\n\r",meassage);
      //解析JSON格式字符串并点亮相应的LED灯
      cJSON *root = cJSON_Parse(meassage); 
      if(root != NULL){
        led = cJSON_GetObjectItem(root,"led")->valuestring;
        printf("led = %s\n\r",led);
        led_value = cJSON_GetObjectItem(root,"value")->valueint;
        if(!strcmp(led,"red")){
          if(led_value){
            LED_On(LED_RED);
          }else{
            LED_Off(LED_RED);
          }
        }else if(!strcmp(led,"green")){
          if(led_value){
            LED_On(LED_GREEN);
          }else{
            LED_Off(LED_GREEN);
          }
        }else if(!strcmp(led,"blue")){
          if(led_value){
            LED_On(LED_BLUE);
          }else{
            LED_Off(LED_BLUE);
          }
        }else if(!strcmp(led,"yellow")){
          if(led_value){
            LED_On(LED_YELLOW);
            printf("Yellow On\n\r");
          }else{
            LED_Off(LED_YELLOW);
            printf("Yellow Off\n\r");
          }
        }
        // 释放内存空间  
        cJSON_Delete(root); 
      }else{
        printf("Error before: [%s]\n\r",cJSON_GetErrorPtr());  
      }
    }
    delay_ms(500);
    //获取传感器测量数据,该示例使用随机数
    temperature = rand()%50;
    humidity = rand()%100;
    light = rand()%1000;
    pressure = rand()%1000;
    //将数据合成为JSON格式数据
    sprintf(meassage,"{\"temperature\":%.1f,\"humidity\":%.1f,\"light\":%.1f,\"pressure\":%.1f}",temperature,humidity,light,pressure);
    //将数据发送出去
    mqtt_publish("pyboard_value",meassage);
  }
}

完整工程代码可在后面的附件下载。

2 手机端代码实现
手机端我们也使用官方提供的Java库Java client and utilities,下载地址:
http://www.eclipse.org/paho/
将jar文件添加到工程中即可,程序界面如下所示:

上面4个条目分别显示STM32单片机通过W5500发送到服务器端的传感器测量数据;
下面4个图片分别控制板子上的4个LED灯;
消息发送我们采用线程的方式发送,接收采用回调函数方式接收消息。

2.1 实现消息发送
发送消息的代码如下所示:
[Java] 纯文本查看 复制代码
  /**
     * send message
     */
    class PublishThread extends Thread {
        String topic;
        MqttMessage message;
        int qos = 0;
        MemoryPersistence persistence = new MemoryPersistence();
        PublishThread(String topic,String message){
            this.topic = topic;
            this.message = new MqttMessage(message.getBytes());
        }
        public void sendMessage(String topic,String message){
            this.topic = topic;
            this.message = new MqttMessage(message.getBytes());
            run();
        }
        @Override
        public void run() {
            try {
                MqttClient sampleClient = new MqttClient(broker, clientId, persistence);
                MqttConnectOptions connOpts = new MqttConnectOptions();
                connOpts.setCleanSession(true);
                connOpts.setKeepAliveInterval(1);
                System.out.println("Connecting to broker: " + broker);
                sampleClient.connect(connOpts);
                System.out.println("Connected");
                System.out.println("Publishing message: " + message.toString());
                message.setQos(qos);
                sampleClient.publish(topic, message);
                System.out.println("Message published");
                sampleClient.disconnect();
                System.out.println("Disconnected");
            }catch(MqttException me) {
                System.out.println("reason "+me.getReasonCode());
                System.out.println("msg "+me.getMessage());
                System.out.println("loc "+me.getLocalizedMessage());
                System.out.println("cause "+me.getCause());
                System.out.println("excep "+me);
                me.printStackTrace();
            }
        }
    }


2.2 实现消息接收
接收消息的代码如下所示:
[Java] 纯文本查看 复制代码
   /**
     * receive message
     */
    class SubscribeThread extends Thread{
        final String topic;
        MemoryPersistence persistence = new MemoryPersistence();
        SubscribeThread(String topic){
            this.topic = topic;
        }
        @Override
        public void run(){
            try {
                final MqttClient sampleClient = new MqttClient(broker, clientId, persistence);
                final MqttConnectOptions connOpts = new MqttConnectOptions();
                connOpts.setCleanSession(true);
                System.out.println("Connecting to broker: " + broker);
                connOpts.setKeepAliveInterval(5);
                sampleClient.setCallback(new MqttCallback() {
                    @Override
                    public void connectionLost(Throwable throwable) {
                        System.out.println("connectionLost");
                        try {
                            sampleClient.connect(connOpts);
                            sampleClient.subscribe(topic);
                        }catch (MqttException e){
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
                        System.out.println("messageArrived:"+mqttMessage.toString());
                        System.out.println(topic);
                        System.out.println(mqttMessage.toString());
                        try {
                            JSONTokener jsonParser = new JSONTokener(mqttMessage.toString());
                            JSONObject person = (JSONObject) jsonParser.nextValue();
                            temperature = person.getDouble("temperature");
                            humidity = person.getDouble("humidity");
                            light = person.getDouble("light");
                            pressure = person.getDouble("pressure");
                            System.out.println("temperature = " + temperature);
                            System.out.println("humidity = " + humidity);
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    temperatureTextView.setText(String.format("%.1f", temperature));
                                    humidityTextView.setText(String.format("%.1f", humidity));
                                    lightTextView.setText(String.format("%.1f", light));
                                    pressureTextView.setText(String.format("%.1f", pressure));
                                }
                            });
                        } catch (JSONException ex) {
                            ex.printStackTrace();
                        }
                    }

                    @Override
                    public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
                        System.out.println("deliveryComplete");
                    }
                });
                sampleClient.connect(connOpts);
                sampleClient.subscribe(topic);
            } catch(MqttException me) {
                System.out.println("reason "+me.getReasonCode());
                System.out.println("msg "+me.getMessage());
                System.out.println("loc "+me.getLocalizedMessage());
                System.out.println("cause "+me.getCause());
                System.out.println("excep "+me);
                me.printStackTrace();
            }
        }
    }


3 实测效果
1,单片机端定时更新传感器数据,手机端也会同步更新;
2,手机端点击4个LED控制的按钮,板子上也会点亮或者熄灭对应的LED;

4 源码下载
4.1 STM32端源码下载
MQTT_STM32_W5500.rar (512.37 KB, 下载次数: 1347, 售价: 20 金币)
4.2 手机端源码下载
MQTT_Android.rar (334.76 KB, 下载次数: 448, 售价: 20 金币)
4.3 手机端apk下载
stm32_w5500_mqtt_app.rar (901.16 KB, 下载次数: 1059)

人生到处知何似,应似飞鸿踏雪泥。

29

帖子

1

主题

11

金币

注册会员

Rank: 2

积分
65
推荐
发表于 2015-8-10 14:27:16 | 只看该作者
怎么下载还有限制要啊

29

帖子

6

主题

76

金币

注册会员

Rank: 2

积分
109
板凳
发表于 2015-8-10 14:04:30 | 只看该作者
也有一块和版主一样的W5500的模块,改天也下载了玩一下
只是版主是否能详细介绍一下MQTT?

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
地板
?楼主| 发表于 2015-8-10 14:13:18 | 只看该作者
mini92 发表于 2015-8-10 14:04
也有一块和版主一样的W5500的模块,改天也下载了玩一下
只是版主是否能详细介绍一下MQTT?

http://www.embed-net.com/thread-224-1-1.html
看下这个
人生到处知何似,应似飞鸿踏雪泥。

26

帖子

0

主题

195

金币

新手上路

Rank: 1

积分
221
5#
发表于 2015-8-10 20:21:05 | 只看该作者
这个不错啊

29

帖子

1

主题

11

金币

注册会员

Rank: 2

积分
65
6#
发表于 2015-8-10 20:36:28 | 只看该作者
这个不错啊

8

帖子

0

主题

20

金币

新手上路

Rank: 1

积分
36
7#
发表于 2015-8-11 16:03:20 | 只看该作者
学习一下,好好研究

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
8#
?楼主| 发表于 2015-8-11 20:49:02 | 只看该作者
yklstudent 发表于 2015-8-11 13:05
STM32F407+DP83848+LWIP可以移植实现MQTT协议功能码?

肯定是可以的,如果你已经移植好了TCP的功能就很容易了,我后面也打算用这种组合来实现下
人生到处知何似,应似飞鸿踏雪泥。

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
9#
?楼主| 发表于 2015-8-12 09:29:09 | 只看该作者
yklstudent 发表于 2015-8-12 09:15
TCPIP移植好了,数据收发都正常;
但是看你用的socket,据了解这个要在RTOS下用才可以,
所以支持版主 ...

其实不用socket方式也可以的,只要你能收发数据就行,只是我的程序用的这种方式而已,你可以自己封装下我文中提到的4个收发管理函数
人生到处知何似,应似飞鸿踏雪泥。

1

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
5
10#
发表于 2015-8-15 19:54:13 | 只看该作者
谢谢分享!!!!

1

帖子

0

主题

8

金币

新手上路

Rank: 1

积分
9
11#
发表于 2015-8-16 13:43:12 | 只看该作者
lz 你好 我用stm32F103C8 + uip + ENC28j60 可以正常通信了??这套硬件 可以移植MQTT吗

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
12#
?楼主| 发表于 2015-8-16 20:32:59 | 只看该作者
u_tansuo 发表于 2015-8-16 13:43
lz 你好 我用stm32F103C8 + uip + ENC28j60 可以正常通信了??这套硬件 可以移植MQTT吗

完全可以,我也打算用这个组合实现MQTT
人生到处知何似,应似飞鸿踏雪泥。

4

帖子

0

主题

3

金币

新手上路

Rank: 1

积分
7
13#
发表于 2015-8-17 16:21:12 | 只看该作者
学习一下,好好研究

22

帖子

0

主题

39

金币

注册会员

Rank: 2

积分
79
14#
发表于 2015-8-19 15:26:05 | 只看该作者
谢谢楼主分享,很有启发性

9

帖子

0

主题

52

金币

注册会员

Rank: 2

积分
78
15#
发表于 2015-8-30 21:28:48 | 只看该作者
好东西,长见识。。。

1

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
7
16#
发表于 2015-9-2 11:38:11 | 只看该作者
不错,正在学习中

1

帖子

0

主题

6

金币

新手上路

Rank: 1

积分
12
17#
发表于 2015-9-4 01:40:25 | 只看该作者
谢谢楼主分享,我们正在做了一个开源项目:www.wifimcu.com,最近需要把mqtt集成进去,找到楼主的帖子,很有用。谢谢。

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
18#
?楼主| 发表于 2015-9-4 19:13:03 | 只看该作者
xsyp 发表于 2015-9-4 01:40
谢谢楼主分享,我们正在做了一个开源项目:www.wifimcu.com,最近需要把mqtt集成进去,找到楼主的帖子,很 ...

看了下,还不错
人生到处知何似,应似飞鸿踏雪泥。

47

帖子

0

主题

31

金币

注册会员

Rank: 2

积分
146
19#
发表于 2015-9-9 21:48:14 | 只看该作者
不错,值得借鉴一下,下次再来!

9

帖子

0

主题

0

金币

新手上路

Rank: 1

积分
27
20#
发表于 2015-10-10 17:04:15 | 只看该作者
对于学习MQTT的初学者还是很有帮助的。正好有W5500的模块,准备试试。

4

帖子

1

主题

6

金币

新手上路

Rank: 1

积分
14
21#
发表于 2015-10-12 23:19:24 | 只看该作者
这个不错.

11

帖子

0

主题

48

金币

注册会员

Rank: 2

积分
77
22#
发表于 2015-10-13 09:54:02 | 只看该作者

5

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
19
23#
发表于 2015-10-13 13:58:21 | 只看该作者
飞鸿踏雪 发表于 2015-8-16 20:32
完全可以,我也打算用这个组合实现MQTT

thank you 已经找到原因

5

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
19
24#
发表于 2015-10-13 13:59:27 | 只看该作者
飞鸿踏雪 发表于 2015-8-16 20:32
完全可以,我也打算用这个组合实现MQTT

谢谢楼主 已经找到原因

5

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
19
25#
发表于 2015-10-13 14:02:41 | 只看该作者
谢谢楼主 已经找到原因

11

帖子

2

主题

6

金币

新手上路

Rank: 1

积分
37
26#
发表于 2015-10-14 13:39:37 | 只看该作者
谢谢分享,!!!!!!!!

13

帖子

0

主题

145

金币

中级会员

Rank: 3Rank: 3

积分
294
27#
发表于 2015-10-14 17:10:49 | 只看该作者
持续关注中,学习!

11

帖子

0

主题

16

金币

新手上路

Rank: 1

积分
49
28#
发表于 2015-10-19 20:14:30 | 只看该作者
这个不错啊

20

帖子

0

主题

11

金币

注册会员

Rank: 2

积分
63
29#
发表于 2015-10-21 09:37:11 | 只看该作者
这金币也要太多啦

21

帖子

1

主题

14

金币

注册会员

Rank: 2

积分
50
30#
发表于 2015-10-22 16:12:44 | 只看该作者
很好好好!很好好好!很好好好!很好好好!很好好好!

21

帖子

1

主题

14

金币

注册会员

Rank: 2

积分
50
31#
发表于 2015-10-22 16:13:29 | 只看该作者
很好好好很好好好很好好好很好好好很好好好!

21

帖子

1

主题

14

金币

注册会员

Rank: 2

积分
50
32#
发表于 2015-10-22 16:15:03 | 只看该作者

学习一下,好好研究

21

帖子

1

主题

14

金币

注册会员

Rank: 2

积分
50
33#
发表于 2015-10-22 16:17:46 | 只看该作者
实现远程数据采集及控制,很好的

21

帖子

1

主题

14

金币

注册会员

Rank: 2

积分
50
34#
发表于 2015-10-22 17:17:11 | 只看该作者

多谢楼主分享,希望便宜一些:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)

17

帖子

0

主题

22

金币

注册会员

Rank: 2

积分
58
35#
发表于 2015-10-30 03:24:27 | 只看该作者
努力赚积分下代码

50

帖子

0

主题

196

金币

中级会员

Rank: 3Rank: 3

积分
343
36#
发表于 2015-11-2 15:57:51 | 只看该作者
功能很不错,谢谢分享

27

帖子

0

主题

26

金币

注册会员

Rank: 2

积分
89
37#
发表于 2015-11-3 11:29:44 | 只看该作者
很好好好!很好好好!很好好好!很好好好!很好好好!

4

帖子

1

主题

8

金币

新手上路

Rank: 1

积分
23
38#
发表于 2015-11-3 15:26:41 | 只看该作者
正需要就是分太贵了

12

帖子

3

主题

3

金币

新手上路

Rank: 1

积分
46
39#
发表于 2015-11-3 15:31:10 | 只看该作者
积分不够下不了哟,郁闷

12

帖子

3

主题

3

金币

新手上路

Rank: 1

积分
46
40#
发表于 2015-11-3 15:31:48 | 只看该作者
不够分看不到内容呢郁闷ING

12

帖子

3

主题

3

金币

新手上路

Rank: 1

积分
46
41#
发表于 2015-11-3 15:33:33 | 只看该作者
很有用的东西

13

帖子

1

主题

7

金币

新手上路

Rank: 1

积分
34
42#
发表于 2015-11-4 12:12:05 来自手机 | 只看该作者
对于学习MQTT的初学者还是很有帮助的。

17

帖子

0

主题

22

金币

注册会员

Rank: 2

积分
58
43#
发表于 2015-11-8 19:48:58 | 只看该作者
下载了楼主的安卓源码,因为版本问题折腾好久一直都编译不过,报这个错:
\MQTT_Android\RemoteMeasure\app\src\main\res\values\styles.xml:4: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
楼主能不能搞个新工程,最低支持4.0 SDK的工程啊

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
44#
?楼主| 发表于 2015-11-9 08:46:06 | 只看该作者
lghtjpu 发表于 2015-11-8 19:48
下载了楼主的安卓源码,因为版本问题折腾好久一直都编译不过,报这个错:
\MQTT_Android\RemoteMeasure\ap ...

其实你完全可以自己新建一个工程,然后只把我界面设计文件和程序拷贝过去就行了
人生到处知何似,应似飞鸿踏雪泥。

3

帖子

0

主题

14

金币

新手上路

Rank: 1

积分
31
45#
发表于 2015-11-9 13:31:51 | 只看该作者
如果改成是wifi模块的话socket这边就不用弄了吧

17

帖子

0

主题

1

金币

新手上路

Rank: 1

积分
38
46#
发表于 2015-11-9 15:54:47 | 只看该作者
楼主威武,不错。

50

帖子

0

主题

196

金币

中级会员

Rank: 3Rank: 3

积分
343
47#
发表于 2015-11-10 12:50:31 | 只看该作者

2

帖子

0

主题

13

金币

新手上路

Rank: 1

积分
19
48#
发表于 2015-11-12 16:16:48 | 只看该作者
学习了

3

帖子

0

主题

14

金币

新手上路

Rank: 1

积分
31
49#
发表于 2015-11-14 18:28:01 | 只看该作者
楼主你是用socket的connect函数取连接MQTT的服务器的吗
??ret = connect(SOCK_TCPS,domain_ip,1883);
domain是MQTT的地址?

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
50#
?楼主| 发表于 2015-11-16 08:28:27 | 只看该作者
lqwwan233 发表于 2015-11-14 18:28
楼主你是用socket的connect函数取连接MQTT的服务器的吗
??ret = connect(SOCK_TCPS,domain_ip,1883);
dom ...

是的
人生到处知何似,应似飞鸿踏雪泥。

3

帖子

0

主题

14

金币

新手上路

Rank: 1

积分
31
51#
发表于 2015-11-16 09:48:49 | 只看该作者

那样的话一旦调用
int transport_close(void)
{
??close(SOCK_TCPS);
??return 0;
}
是不是不仅断开MQTT服务器,还断开本地的socket连接?

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
52#
?楼主| 发表于 2015-11-16 12:05:06 | 只看该作者
lqwwan233 发表于 2015-11-16 09:48
那样的话一旦调用
int transport_close(void)
{

是的
人生到处知何似,应似飞鸿踏雪泥。

2

帖子

0

主题

27

金币

新手上路

Rank: 1

积分
33
53#
发表于 2015-11-16 18:50:03 | 只看该作者
厉害!!!!

1

帖子

0

主题

0

金币

新手上路

Rank: 1

积分
3
54#
发表于 2015-11-17 10:17:31 | 只看该作者
厉害啊

8

帖子

0

主题

9

金币

新手上路

Rank: 1

积分
29
55#
发表于 2015-11-20 22:27:55 | 只看该作者

谢谢分享!!!!

10

帖子

1

主题

6

金币

新手上路

Rank: 1

积分
31
56#
发表于 2015-11-26 11:40:32 | 只看该作者
太好了呀, 好资料,

3

帖子

0

主题

8

金币

新手上路

Rank: 1

积分
17
57#
发表于 2015-11-26 20:38:09 | 只看该作者
正好需要,非常感谢

3

帖子

0

主题

18

金币

新手上路

Rank: 1

积分
27
58#
发表于 2015-12-7 11:52:36 | 只看该作者
正在学习,非常感谢

68

帖子

0

主题

56

金币

新手上路

Rank: 1

积分
250
59#
发表于 2015-12-31 13:23:54 | 只看该作者
非常好的资料,多谢楼主分享

5

帖子

0

主题

24

金币

新手上路

Rank: 1

积分
39
60#
发表于 2015-12-31 17:54:21 | 只看该作者
你说不评论哪来的金币?

9

帖子

0

主题

0

金币

新手上路

Rank: 1

积分
27
61#
发表于 2016-1-4 13:22:00 | 只看该作者
楼主威武,zanzanzan

15

帖子

0

主题

36

金币

注册会员

Rank: 2

积分
61
62#
发表于 2016-1-11 20:21:23 | 只看该作者
xue xi xue xi

22

帖子

0

主题

12

金币

注册会员

Rank: 2

积分
72
63#
发表于 2016-1-25 01:54:17 | 只看该作者
楼主厉害,辛苦了!

8

帖子

0

主题

16

金币

新手上路

Rank: 1

积分
34
64#
发表于 2016-1-26 15:30:33 | 只看该作者
金币啊 金币啊 金币??来些吧

18

帖子

0

主题

5

金币

注册会员

Rank: 2

积分
60
65#
发表于 2016-1-29 15:24:55 | 只看该作者
狂赞啊,楼主实在太牛了,这个论坛都是楼主的精华资料

27

帖子

0

主题

8

金币

注册会员

Rank: 2

积分
65
66#
发表于 2016-1-29 18:06:20 | 只看该作者
楼主太牛了

12

帖子

0

主题

3

金币

新手上路

Rank: 1

积分
29
67#
发表于 2016-2-1 15:58:34 | 只看该作者
首先感谢楼主的无私奉献,现在我已经用你的代码局域网可以,但是现在有个问题就是只用你代码中的域名
uint8_t domain_ip[4]={115,29,225,215};
uint8_t domain_name[]="www.embed-net.com";
为什么显示
0:Opened
0:Socket Connect Error
请问为什么啊

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
68#
?楼主| 发表于 2016-2-1 17:55:34 | 只看该作者
zhao305149619 发表于 2016-2-1 15:58
首先感谢楼主的无私奉献,现在我已经用你的代码局域网可以,但是现在有个问题就是只用你代码中的域名
uint ...

板子能上外网吗?连接失败了
人生到处知何似,应似飞鸿踏雪泥。

12

帖子

0

主题

2

金币

新手上路

Rank: 1

积分
24
69#
发表于 2016-2-1 19:33:28 | 只看该作者
谢谢楼主,请问有没有用android + 以太网实现paho应用的?谢谢!

12

帖子

0

主题

3

金币

新手上路

Rank: 1

积分
29
70#
发表于 2016-2-2 11:00:19 | 只看该作者
飞鸿踏雪 发表于 2016-2-1 17:55
板子能上外网吗?连接失败了

能上外网,该怎么测试能不能上外网?现在是链接不了和你配套的网站,还有楼主我只有10个金币了,你的app源码能不能给发一份啊,万分感谢,ahzjp888@126.com

12

帖子

0

主题

3

金币

新手上路

Rank: 1

积分
29
71#
发表于 2016-2-3 13:26:36 | 只看该作者
你好,你的源码为什么我弄出来的apk安装不了啊

18

帖子

0

主题

5

金币

注册会员

Rank: 2

积分
60
72#
发表于 2016-2-3 14:57:04 | 只看该作者
赞,关注W5500以太网通信

18

帖子

0

主题

5

金币

注册会员

Rank: 2

积分
60
73#
发表于 2016-2-3 14:59:10 | 只看该作者
APP,有点实际应用价值

3

帖子

0

主题

18

金币

新手上路

Rank: 1

积分
27
74#
发表于 2016-2-18 15:50:43 | 只看该作者
不错,好资料,感谢分享!

4

帖子

0

主题

6

金币

新手上路

Rank: 1

积分
18
75#
发表于 2016-2-20 19:55:17 | 只看该作者

也有一块和版主一样的W5500的模块,改天也下载了玩一下

1

帖子

0

主题

8

金币

新手上路

Rank: 1

积分
11
76#
发表于 2016-2-22 11:55:49 | 只看该作者
顶一下,老板让做的,做一下,看着流程是不复杂了,尝试一下

1

帖子

0

主题

12

金币

新手上路

Rank: 1

积分
15
77#
发表于 2016-2-23 22:39:40 | 只看该作者
非常有帮助,谢谢!

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
78#
发表于 2016-2-25 09:43:04 | 只看该作者
可惜没金币

21

帖子

4

主题

140

金币

版主

Rank: 7Rank: 7Rank: 7

积分
293
79#
发表于 2016-2-25 09:48:24 | 只看该作者
非常棒的资源,相信IBM的MQTT物联网协议近几年会大火

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
80#
发表于 2016-2-29 16:45:49 | 只看该作者
请教,我的系统也是STM32+W5500,服务器用的http://m2m.demos.ibm.com/mqttclient/#publish,Andriod手机端可以接收STM32发来的数据,但是手机端点击4个指示灯时STM32端收不到订阅,服务器可以看到,这是什么原因?

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
81#
发表于 2016-2-29 17:04:06 | 只看该作者
同样的硬件也搭了这样的系统测试,服务器用的http://m2m.demos.ibm.com/mqttclient/#publish,手机端接收数据正常,现在的问题时手机点击4个灯时,STM32没有收到订阅,请问这是什么原因?

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
82#
发表于 2016-3-2 10:44:49 | 只看该作者
服务器换成m2m.eclipse.org,可以接收订阅,但是不稳定,有没有可能是w5500阻塞接收的问题?

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
83#
?楼主| 发表于 2016-3-2 11:34:51 | 只看该作者
waterx3 发表于 2016-3-2 10:44
服务器换成m2m.eclipse.org,可以接收订阅,但是不稳定,有没有可能是w5500阻塞接收的问题?

有这可能,我一般会把单片机程序修改成非阻塞方式,也就是加一个超时参数,时间超时了直接跳出接收操作,执行后面的操作
人生到处知何似,应似飞鸿踏雪泥。

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
84#
发表于 2016-3-2 14:16:40 | 只看该作者
飞鸿踏雪 发表于 2016-3-2 11:34
有这可能,我一般会把单片机程序修改成非阻塞方式,也就是加一个超时参数,时间超时了直接跳出接收操作, ...

谢谢您的bet365体-在线体育投注_365体育投注地址_365体育投注登录,有没有类似的例子看看

13

帖子

0

主题

5

金币

新手上路

Rank: 1

积分
30
85#
发表于 2016-3-3 09:37:12 | 只看该作者
这么厉害!!!!!!!

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
86#
发表于 2016-3-3 15:33:29 | 只看该作者
版主啊,给个非阻塞的例子看看吧

1

帖子

0

主题

16

金币

新手上路

Rank: 1

积分
19
87#
发表于 2016-3-13 21:08:31 | 只看该作者
非常好的资料??

9

帖子

0

主题

38

金币

注册会员

Rank: 2

积分
54
88#
发表于 2016-3-14 22:22:45 | 只看该作者
非常有帮助,感谢楼主

8

帖子

0

主题

5

金币

新手上路

Rank: 1

积分
23
89#
发表于 2016-3-15 15:47:38 | 只看该作者
高大上的东西,貌似太复杂了

2

帖子

0

主题

6

金币

新手上路

Rank: 1

积分
12
90#
发表于 2016-3-16 10:35:07 | 只看该作者
使用亚马逊的aws,学习MQTT中。

2

帖子

0

主题

13

金币

新手上路

Rank: 1

积分
19
91#
发表于 2016-3-18 14:24:44 | 只看该作者
很好的资料,学习

7

帖子

0

主题

29

金币

注册会员

Rank: 2

积分
50
92#
发表于 2016-3-22 22:08:48 | 只看该作者
想学习MQTT

47

帖子

0

主题

31

金币

注册会员

Rank: 2

积分
146
93#
发表于 2016-3-24 16:02:43 | 只看该作者
学习一下,好好研究

12

帖子

1

主题

-20

金币

新手上路

Rank: 1

积分
13
94#
发表于 2016-3-24 21:01:27 | 只看该作者
楼主确实厉害,佩服

6

帖子

2

主题

45

金币

注册会员

Rank: 2

积分
69
95#
发表于 2016-4-8 10:06:35 | 只看该作者
资料真心不错,正在研究MQTT,非常有用,力荐。

6

帖子

2

主题

45

金币

注册会员

Rank: 2

积分
69
96#
发表于 2016-4-8 10:07:06 | 只看该作者
资料真心不错,正在研究MQTT,非常有用,力荐。

6

帖子

2

主题

45

金币

注册会员

Rank: 2

积分
69
97#
发表于 2016-4-8 10:08:41 | 只看该作者
资料真心不错,正在研究MQTT,非常有用,力荐。

11

帖子

0

主题

57

金币

注册会员

Rank: 2

积分
90
98#
发表于 2016-4-9 01:25:28 | 只看该作者
@飞鸿踏雪 版主,那个APK怎么安装不了?

1108

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
148882
QQ
99#
?楼主| 发表于 2016-4-10 21:07:33 | 只看该作者
qq792368480 发表于 2016-4-9 01:25
@飞鸿踏雪 版主,那个APK怎么安装不了?

不知道,我手机上可以安装,你可以自己编译源码
人生到处知何似,应似飞鸿踏雪泥。

14

帖子

0

主题

8

金币

新手上路

Rank: 1

积分
44
100#
发表于 2016-4-11 14:34:46 | 只看该作者
楼主能否写下扩展芯片及传感器的信息?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|嵌入式以太网社区 ( 渝ICP备14007427号 )?

GMT+8, 2019-10-17 08:39 , Processed in 0.264297 second(s), 37 queries .

Powered by Discuz! X3.2

? 2001-2013 Comsenz Inc.

快速bet365体-在线体育投注_365体育投注地址_365体育投注登录 返回顶部 返回列表