python 怎样调用硬件_python使用MQTT给硬件传输图片的实现方法

本文介绍了如何使用Python的Flask和MQTT库,通过分解图片数据并封装成多个消息,实现向硬件设备传输图片的详细过程。涉及到图片读取、MQTT协议、消息反馈重传机制等关键步骤。
摘要由CSDN通过智能技术生成

最近因需要用python写一个微服务来用MQTT给硬件传输图片,其中python用的是flask框架,大概流程如下:

协议为:

需要将图片数据封装成多个消息进行传输,每个消息传输的数据字节数为1400Byte。

消息(MQTT Payload) 格式:Web服务器-------->BASE:

反馈:BASE---------> Web服务器:

如果Web服务器发送完一个“数据传输消息”后,5S内没有收到MQTT“反馈消息”或者收到的反馈中显示“数据包不完整”,则重发该“数据传输消息”。

程序流程图

根据上面的协议,可以得到如下的流程图:

代码如下:

# encoding:utf-8

from flask import Flask, jsonify

from flask_restful import Api, Resource, reqparse

from PIL import Image

from io import BytesIO

import requests

import os, logging, time

import paho.mqtt.client as mqtt

import struct

from flask_cors import *

# 日志配置信息

logging.basicConfig(

level=logging.INFO,

format='%(asctime)s - %(name)s - %(levelname)s - %(message)s (runing by %(funcName)s',

)

class Mqtt(object):

def __init__(self, img_data, size):

self.MQTTHOST = '*******'

self.MQTTPORT = "******"

# 订阅和发送的主题

self.topic_from_base = 'mqttTestSub'

self.topic_to_base = 'mqttTestPub'

self.client_id = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))

self.client = mqtt.Client(self.client_id)

# 完成链接后的回掉函数

self.client.on_connect = self.on_connect

# 图片大小

self.size = size

# 用于跳出死循环,结束任务

self.finished = None

# 包的编号

self.index = 0

# 将收到的图片数据按大小分成列表

self.image_data_list = [img_da

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值