【物聯網智能網關-02】獲取攝像頭數據+顯示


在上一篇文章《通過AD采集獲取溫濕度》我們介紹了物聯網智能網關的AD端口的使用情況,AD接口是.NET Micro Framework標准庫函數之一,只要底層BSP支持就可以直接使用。但是對一些比較復雜的傳感器,比如串口攝像頭就沒有什么庫可以直接使用了,需要用戶根據攝像頭的通信協議,進行串口編程,由於相對復雜,對一些初入門用戶是有一些開發難度的。鑒於此,故開發了一套擴展庫,用戶只要幾行代碼,就可以完成和傳感器的通信,從而獲取數據。YFSoft.Hardware.Camera.PTC01.dll就是一種這樣的庫。

在我以前寫過的一篇文章《攝像頭藍牙圖像遠程獲取》中曾介紹過YFSoft.Hardware.Camera.PTC01.dll庫的使用,不過當時由於.NET Micro Framework開發板並不支持WPF,所以沒有在LCD上顯示。今天的程序示例和以前的有所不同,是通過用戶按按鈕進行拍照的,並且把照片顯示在LCD上。

物聯網智能網關共引出5個串口,其中串口1為調試口,串口5為485口,其他三個串口都可以使用(注意:紫藤207系統的COM2其實是COM6),我們使用COM3。

攝像頭除了一個串口外,還引出兩根線,白線或紅線接5V電源正,黑線或灰線接電源負。開發板本身有5V接口,串口地和電源地是互通的,所以我們只需要把白線或紅線接入5V端子即可,黑線或灰線就不用管了。當然你也可以不用開發板上輸出的電源(輸出功率相對較小),直接外接5V電源也可以。

首先在代碼中要打開串口,設置必要的參數:

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

    if (!pct01.Open()) 

    {

        Debug.Print("Open failed");

        pct01.Close();

        return;

}

攝像頭有兩種圖像大小可以獲取,一個是320*240,一個是640*480,由於我們的LCD的分辨率是320*240,所以我們設置獲取的圖片的大小就為320*240。

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

    {

        Debug.Print("SetPhotoSize failed");

        pct01.Close();

        return;

    }

另外攝像頭還可以設置jpg的壓縮率,壓縮率越高,jpg的圖片越小,但是越不清晰。

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

    {

        Debug.Print("SetCompressRatio failed");

        pct01.Close();

        return;

    }

按鍵相關的代碼,由於比較簡單,這里就略去不說了,有興趣的朋友,可以參見我以前寫的文章《GPIO測試》。

按鈕按下后,發出圖像獲取指令,圖像獲取后,就在LCD上顯示:

byte[] picData = null;

pct01.GetPhoho(out picData);

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

bmp.Flush();

非常簡潔的幾句代碼,就完成了圖像獲取和圖像顯示。實際的拍攝效果圖如下: 

本文源碼:http://www.sky-walker.com.cn/MFRelease/Sample/YFCamera_Test.rar

MF簡介:http://blog.csdn.net/yefanqiu/article/details/5711770

MF資料:http://www.sky-walker.com.cn/News.asp?Id=25

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM