目前生産序列槽攝像頭的廠家有很多,每家的通信協定也不同,是以針對不同的攝像頭都必須編寫相對應的攝像頭驅動程式。
最早做醫療項目的時候,開發過一款序列槽攝像頭的驅動,不過是配合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();
}
}
如果在模拟器上運作此段程式,需要把攝像頭連接配接到電腦的序列槽上,運作後的結果如下:

如果攝像頭連接配接到開發闆上,需要做一個連接配接頭,因為開發闆上的序列槽是母頭,而攝像頭的接口一般也是母頭,是以需要自行焊接兩個公頭序列槽,記住2、3要交叉相連,5直連。
相關裝置連接配接後的示意圖如下:
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