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

# _*_ 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 }); }
}); }
});
}, })

微信小程序对接串口摄像头的更多相关文章

  1. 微信小程序对接显示阿里云数据库数据

    现实需求 在项目中需求,有时候现场设备发生故障,需要远程的人员知道.除了邮件方式,以微信小程序的方式也很好.今天进行尝试,并制作了一个demo版本. 1.微信小程序申请制作前端 1.1lists文件( ...

  2. 当微信小程序遇到AR(一)

    当微信小程序遇到AR,会擦出怎么样的火花?期待与激动...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习. 本课程需要一定的基础:微信开发者工具,JavaS ...

  3. 当微信小程序遇到AR(三)

    当微信小程序遇到AR,会擦出怎么样的火花?期待与激动...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习. 本课程需要一定的基础:微信开发者工具,JavaS ...

  4. 当微信小程序遇到AR(四)

    当微信小程序遇到AR,会擦出怎么样的火花?期待与激动...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习. 本课程需要一定的基础:微信开发者工具,JavaS ...

  5. 当微信小程序遇到AR(二)

    当微信小程序遇到AR,会擦出怎么样的火花?期待与激动...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习. 本课程需要一定的基础:微信开发者工具,JavaS ...

  6. php对接微信小程序支付

    前言:这里我就假装你已经注册了微信小程序,并且基本的配置都已经好了.注: 个人注册小程序不支持微信支付,所以我还是假装你是企业或者个体工商户的微信小程序,其他的商户号注册,二者绑定,授权,支付开通,就 ...

  7. 微信小程序登录对接Django后端实现JWT方式验证登录

    先上效果图 点击授权按钮后可以显示部分资料和头像,点击修改资料可以修改部分资料. 流程 1.使用微信小程序登录和获取用户信息Api接口 2.把Api获取的用户资料和code发送给django后端 3. ...

  8. 关于微信小程序在ios中无法调起摄像头问题

    这几天关于微信小程序开发关于wx.chooseVideo组件问题,因为自己一直是安卓手机上测试,可以调取摄像头,但是应用在ios上无法打开摄像头,困扰了好多天,经过反复查看官方文档,今天总算修复了这个 ...

  9. uni-app开发经验分享十九: uni-app对接微信小程序直播

    uni-app对接微信小程序直播 1.登录微信小程序后台-点击>设置->第三方设置->添加直播插件 2.添加直播组件后->点击<详情>      记录这两个参数直播 ...

随机推荐

  1. android studio 导入module作为lib使用

    1.将 android module导入 android project 中  2.在要作为lib导入的module 的build.gradle文件中添加一行 “apply plugin: ‘andr ...

  2. text/html & text/plain的区别

    需要了解的概念 Content-Type:用于定义用户的浏览器或相关设备如何显示将要加载的数据,或者如何处理将要加载的数据 MIME:MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型 ...

  3. python-json模块扩展

    sort_keys=True, indent=4, separators=(',', ': ') 格式 json.dumps(response,sort_keys=True, indent=4, se ...

  4. 用BCP从SQL Server 数据库中导出Excel文件

    BCP(Bulk Copy Program)是一种简单高效的数据传输方式在SQL Server中,其他数据传输方式还有SSIS和DTS. 这个程序的主要功能是从数据库中查询Job中指定step的执行信 ...

  5. Python2.7-robotparser

    robotparser 模块,用于解析网站的 robots.txt 文件,robots.txt 文件是用于指定搜索引擎爬虫的访问权限的,此模块在 python3 中重命名为 urllib.robotp ...

  6. Kafka设计解析(二十)Apache Flink Kafka consumer

    转载自 huxihx,原文链接 Apache Flink Kafka consumer Flink提供了Kafka connector用于消费/生产Apache Kafka topic的数据.Flin ...

  7. scrapy(一)scrapy 安装问题

    一.安装scrapy pip install scrapy 二.出现Microsoft Visual C++ 14.0相关问题 注:若出现以下安装错误 building 'twisted.test.r ...

  8. 使用Git进行协同开发

    用了一段时间github,一直想用时间来对git的使用来做一段笔记,前段时间比较忙,现在沉下心来学习也是极好的. 很多项目开发会采用git这一优秀的分布式版本管理工具来进行项目版本管理.因为git的使 ...

  9. HBase启动时报错:/bin/java: No such file or directory6/bin/../bin/hbase: line 412: /usr/local/jdk1.8.0_152/bin/java

    今天在启动HBase时发现如下错误:/bin/java: No such file or directory6/bin/../bin/hbase: line 412: /usr/local/jdk1. ...

  10. 通过定义过滤器filter解决跨域问题

            跨域是比较常见问题,比较简单的方式就是直接定义一个过滤器filter,然后在请求头里面加上一些参数.下面来看看具体的写法吧. 一.java代码 package com.hj.usera ...