小弟是剛進公司不滿一年的新人
公司用NI Vision這個軟體作瑕疵辨識
搭配許多牌子的工業相機
最近主管想要作一個類似的軟體來替代
所以希望我從相機連接開始實作(C#開發)
目標是可以同時抓取不同牌子的相機
作瑕疵辨識
但是目前遇到了困難
NI的軟體可以直接顯示出
目前電腦連接哪些牌子的相機及型號
但是我在實作上
則必須先選擇這個牌子的相機驅動
才會抓到目前有哪個牌子的相機有連接
我目前想到的方法是
引用要用到的相機牌子的library
但是我覺得這應該不是最好的辦法
如果有10種牌子要用 就要引用10種
程式一定會很肥
想請問各位版大
有沒有什麼辦法可以達到一樣的功能
不然你還有甚麼方法可以知道相機有沒有連結?通靈嗎VID PID 當USB有插拔事件的時候就去掃
作者: anumis (阿努米斯) 2017-12-03 21:59:00
用 MEF 技術+ interface 規劃,把不同相機的library 模組化。這是我現在遇到不同家運動控制+Dio 卡但要在同一個系統上運作的處理方式或是走 webcam的方式去抓
作者:
GoalBased (Artificail Intelligence)
2017-12-03 22:32:00什麼叫程式一定會很肥,為什麼不算一下
作者:
Hordor (Hordor)
2017-12-03 23:27:00請愛用 design pattern:Strategy Pattern
作者: anumis (阿努米斯) 2017-12-04 01:00:00
我的方法是每個模組有自己的硬體設定檔,模組載入時會去讀取並初始化;上層運用端只要處載入模組的程式碼,並依interface提供的內容去操作,硬體端就全黑箱讓模組自己去跑你現實應用上最多用到2種不同的相機,所以只依需要載入寫好的模組DLL檔就好,還可以訓練自已對系統模組化的能力簡單來說,就是"擴充元件"的概念
因為你沒有抽象層,沒有解耦掉相機的實作可以參考"我這樣解釋OOP對嗎"系列文章PolicyBased Design Pattern都是在講同一件事