打印

摄像头蓝牙图像远程获取(转)

[复制链接]
1801|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
益友电子|  楼主 | 2012-5-5 15:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前生产串口摄像头的厂家有很多,每家的通信协议也不同,所以针对不同的摄像头都必须编写相对应的摄像头驱动程序。最早做医疗项目的时候,开发过一款串口摄像头的驱动,不过是配合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)。
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

445

帖子

0

粉丝