有無圖像 沒圖像
是否黑屏 黑屏,白屏,花屏
是否亮燈 亮紅燈
是否開機 不開機
故障 設備找不到相機
商品介紹
可以看到相機編程需要做三方面工作:
1.初始化操作
首先初始化相機驅動Com環境,然后遍歷得到當前的相機列表,根據相機ID或List 編號選擇對應相機。
之后連接指定相機,首先設置本次采集的相機參數(幀速、圖像大小、縮放比等),然后是分配和注冊當前DMA隊列,這里有的是用戶完成,有的是SDK完成。
之后先開啟DMA邏輯等待相機采圖,然后使相機開始工作采圖,整個系統就按照之前工作流程運作起來了,許多SDK將“開啟DMA”和“相機開始工作”合并為“開始采集”。
2.結束操作
先停止相機工作再關閉DMA邏輯,許多SDK將“開啟DMA”和“相機開始工作”合并為“結束采集”。
然后清理DMA隊列,和分配時對應,這里有的是用戶完成,有的是SDK完成。
后斷開相機并清理工作環境。

三、 Basler Pylon工業相機SDK的使用
Pylon庫有C++ .Net等各種封裝版本,一般用C++版本,功能全面效率高,但對于不同接口(GigE USB3.0 CameraLink)的相機必須對應使用不同的類,之間不能通用。
基于GenAPI通用相機抽象接口使用的是Node結構,以字符串形式訪問相機參數,可以統一管理不同接口類型的相機。但效率低,使用不方便。
Pylon高層用C++封裝,形成本地相機對象
如何管理多個相機,靠譜的方法是按相機ID標定順序,需要讀一個配置文件,比如XML或JSON,然而一開始不知道ID,需要先列舉出來。

工作流程:
當相機工作時,就是連續的采集-處理-采集-處理...的過程,但是這就存在一個問題,如果采集的速度比處理速度快,處理不過來,怎么辦?在實際中,我們使用隊列來解決這個問題,當前幀沒有處理完,下一幀到來時直接放入隊列等待當前處理完成后再處理它。

這里使用三個隊列完成采集和處理同步。
DMA隊列:
當CMOS或CCD芯片曝光然后將數據轉到相機緩存后,這時候DMA會負責將緩存中數據寫入到“DMA隊列”頭Buffer中。
準備隊列:
一旦“DMA隊列”頭Buffer被填充完成,會被加到“準備隊列”尾后,這時候會發送中斷通知用戶程序:當前又有一幀數據采集完成,您看著處理吧。
處理隊列:
當用戶接收到中斷會自動跳轉到中斷函數中,使用GetFrame拿取“準備隊列”頭Buffer,然后加到當前用戶程序“處理隊列”尾,用戶程序從“處理隊列”頭拿取Buffer處理完成后使用PutFrame將Buffer再添加到原始的“DMA隊列”尾。
-/hbahbeb/-
聯系方式