小编Mar*_*ura的帖子

Paho(MQTT)客户端无法连接

我正在使用这个python脚本来实现一个基本的Paho(MQTT)订阅者,但在某些情况下它不会调用on_connect.

我尝试了以下内容,所有代码完全相同:

  • 在桌面PC(Ubuntu)上运行Raspbery pi,经纪人.工作.
  • 在Pc(Ubuntu)中运行,在同一个PC上运行.不行.
  • 在Pc(Ubuntu)中运行,在其他PC(Ubuntu)上运行.不行.
  • 在Pc(Ubuntu)中运行,broker.hivemq.com作为经纪人.工作.
  • 在Pc(Ubuntu),broker.hivemq.com(它的IP)中作为经纪人运行.工作.

我通常也这样做:

  • 所有先前组合中的mosquitto_sub/pub终端.工作.
  • 以前所有组合中的官方C++ paho包装器.工作.

还尝试了官方网站上列出的所有设置方法.所以python的paho库似乎与我的本地经纪人不相处,除非我从我的树莓中运行它.但是使用相同的代理可以很好地与c ++的paho库一起使用,如果使用终端的MQTT.什么可以发生的想法?

     import paho.mqtt.client as mqtt

     def on_connect(mqtt_client, obj, flags, rc):
         mqtt_client.subscribe("test")
         print "on_connect"

     def on_message(mqtt_client, obj, msg):
         print "on_message"

     mqtt_client = mqtt.Client()
     mqtt_client.on_connect = on_connect
     mqtt_client.on_message = on_message
     mqtt_client.connect("127.0.0.1",1883)
     mqtt_client.loop_forever()
Run Code Online (Sandbox Code Playgroud)

python ubuntu mqtt mosquitto paho

4
推荐指数
1
解决办法
4184
查看次数

在x86汇编中将64位常量移动到内存

我正在使用Intel x64汇编,NASM编译器,尝试将"0x4000000000000000"常量移动到内存,在ieee 754标准double中应该等于2.0.

我正在使用的代码是:

%define two 0x4000000000000000 

section .text

foo:

push rbp
mov rbp, rsp

mov QWORD [rdi], two

pop rbp
ret
Run Code Online (Sandbox Code Playgroud)

编译此抛出

警告:签名dword立即超出界限.

当我用C++打印值时,它显示"0"而不是"2".

我已经找到了获得正确价值的方法,即:

mov r9, 0x4000000000000000
mov [rdi], r9
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有办法在不使用寄存器的情况下实现这一目标.

顺便说一句,我用这个脚本编译代码:

#!/bin/bash
nasm -f elf64 -g -F dwarf vvp_asm.asm -o vvp_asm.o
g++ -c -m64 -std=c++11 main.cpp -o main.o
g++ -o main -m64 vvp_asm.o main.o
Run Code Online (Sandbox Code Playgroud)

64-bit x86 assembly x86-64 nasm

4
推荐指数
1
解决办法
2315
查看次数

标签 统计

64-bit ×1

assembly ×1

mosquitto ×1

mqtt ×1

nasm ×1

paho ×1

python ×1

ubuntu ×1

x86 ×1

x86-64 ×1