微信小程序对接串口摄像头
串口摄像头由树莓派控制,代码如下:
# _*_ 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.在app.json中声明 2. 使用插件 3.使用自定义组件: 微信小程序对接大华摄像头 文档地址:https://open.imoulife.com/book ...
- Freeswitch和微信小程序对接
由于微信小程序具备免安装和使用方便等特点,受到越来越多公司的青睐; 微信小程序是2017年腾讯视频云团队跟微信团队联合,将视频云 SDK 跟微信小程序整合在一起,并通过 <live-pus ...
- springboot 微信小程序 对接微信支付功能(完整版)
微信小程序对接微信支付功能 业务流程时序图 JAVA版 1. 项目架构 2. pom.xml配置文件 3. 小程序账号参数配置类 4.JAVA 通用代码 4.1 工具类 4.1.1 IdGen (id ...
- 微信小程序对接国内物流快递查询的接口
小程序对接物流快递信息接口其实不难,以下是快递100的小程序物流快递信息接口案例,步骤只有2步,比较简单,你可以参考下. 第一步:从微信公众平台关联小程序 登录微信公众号管理后台https://mp. ...
- 微信小程序对接顺丰(丰桥)物流查询接口
如果看了上篇文章就知道.我先是用java去对接了丰桥物流接口.老本行对接还是快.毕竟java涉猎时间最长的.对接时间也是最短的.java对接成功以后.就开始转移到小程序.因为手里已经上线的是微信小程序 ...
- 微信小程序对接蓝牙设备连接全过程
初始化蓝牙 initBlue(){var that = this;wx.openBluetoothAdapter({//调用微信小程序api 打开蓝牙适配器接口success: function (r ...
- 微信小程序对接快递鸟接口返回格式有误的解决
小程序对接快递鸟接口也是先在快递鸟的官网下载一个 nodejs的示例代码.因为我是小程序新手.所以花的时候有点多了.小程序的加密和解密需要用到两个js类.我先传上来. md5.js function ...
- 微信小程序对接阿里云OSS
开通oss服务和创建oss存储空间就不说了,下面直接进入主题 进入oss控制台,选择已经创建好的存储空间,选择基础设置里面的"跨域设置",之后点击创建规则, 按照图上面配置就行 去 ...
- 微信小程序对接蓝牙设备连接
使用小程序的蓝牙功能与硬件设备进行连接相互传送数据指令,联调过程中发现一些问题,于是想着记录下来,方便以后查看! 一般使用蓝牙功能肯定是想连接某一个蓝牙设备,所以需要知道这个蓝牙设备的名称,一般来说都 ...
- 微信小程序使用前置摄像头拍照
1.拍照页面: <template><view title="拍照"><camera v-if="openCamera" devi ...
最新文章
- springboot 访问httpclient接口
- Vivado使用误区与进阶——如何读懂用好 Timing Report
- 关于 JShell,开发人员需要知道的10件事情
- 某同学使用计算机求30,概率论与数理统计习题集及答案
- rust门卡有什么用_Rust能力养成之(10)用Cargo进行项目管理:扩展 调用与优化
- 图解 Java 线程的生命周期,看完再也不怕面试官问了
- 《复杂》读书笔记(part1)--一些思想是由简单的思想组合而成,我称此为复杂
- hosts 文件与 ipv6
- 查询没有走索引_关于MySQL种的in函数到底走不走索引、我和同事差点大打出手!...
- Maven构建springBoot Demo案例
- MAC环境配置SDK
- linux ssh密钥验证失败,连接Linux的服务器时使用SSH密钥认证及解决自动断连问题...
- 会计未来十年发展趋势_谈未来十年会计行业的发展趋势
- STM32F103_study50_The punctual atoms(STM32 General timer basic principle )
- SQL语言-更新操作命令
- HTML网页设计制作大作业(div+css)--(四大名著 5页 )
- python编译器包括的简单过程_python基础第二课
- (附源码)ssm学生考勤管理系统 毕业设计 260952
- python爬虫豆瓣读书top250+数据清洗+数据库+Java后端开发+Echarts数据可视化(一)
- 计算机怎么c盘一键还原,电脑怎么一键还原的操作方法详解