提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、发送:Send_Pic.py
  • 二、接收:Rece_All.py

前言

通过MQTT发送图片


提示:以下是本篇文章正文内容,下面案例可供参考

一、发送:Send_Pic.py

使用字节流读取图片文件,切片发送

# -*- coding: utf-8 -*-
"""
Created on Sat Apr  2 15:12:19 2022@author: 嗯哒
"""import time
import paho.mqtt.client as mqtt
import os
import struct
import pandas as pd def on_connect(client, userdata, flags, rc):print("Connect with result "+str(rc))def on_message(client, userdata, msg):print("接收到的消息为:"+str(msg.payload))client = mqtt.Client()
client.on_connect = on_connect
client.on_messafe = on_message
client.connect('192.168.137.1', 1883, 600)
client.loop_start()path = ***** #图片路径if os.path.exists(path):#图片存在,发送图片filepath = pathif os.path.isfile(filepath):# 定义定义文件信息。128s表示文件名为128bytes长,l表示一个int或log文件类型,在此为文件大小fileinfo_size = struct.calcsize('128sl')# 定义文件头信息,包含文件名和文件大小fhead = struct.pack('128sl', bytes(os.path.basename(filepath).encode('utf-8')),os.stat(filepath).st_size)print(os.stat(filepath).st_size)client.publish('Pi-1', payload = fhead, qos =0)time.sleep(3)filesize=os.stat(filepath).st_sizeprint ('client filepath: {0}'.format(filepath))fp = open(filepath, 'rb')re_size=0while 1:if filesize - re_size >= 1024:  #文件切片,大小可自定义,视情况而定data = fp.read(1024)re_size += 1024else:data = fp.read(filesize - re_size)print(len(data))if not data:print ('{0} file send over...'.format(filepath))print('')breakclient.publish('Pi-1', payload = data, qos =0)time.sleep(1)
else:breakclient.loop_stop()
print('Photos send end.')
print('Server is receiving, wait patiently please !')**

二、接收:Rece_All.py

# -*- coding: utf-8 -*-
"""
Created on Tue Apr  5 15:45:42 2022@author: 嗯哒
"""import paho.mqtt.client as mqtt
import numpy as np
import pandas as pd
import time
import threading
import sys
import os
import struct
import csvcount = 0
Tag = 0
Tag_2 = 0
new_filename = 0
filesize = 0
fp = 0
writer = 0
def on_connect(client, userdata, flags, rc):print("Connect with result: "+str(rc))def on_message(client, userdata, msg):global new_filename,filesize,fp,writer,Tag#Tag==0 时接收文件名和文件大小if Tag == 0:if buf:filename, filesize = struct.unpack('128sl', buf)fn = filename.strip(str.encode('\00'))print(fn)new_filename = os.path.join('./', str(fn)[2:-1])print ('file new name is {0}, filesize is {1}'.format(new_filename, filesize))fp = open(new_filename, 'wb')  print('receiving...')Tag = 1#Tag == 1时接收文件内容elif Tag == 1: fp.write(msg.payload)if fp.tell() >= filesize:Tag = 0print('1 Round over.')fp.close()time.sleep(1)#接收完成,Tag置为2Tag = 2client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect('127.0.0.1', 1883, 600)
client.subscribe('Pi-1', qos=0)
client.loop_start()print('start')while True:if (Tag == 2):client.publish('Rece', payload = bytes(('OK').encode('UTF-8')), qos =0)#print('end')#breakelse:passclient.loop_stop()

