天天看點

【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");

            return;

        //設定壓縮率

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

            Debug.Print("SetCompressRatio failed");

        byte[] picData = null;

        while (true)

            picSize = pct01.GetPhoho(out picData);

            if (picSize > 0)

            {

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

                 bmp.Flush();                           

            }

  }

如果在模拟器上運作此段程式,需要把攝像頭連接配接到電腦的序列槽上,運作後的結果如下:

【STM32 .NET MF開發闆學習-29】攝像頭藍牙圖像遠端擷取

如果攝像頭連接配接到開發闆上,需要做一個連接配接頭,因為開發闆上的序列槽是母頭,而攝像頭的接口一般也是母頭,是以需要自行焊接兩個公頭序列槽,記住2、3要交叉相連,5直連。

相關裝置連接配接後的示意圖如下:

【STM32 .NET MF開發闆學習-29】攝像頭藍牙圖像遠端擷取
【STM32 .NET MF開發闆學習-29】攝像頭藍牙圖像遠端擷取

YFSoft.Hardwave.Camera.PTC01庫接口說明如下:

屬性:讀寫

說明:逾時時間,主要指發送攝像頭指令時,裝置的響應時間。該時間機關為毫秒,實際使用時逾時等待時間有可能會遠大于該值。

聲明:void SetDebugMode(bool on)

參數:on –  True 開啟Debug模式 False 關閉Debug模式

傳回:無

說明:設定Debug模式,開啟後,通信過程中的資訊通過Debug.Print函數輸出。

聲明:int Open()

參數:無

傳回:操作傳回值

True – 成功

False – 序列槽打開失敗

說明:打開序列槽。

聲明:void  Close()

說明:關閉序列槽。

聲明:bool Reset ()

False – 複位失敗

說明:攝像頭複位,複位後一半需要延時500ms,在本函數中已經添加了這個延時。

聲明:bool SetCompressRatio (byte value)

參數:value  – 壓縮率 00~0xFF,預設值ox36,

傳回:True 設定成功,False 設定失敗

說明: 設定jpg圖檔的壓縮率。

聲明:bool SetPhotoSize (PhotoSize size)

參數:size–圖檔尺寸

      Photo_320_240 – 320*240

      Photo_640_480  - 640*480

傳回:True 成功 false 失敗

說明:設定圖檔的畫幅尺寸。

聲明:bool SetBaudrate (Baudrate baudRate)

參數:baudRate 波特率,支援如下參數

        Baudrate_9600=0,

        Baudrate_19200,

        Baudrate_38400,(預設值)

        Baudrate_57600,

        Baudrate_115200,  

傳回:True 成功 False 失敗

說明:設定攝像頭通信波特率。

聲明:bool SetPowerMode ()

傳回:True 成功,False 失敗

說明:設定攝像頭進入省電模式。

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

參數:bytData – 圖檔資料

傳回: >0  圖檔資料長度

       -1  開始拍照指令執行失敗

       - 2 讀取圖檔資料失敗

       -3  讀取圖檔長度失敗

       -4  停止拍照指令執行失敗

說明:擷取攝像頭圖檔資料(jpg)。

YFSoft.Hardwave.Camera.PTC01庫:

<a href="http://www.sky-walker.com.cn/MFRelease/library/YFSoft.Hardware.Camera.PTC01.rar">http://www.sky-walker.com.cn/MFRelease/library/YFSoft.Hardware.Camera.PTC01.rar</a>

QQ群:127465602(将滿)  146524112

繼續閱讀