在上一篇文章《經過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電源也能夠。spa
首先在代碼中要打開串口,設置必要的參數:.net
PCT01 pct01 = new PCT01("COM3", PCT01.Baudrate.Baudrate_38400); 調試
if (!pct01.Open()) blog
{接口
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