【STM32 .NET MF开发板学习-29】摄像头蓝牙图像远程获取

简介:

目前生产串口摄像头的厂家有很多,每家的通信协议也不同,所以针对不同的摄像头都必须编写相对应的摄像头驱动程序。

最早做医疗项目的时候,开发过一款串口摄像头的驱动,不过是配合TinyIOs而使用,并没有把其作为一个独立的库封装起来。最近手头上又有一款摄像头,拍摄质量还不错,所以封装成一个标准.NET Micro Framework库,供应用开发的用户直接调用。

目前M3的开发板,虽然前段时间可以支持WPF了,但是SRAM毕竟还是有限,所以从串口摄像头直接获取的jpg图像,并不能在LCD屏上显示出来(在模拟器上没有这个问题,可以直接呈现),所以我借助蓝牙接口,把另一个串口获取的图像数据发送到一台带蓝牙的PC上,PC上的程序否则实现数据接收,并把图像呈现出来。

其核心代码如下(部分代码被删减):

 public static void Main()

 {                       

        Debug.Print("Camera Test ...");

        PCT01 pct01 = new PCT01("COM1", PCT01.Baudrate.Baudrate_38400);          

        if (!pct01.Open()) 

        {

             Debug.Print("Open failed");

             pct01.Close();

             return;

        }

        //复位

        if (!pct01.Reset())

        {

            Debug.Print("Reset failed");

            pct01.Close();

            return;

        }

        //设置图片大小

        if (!pct01.SetPhotoSize(PCT01.PhotoSize.Photo_320_240))

        {

            Debug.Print("SetPhotoSize failed");

            pct01.Close();

            return;

        }

        //设置压缩率

        if (!pct01.SetCompressRatio(0x50))  //0x36

        {

            Debug.Print("SetCompressRatio failed");

            pct01.Close();

            return;

        }

        byte[] picData = null;

        while (true)

        {

            picSize = pct01.GetPhoho(out picData);

            if (picSize > 0)

            {

                 Bitmap bmp = new Bitmap(picData, Bitmap.BitmapImageType.Jpeg);

                 bmp.Flush();                           

            }

        }

  }

如果在模拟器上运行此段程序,需要把摄像头连接到电脑的串口上,运行后的结果如下:

 

如果摄像头连接到开发板上,需要做一个连接头,因为开发板上的串口是母头,而摄像头的接口一般也是母头,所以需要自行焊接两个公头串口,记住2、3要交叉相连,5直连。

至于蓝牙相关内容,请查看我以前写的博客文章《蓝牙遥控智能小车(PC模式)》。

相关设备连接后的示意图如下:

 

