串口摄像头由树莓派控制,代码如下:

# _*_ coding:utf-8 import serial
import time
import traceback
import pycurl
import requests
import io
import json
import base64ser = serial.Serial("/dev/ttyAMA0",115200)
print(ser.name)
print(ser.port)f=Nonedef main():print("main:")res0 = setResolution()res0 = reset()print(res0)while True: try:res1=stopCurrent()print(res1)res2=getCurrentLength()print(res2)hBit = res2[7]<<8lBit = res2[8]imageSize = hBit+lBit;dataSize = imageSize+10print(imageSize)res3=getCurrentImage(res2[7],res2[8],dataSize)imageData = res3[5:(dataSize-5)]f = open('/home/pi/Camera/image.jpg','wb')for i in range(len(imageData)):f.write(chr(imageData[i]))f.closeresumCurrent()upload()except Exception:print(traceback.print_exc())def setResolution():bitarray = [0x56,0x00,0x31,0x05,0x04,0x01,0x00,0x19,0x11]ser.write(bitarray)time.sleep(0.1)index=0resp=[]while True:s = ser.read()if s!=None:index = index+1resp.append(ord(s))if index>=5:break;return resp
def setCompress():bitarray = [0x56,0x00,0x31,0x05,0x01,0x01,0x12,0x04,0x36]ser.write(bitarray)time.sleep(0.1)index=0resp=[]while True:s = ser.read()if s!=None:index = index+1resp.append(ord(s))if index>=5:break;return resp
def resumCurrent():bitarray = [0x56,0x00,0x36,0x01,0x03]ser.write(bitarray)time.sleep(0.1)index=0resp=[]while True:s = ser.read()if s!=None:index = index+1#print(s)             resp.append(ord(s))if index>=5:break;return resp
def stopCurrent():bitarray = [0x56,0x00,0x36,0x01,0x00]ser.write(bitarray)time.sleep(0.1)index=0resp=[]while True:s = ser.read()if s!=None:index = index+1#print(s)             resp.append(ord(s))if index>=5:break;return respdef getCurrentLength():bitarray = [0x56,0x00,0x34,0x01,0x00]ser.write(bitarray)time.sleep(0.1)index=0resp=[]while True:s = ser.read()if s!=None:index = index+1#print(s)             resp.append(ord(s))if index>=9:break;return resp
def getCurrentImage(hBit,lBit,dataSize):bitarray = [0x56,0x00,0x32,0x0C,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,chr(hBit),chr(lBit),0x10,0x00]ser.write(bitarray)time.sleep(0.1)index=0resp=[]f=io.BytesIO()while True:s = ser.read()if s!=None:index = index+1#print(s)             resp.append(ord(s))#f.write(s) if index>=dataSize:break;return resp
def reset():bitarray = [0x56,0x00,0x26,0x00]ser.write(bitarray)time.sleep(2)index=0resp=[]len = ser.inWaiting()s = ser.read(len)resp.append(s)return resp
def upload(device=27390392):url='http://api.heclouds.com/bindata'headers={"api-key":"*******","Content-Type":"image/jpg"}queryString = {"device_id":str(device),"datastream_id":"picture"}with open('/home/pi/Camera/image.jpg','rb') as f:base64_data = base64.b64encode(f.read())r = requests.post(url,params=queryString,headers=headers,data=base64_data)print(r.text)return fif __name__ == '__main__':try:main()except KeyboardInterrupt:if ser != None:ser.close()except Exception:print(traceback.print_exc())

微信小程序代码如下:

wxml

<view class="weui-flex justify"> <button bindtap="receivePic" class="weui_btn mini_btn" style="justify-content: center;" stype="plain-default" size="mini">刷图</button> </view> <view style="height:20px;" > </view> <view style="weui-flex justify;width:100%" > <image src='{{userImageBase64}}'  mode="widthFix" style="width:100%;background-color: #66ffff;"/> </view>

js

