在上一篇文章《通過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