
物联网设备中的C ++的通信协议实现和数据处理
随着物联网(IoT)的快速发展,各种类型的设备通过通信,传输和接收数据。 C ++是一种广泛使用的语言,特别适用于嵌入式系统。在本文中,我们将讨论如何使用C ++在物联网设备和过程数据之间实现通信协议。我们将以MQTT()协议为例。这是一个轻巧的消息发布/订阅协议,非常适合带宽和有限功率的物联网设备。
MQTT简介
MQTT是客户端服务器模型发布/订阅消息传输协议。它允许客户端(例如传感器)将消息发送到代理服务器,而其他客户端可以从代理服务器订阅这些消息。
MQTT的工作原理
连接:IoT设备连接到MQTT代理作为客户端。
发布:如果设备有新数据,它将将此信息发布到特定主题(主题)。
订阅:其他设备可以订阅感兴趣的主题以接收相关新闻。
QoS(服务质量):MQTT支持不同级别的质量保证机制,以确保可以可靠地传递该消息。
开发环境的准备
这是您需要安装的一些重要工具:
C ++编译器,例如G ++
MQTT客户库库,例如PAHO MQTT C ++库
创建您的开发项目目录并配置相应的文件。
安装PAHO MQTT C ++库
在类似Unix的系统上,可以运行以下命令:
<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="code-snippet__js" data-lang=""><code><span leaf=""><span class="code-snippet__plaintext">ounter(line</span></span></code><code><span leaf=""><span class="code-snippet__plaintext">sudo apt install libpaho-mqttpp3-dev</span></span></code></pre></p>
对于用户,您可以从官方网站下载PAHO,并根据相应的指南进行安装。
示例代码:MQTT发布者和订户实现
以下是一个简单的MQTT 和带有C ++的订户示例代码。这两个代码显示了如何建立部分或远程连接,发送和接收信息。
()
首先创建.cpp文件并编写以下内容:
<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="code-snippet__js" data-lang="php"><code><span leaf=""><span class="code-snippet__title">ounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__title">lineounter</span><span class="code-snippet__plaintext">(line</span></span></code><code><span leaf=""><span class="code-snippet__plaintext">#</span><span class="code-snippet__keyword">include</span><span class="code-snippet__plaintext"> <iostream></span></span></code><code><span leaf=""><span class="code-snippet__plaintext">#</span><span class="code-snippet__keyword">include</span><span class="code-snippet__plaintext"> <</span><span class="code-snippet__keyword">string</span><span class="code-snippet__plaintext">></span></span></code><code><span leaf=""><span class="code-snippet__plaintext">#</span><span class="code-snippet__keyword">include</span><span class="code-snippet__plaintext"> <mqtt/client.h></span></span></code><code><span leaf=""><br /></span></code><code><span leaf=""><span class="code-snippet__keyword">const</span><span class="code-snippet__plaintext"> std::</span><span class="code-snippet__variable">string</span><span class="code-snippet__plaintext"> </span><span class="code-snippet__title">SERVER_ADDRESS</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__string">"tcp://broker.hivemq.com:1883"</span><span class="code-snippet__plaintext">);</span></span></code><code><span leaf=""><span class="code-snippet__keyword">const</span><span class="code-snippet__plaintext"> std::</span><span class="code-snippet__variable">string</span><span class="code-snippet__plaintext"> </span><span class="code-snippet__title">CLIENT_ID</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__string">"ExamplePublisher"</span><span class="code-snippet__plaintext">);</span></span></code><code><span leaf=""><span class="code-snippet__keyword">const</span><span class="code-snippet__plaintext"> std::</span><span class="code-snippet__variable">string</span><span class="code-snippet__plaintext"> </span><span class="code-snippet__title">TOPIC</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__string">"iot/sensor"</span><span class="code-snippet__plaintext">);</span></span></code><code><span leaf=""><br /></span></code><code><span leaf=""><span class="code-snippet__keyword">int</span><span class="code-snippet__plaintext"> </span><span class="code-snippet__title">main</span><span class="code-snippet__plaintext">() {</span></span></code><code><span leaf=""><span class="code-snippet__plaintext"> mqtt::</span><span class="code-snippet__variable">client</span><span class="code-snippet__plaintext"> </span><span class="code-snippet__title">publisher</span><span class="code-snippet__plaintext">(SERVER_ADDRESS, CLIENT_ID);</span></span></code><code><span leaf=""><br /></span></code><code><span leaf=""><span class="code-snippet__plaintext"> </span><span class="code-snippet__keyword">try</span><span class="code-snippet__plaintext"> {</span></span></code><code><span leaf=""><span class="code-snippet__plaintext"> publisher.</span><span class="code-snippet__title">connect</span><span class="code-snippet__plaintext">();</span></span></code><code><span leaf=""><br /></span></code><code><span leaf=""><span class="code-snippet__plaintext"> </span><span class="code-snippet__keyword">for</span><span class="code-snippet__plaintext">(</span><span class="code-snippet__keyword">int</span><span class="code-snippet__plaintext"> i = </span><span class="code-snippet__number">0</span><span class="code-snippet__plaintext">; i < </span><span class="code-snippet__number">10</span><span class="code-snippet__plaintext">; ++i) {</span></span></code><code><span leaf=""><span class="code-snippet__plaintext"> std::</span><span class="code-snippet__variable">string</span><span class="code-snippet__plaintext"> payload = </span><span class="code-snippet__string">"Hello from IoT device! Message #"</span><span class="code-snippet__plaintext"> + std::</span><span class="code-snippet__title">to_string</span><span class="code-snippet__plaintext">(i);</span></span></code><code><span leaf=""><span class="code-snippet__plaintext"> publisher.</span><span class="code-snippet__title">publish</span><span class="code-snip