const util = require('../../utils/util.js')Page({data: {device: {},userImageBase64:{},},onLoad: function (options) {var _this = this;console.log(options.device_id);//查询该设备的详细信息     wx.request({url: 'https://api.heclouds.com/devices/' + options.device_id, //仅为示例,并非真实的接口地址       header: {'content-type': 'application/json', // 默认值'api-key': '**'},success: function (res) {console.log(res.data),//执行this.setData方法,就会渲染视图数据           _this.setData({device: res.data.data}),//修改标题栏           wx.setNavigationBarTitle({ title: _this.data.device.title })}});receivePic:function(){var _this = this;wx.request({url: 'https://api.heclouds.com/devices/' + this.data.device.id + '/datapoints',header: {'content-type': 'application/json', // 默认值'api-key': '**'},success: function (res) {var __this = _this;console.log("PIC")var index = res.data.data.datastreams[1].datapoints[0].value.index;console.log(res);console.log(index)wx.request({url: 'https://api.heclouds.com/bindata/'+index,header: {'content-type': 'image/jpg', // 默认值'api-key': '**'},success: function (res) {console.log("PIC")var image = res.data; //var a = image.split('');             console.log(image);__this.setData({ userImageBase64: "data:image/png;base64," + image });}});}});},})

作者:且听风吟-wuchao
链接:微信小程序对接串口摄像头 - 且听风吟-wuchao - 博客园
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

微信小程序对接串口摄像头相关推荐

  1. 微信小程序对接大华摄像头

    文章目录 微信小程序对接大华摄像头 1.在app.json中声明 2. 使用插件 3.使用自定义组件: 微信小程序对接大华摄像头 文档地址:https://open.imoulife.com/book ...

  2. Freeswitch和微信小程序对接

    由于微信小程序具备免安装和使用方便等特点,受到越来越多公司的青睐;    微信小程序是2017年腾讯视频云团队跟微信团队联合,将视频云 SDK 跟微信小程序整合在一起,并通过 <live-pus ...

  3. springboot 微信小程序 对接微信支付功能(完整版)

    微信小程序对接微信支付功能 业务流程时序图 JAVA版 1. 项目架构 2. pom.xml配置文件 3. 小程序账号参数配置类 4.JAVA 通用代码 4.1 工具类 4.1.1 IdGen (id ...

  4. 微信小程序对接国内物流快递查询的接口

    小程序对接物流快递信息接口其实不难,以下是快递100的小程序物流快递信息接口案例,步骤只有2步,比较简单,你可以参考下. 第一步:从微信公众平台关联小程序 登录微信公众号管理后台https://mp. ...

  5. 微信小程序对接顺丰(丰桥)物流查询接口

    如果看了上篇文章就知道.我先是用java去对接了丰桥物流接口.老本行对接还是快.毕竟java涉猎时间最长的.对接时间也是最短的.java对接成功以后.就开始转移到小程序.因为手里已经上线的是微信小程序 ...

  6. 微信小程序对接蓝牙设备连接全过程

    初始化蓝牙 initBlue(){var that = this;wx.openBluetoothAdapter({//调用微信小程序api 打开蓝牙适配器接口success: function (r ...

  7. 微信小程序对接快递鸟接口返回格式有误的解决

    小程序对接快递鸟接口也是先在快递鸟的官网下载一个 nodejs的示例代码.因为我是小程序新手.所以花的时候有点多了.小程序的加密和解密需要用到两个js类.我先传上来. md5.js function ...

  8. 微信小程序对接阿里云OSS

    开通oss服务和创建oss存储空间就不说了,下面直接进入主题 进入oss控制台,选择已经创建好的存储空间,选择基础设置里面的"跨域设置",之后点击创建规则, 按照图上面配置就行 去 ...

  9. 微信小程序对接蓝牙设备连接

    使用小程序的蓝牙功能与硬件设备进行连接相互传送数据指令,联调过程中发现一些问题,于是想着记录下来,方便以后查看! 一般使用蓝牙功能肯定是想连接某一个蓝牙设备,所以需要知道这个蓝牙设备的名称,一般来说都 ...

  10. 微信小程序使用前置摄像头拍照

    1.拍照页面: <template><view title="拍照"><camera v-if="openCamera" devi ...

最新文章

  1. springboot 访问httpclient接口
  2. Vivado使用误区与进阶——如何读懂用好 Timing Report
  3. 关于 JShell,开发人员需要知道的10件事情
  4. 某同学使用计算机求30,概率论与数理统计习题集及答案
  5. rust门卡有什么用_Rust能力养成之(10)用Cargo进行项目管理:扩展 调用与优化
  6. 图解 Java 线程的生命周期,看完再也不怕面试官问了
  7. 《复杂》读书笔记(part1)--一些思想是由简单的思想组合而成,我称此为复杂
  8. hosts 文件与 ipv6
  9. 查询没有走索引_关于MySQL种的in函数到底走不走索引、我和同事差点大打出手!...
  10. Maven构建springBoot Demo案例
  11. MAC环境配置SDK
  12. linux ssh密钥验证失败,连接Linux的服务器时使用SSH密钥认证及解决自动断连问题...
  13. 会计未来十年发展趋势_谈未来十年会计行业的发展趋势
  14. STM32F103_study50_The punctual atoms(STM32 General timer basic principle )
  15. SQL语言-更新操作命令
  16. HTML网页设计制作大作业(div+css)--(四大名著 5页 )
  17. python编译器包括的简单过程_python基础第二课
  18. (附源码)ssm学生考勤管理系统 毕业设计 260952
  19. python爬虫豆瓣读书top250+数据清洗+数据库+Java后端开发+Echarts数据可视化(一)
  20. 计算机怎么c盘一键还原,电脑怎么一键还原的操作方法详解

热门文章

  1. 三国鼎立企查查、天眼查、微猫的三国大战
  2. Spring中AOP的Introductions使用介绍(五)
  3. python -m spacy dowmload en失败
  4. 昆仑通态触摸屏保存历史曲线_mcgs历史数据保存到U盘
  5. 为什么买入不了创业版_为什么说不能买创业板?
  6. 【自然语言处理】【对比学习】搞nlp还不懂对比学习,不会吧?快来了解下SimCLR
  7. 2021半年度博客总结
  8. PIE-Engine 教程:水稻面积提取1(宿迁市)
  9. SSH localhost 报错解决方案
  10. js字符串时间格式与中国标准时间格式相互转换