微信小程序对接串口摄像头
串口摄像头由树莓派控制,代码如下:
# _*_ coding:utf-8
import serial
import time
import traceback
import pycurl
import requests
import io
import json
import base64 ser = serial.Serial("/dev/ttyAMA0",115200)
print(ser.name)
print(ser.port) f=None def main():
print("main:")
res0 = setResolution()
res0 = reset()
print(res0)
while True:
try:
res1=stopCurrent()
print(res1) res2=getCurrentLength()
print(res2) hBit = res2[7]<<8
lBit = res2[8]
imageSize = hBit+lBit;
dataSize = imageSize+10
print(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.close resumCurrent()
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=0
resp=[]
while True:
s = ser.read()
if s!=None:
index = index+1
resp.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=0
resp=[]
while True:
s = ser.read()
if s!=None:
index = index+1
resp.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=0
resp=[]
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=0
resp=[]
while True:
s = ser.read()
if s!=None:
index = index+1
#print(s)
resp.append(ord(s))
if index>=5:
break;
return resp def getCurrentLength():
bitarray = [0x56,0x00,0x34,0x01,0x00]
ser.write(bitarray)
time.sleep(0.1)
index=0
resp=[]
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=0
resp=[]
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=0
resp=[] 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 f if __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 });
}
});
}
});
},
})
微信小程序对接串口摄像头的更多相关文章
- 微信小程序对接显示阿里云数据库数据
现实需求 在项目中需求,有时候现场设备发生故障,需要远程的人员知道.除了邮件方式,以微信小程序的方式也很好.今天进行尝试,并制作了一个demo版本. 1.微信小程序申请制作前端 1.1lists文件( ...
- 当微信小程序遇到AR(一)
当微信小程序遇到AR,会擦出怎么样的火花?期待与激动...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习. 本课程需要一定的基础:微信开发者工具,JavaS ...
- 当微信小程序遇到AR(三)
当微信小程序遇到AR,会擦出怎么样的火花?期待与激动...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习. 本课程需要一定的基础:微信开发者工具,JavaS ...
- 当微信小程序遇到AR(四)
当微信小程序遇到AR,会擦出怎么样的火花?期待与激动...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习. 本课程需要一定的基础:微信开发者工具,JavaS ...
- 当微信小程序遇到AR(二)
当微信小程序遇到AR,会擦出怎么样的火花?期待与激动...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习. 本课程需要一定的基础:微信开发者工具,JavaS ...
- php对接微信小程序支付
前言:这里我就假装你已经注册了微信小程序,并且基本的配置都已经好了.注: 个人注册小程序不支持微信支付,所以我还是假装你是企业或者个体工商户的微信小程序,其他的商户号注册,二者绑定,授权,支付开通,就 ...
- 微信小程序登录对接Django后端实现JWT方式验证登录
先上效果图 点击授权按钮后可以显示部分资料和头像,点击修改资料可以修改部分资料. 流程 1.使用微信小程序登录和获取用户信息Api接口 2.把Api获取的用户资料和code发送给django后端 3. ...
- 关于微信小程序在ios中无法调起摄像头问题
这几天关于微信小程序开发关于wx.chooseVideo组件问题,因为自己一直是安卓手机上测试,可以调取摄像头,但是应用在ios上无法打开摄像头,困扰了好多天,经过反复查看官方文档,今天总算修复了这个 ...
- uni-app开发经验分享十九: uni-app对接微信小程序直播
uni-app对接微信小程序直播 1.登录微信小程序后台-点击>设置->第三方设置->添加直播插件 2.添加直播组件后->点击<详情> 记录这两个参数直播 ...
随机推荐
- HBase概念学习(九)HTablePool为何弃用?
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jiq408694711/article/details/36526433 转载请注明出处:jiq•钦 ...
- [USACO2004OPEN]Cave Cows 3
嘟嘟嘟 看完题后突然想起jf巨佬的话:"看到曼哈顿距离就想转切比雪夫距离." 于是我就转换了一下. 然后问题变成了求 \[max_{i, j \in n} \{ max \{ |x ...
- linux IP 命令使用举例(转)
ip 1.作用ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig.route等,使用权限为超级用户.几乎所有的Linux发行版本都支持该命 ...
- JAVA框架 Mybaits 一对一、一对多
一:阐述 我们在日常操作的时候,很多时候会遇到多表联合查询,由于参照物的不通 ,会出现一对一.一对多的情况.比如说:账号信息和订单表,从订单表角度和账号信息是一对一的情况(一个订单只能是一个用户的情况 ...
- ubuntu系统中Qt creator 编辑和应用使用中文输入法
在ubuntu系统的GUI开发过程中遇到在编辑器里面不能使用中文输入法,前提我已经安装了搜狗输入法,但是还是不能使用,原因是QT的库里没有最新fcix的库,. 没有安装搜狗的输入法的 https:// ...
- EF Core中如何取消跟踪DbContext中所有被跟踪的实体
首先定义一个DbContext的扩展类DbContextDetachAllExtension,其中包含一个DbContext的扩展方法DetachAll,用来取消跟踪DbContext中所有被跟踪的实 ...
- 2PC AND 3PC
一.分布式数据一致性 在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上. (1)什么是数据一致性 在数据有多份副本的情况下,如果网络 ...
- 20155216 Exp5 MSF基础应用
Exp5 MSF基础应用 基础问题回答 1.用自己的话解释什么是exploit,payload,encode? exploit : Exploit的英文意思就是利用,在做攻击时,通常称为漏洞利用. 一 ...
- EZ 2018 05 06 NOIP2018 慈溪中学集训队互测(五)
享受爆零的快感 老叶本来是让初三的打的,然后我SB的去凑热闹了 TM的T2写炸了(去你妹的优化),T1连-1的分都忘记判了,T3理所当然的不会 光荣革命啊! T1 思维图论题,CHJ dalao给出了 ...
- Caffe上手教程
Caffe上手教程 入门系列FAQ72 在Unbuntu上安装Caffe828 Windows下安装Caffe1.4K Caffe框架上手教程1.2K Caffe编译运行调试462 Caffe 电脑配 ...