树莓派通过MQTT协议发送图片相关推荐

  1. MQTT协议发送GPS坐标到服务器

    MQTT协议发送GPS坐标到服务器 一.配置GPS 个人感觉USB的GPS好一些.感觉不好找的同学我这还有淘宝链接,卖家没给钱,只是为了方便同学们. 第一步买回来照着上图连线即可,我用了四根杜邦线: ...

  2. C++中的Socket编程使用协议发送图片

    使用: (1)首先运行服务端,待服务端运行起来: (2)最后运行客户端,输入要传输文件到哪个目标机器的IP地址: (3)输入传输文件的路径及文件(完成的路径),其中包含文件的类型,也就是后缀需要包含( ...

  3. html消息发送接收,在html页面中 如何应用mqtt协议发送/接收消息

    经过前面几篇文章的介绍,在很多场景下利用NodeMCU加持mqtt协议来控制几乎所有需要传感器监控的行业都能极大地简化物联的成本.在这样一个基础上,还能拓展出很多好玩的.实际运用的甚至能够作为商业化运 ...

  4. 基于MQTT协议实现微信小程序控制树莓派

    基于MQTT协议实现微信小程序控制树莓派 在我的github上有源码,大家可以直接下载来用 https://github.com/yjc-123/-MQTT- ,这里给大家说一下实现的过程. 小程序端 ...

  5. MQTT协议应用场景1: 外网手机客户端 与 内网树莓派3B 的通讯

    实验目的:将外网手机客户端发送的字符串 通过树莓派3B的串口输出 不了解MQTT协议的请参考:MQTT协议体验 Mosquitto安装和使用 不了解使用Python操作树莓派串口的请参考:Raspbe ...

  6. 树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践

    本博文介绍采用Thonny+MicroPython和umqtt.simple库MQTTClient类的对象方法编制树莓派Pico W无线开发板MQTT协议通信程序,将Pico W无线开发板.电脑或An ...

  7. http发送16进制报文_阿里云物联网平台使用心得(25)MQTT协议详解UNSUBSCRIBE报文...

    题目 大家好,超子又和大家见面了,超子我能力有限,水平不高,有什么错误的地方,欢迎板砖.超子今天给大家介绍一下UNSUBSCRIBE报文. UNSUBSCRIBE报文 从上图中可知,UNSUBSCRI ...

  8. 树莓派mqtt协议连接阿里云物联网平台,手机端获取数据并控制

    树莓派mqtt协议连接阿里云物联网平台(三) 前面树莓派的数据已经上传到云端,可是我的android手机该如何获取树莓派上传的这些数据呢,,困惑了我好几天的疑问,解开的那一刻,真的时拨开云雾见青天啊. ...

  9. 【微信小程序控制硬件⑦ 进阶篇】动起来做一个微信小程序Mqtt协议控制智能硬件的框架,为心里全栈工程师梦想浇水。

    文章目录 一.前言: 二.涉及的技术点: 三.框架的运行原理: 四.框架代码流程: 4.1 主线程: 4.2 获取设备列表显示设备,以及订阅在线的设备: 4.3 点击某设备如何实现携带此设备信息到控制 ...

最新文章

  1. jQuery 中 jQuery(function(){})与(function(){})(jQuery) 的区别
  2. php根据指定时间日历,php学习笔记(十三)时间处理与日历的实现
  3. DELPHI学习---结构类型
  4. java工作流 表设计_创建activiti工作流所需23张表
  5. Python基础(四)函数
  6. 可并堆试水--BZOJ1367: [Baltic2004]sequence
  7. kotlin中Gson解析Json时对于泛型的应用
  8. 电磁兼容入门篇之基础知识(二)
  9. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
  10. C语言期末复习不挂科(快速入门)(和bug郭一起学C系列1)
  11. HeadFirstC笔记_7 高级函数:发挥函数的极限
  12. EXCEL常用操作-----自动编号
  13. Sobel算子->方向滤波
  14. 计算机中二进制的加法
  15. 2021年中国网页游戏市场实际销售收入为60.30亿元,同比减少20.74%[图]
  16. 你知不知道,天空没有想象中蓝。
  17. 我的助理辞职了!——我想大家对这篇文章应该很有感触
  18. 你爱或者不爱,他都在那里 - 云/边/端三协同下的边缘计算
  19. xml 操作unity 的文档
  20. 2019必须了解的网络推广引流方式汇总

热门文章

  1. 用最基础的网络知识去蹭网
  2. Python小例子—— 52周存钱挑战
  3. 如何判断个股、板块、大盘走势的强弱?再谈相对力度指标
  4. java变长参数_Java可变长度参数
  5. linux内核函数kmalloc,LINUX内核内存管理kmalloc,vmalloc
  6. 如何使用渲云客户端进行渲染?
  7. Identity的知识
  8. Ubuntu 无法连接xshell的问题
  9. 弘辽科技:淘宝收藏加购数指的是什么?有什么用?
  10. java 只返回时分秒 HH:mm:ss