我们打开PC的应用数据读取程序(源码下载地址:http://www.sky-walker.com.cn/MFRelease/Sample/YFPCCameraTest.rar),示例界面如下:

 

YFSoft.Hardwave.Camera.PTC01库接口说明如下:

1【属性】

1.1   Overtime

属性:读写

说明:超时时间,主要指发送摄像头指令时,设备的响应时间。该时间单位为毫秒,实际使用时超时等待时间有可能会远大于该值。

2【方法】

2.1 SetDebugMode

声明:void SetDebugMode(bool on)

参数:on –  True 开启Debug模式 False 关闭Debug模式

返回:

说明:设置Debug模式,开启后,通信过程中的信息通过Debug.Print函数输出。

2.2 Open

声明:int Open()

参数:

返回:操作返回值

True – 成功

False – 串口打开失败

说明:打开串口。

2.3 Close

声明:void  Close()

参数:

返回:

说明:关闭串口。

2.4 Reset

声明:bool Reset ()

参数:

返回:操作返回值

True – 成功

False – 复位失败

说明:摄像头复位,复位后一半需要延时500ms,在本函数中已经添加了这个延时。

2.5 SetCompressRatio

声明:bool SetCompressRatio (byte value)

参数:value  – 压缩率 00~0xFF,默认值ox36,

返回:True 设置成功,False 设置失败

说明: 设置jpg图片的压缩率。

2.6 SetPhotoSize

声明:bool SetPhotoSize (PhotoSize size)

参数:size–图片尺寸

      Photo_320_240 – 320*240

      Photo_640_480  - 640*480

返回:True 成功 false 失败

说明:设置图片的画幅尺寸。

2.7 SetBaudrate

声明:bool SetBaudrate (Baudrate baudRate)

参数:baudRate 波特率,支持如下参数

        Baudrate_9600=0,

        Baudrate_19200,

        Baudrate_38400,(默认值)

        Baudrate_57600,

        Baudrate_115200,  

返回:True 成功 False 失败

说明:设置摄像头通信波特率。

2.8 SetPowerMode

声明:bool SetPowerMode ()

参数:

返回:True 成功,False 失败

说明:设置摄像头进入省电模式。

2.9 GetPhoho

声明:int GetPhoho(out byte[] bytData)

参数:bytData – 图片数据

返回: >0  图片数据长度

       -1  开始拍照命令执行失败

       - 2 读取图片数据失败

       -3  读取图片长度失败

       -4  停止拍照命令执行失败

说明:获取摄像头图片数据(jpg)。

 

YFSoft.Hardwave.Camera.PTC01库:

http://www.sky-walker.com.cn/MFRelease/library/YFSoft.Hardware.Camera.PTC01.rar

MF论坛:http://space.cnblogs.com/group/MFSoft/

MF开发板:http://item.taobao.com/item.htm?id=7117999726

QQ群:127465602(将满)  146524112








本文转自yefanqiu51CTO博客,原文链接:http://blog.51cto.com/yfsoft/528261,如需转载请自行联系原作者


相关文章
|
Windows
在Corex-M3开发板上移植.Net Micro Framework系列文章
.NET Micro Framework 将 .NET 的可靠性和效率与 Visual Studio® 的高生产率结合起来,以针对价格较低、资源受限的小型设备开发应用程序,可帮助人们使用熟悉的 Visual Studio 工具来构建托管的嵌入式应用程序。
619 0
|
芯片
免费发放firmwave,打造史上最低价.Net MF开发板
很久以前就曾多方位思考限制.Net Micro Framework发展的原因是什么?在物联网和Cortex-M3大行其道的今天,应该有更大的发展空间才对,为什么现在还是关注者甚少?我想主要原因有三,一、源码代码是否开源;二、是否有低价开发板;三、TinyCLR是否够小。
737 0
【STM32 .Net MF开发板学习-03】TinyGUI绘图示例
.Net Micro Framework官方图形库是WPF,由于目前ST Cortex-M3开发板RAM太小,最大才512K(常见是128K或256k),并且Cortex-M3的CPU主频也不太高,运行WPF图形框架显得过于重了,所以我这边推出了轻量级图形库TinyGUI
575 0
|
内存技术
【STM32 .Net MF开发板学习-07】全屏位图无闪烁显示
16位320*240的位图大小为150K字节,而对于EM-STM3210E开发板来说,RAM仅有128K,远不够显示一幅完整位图,红牛的开发板即使有256K的RAM,但是刨去堆、栈及TinyCLR本身所用,剩下的也不多了,所以要显示全屏位图,必须分块显示。
509 0
|
芯片 内存技术
【STM32 .Net MF开发板学习-10】SPI测试之触摸屏坐标获取
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)
675 0
|
芯片
【STM32 .Net MF开发板学习-11】步进电机控制(非PWM模式)
选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板
887 0
【STM32 .Net MF开发板学习-20】蓝牙遥控智能小车(手机模式)
目前大部分手机也都支持蓝牙接口,所以基于此,我们借用iRobot的蓝牙模块,就可以用手机直接遥控智能小车了。
571 0
【STM32 .Net MF开发板学习-22】超声波测距模块研究
智能小车目前已经可以通过各种方式进行遥控了,不过做到这一步还远远不够,我们需要智能小车有自己的“思维”,根据需要进行进退、转向或停止。要做到这一步,必须让智能小车有自己的感知“器官”,第一步我们先添加测距传感器,以后我们会陆续研究寻际、摄像头等传感器,让所谓的智能小车,更加“智能”。
558 0
【STM32 .Net MF开发板学习-24】激光防盗模型
在各种以高科技偷盗为主题的电影中,我们常可以看到激光防盗系统,一根根红色的激光线构成了三维立体防盗体系。今天我们就借助红外激光头和光敏电阻做一个这样的防盗模型,当红外线被阻断后,开发板板上的蜂鸣器就会报警。
405 0
【.Net MF网络开发板研究-01】IP地址设定及简单web演示
在物联网时代,具备网络功能才是王道。新开发板除了具备以太网模块以外,还增加了USB Host模块,当然还增加了其它相关接口
755 0