使用lua使應用更加靈活
項目背景
我們部門做的是機器視覺應用軟件的開發。現在都是在用c++編寫應用邏輯。我們雖然有一套自己的應用框架,可以通過配置文件配置算法流程,以應對變化的應用需求。但這套老舊的框架只能一定程度上能做些調整,面對全新的需求很難適應到
嘗試
我們使用過一些visualprogramming工具,但那些都是用一些非常基本的模塊拼裝出一個流程圖。跟我們的需求有差距。我門已經有了很多高層次的模塊,他們有自己的算法流程甚至gui,不是很容易直接使用現成的vvp軟件
現在有個思路就是打算用lua等高級語言來可以用配置文件配置我們的軟件流程。lua可以方便的實現動態反射功能,這樣我們在配置文件裡可以直接配置好相關算法,或者gui,用lua就可以方便的調用他們
我們的系統結構。用device file描述檢查的物料。用戶設置好device和燈光之後就可以learn,由於有了device信息,可以方便的實現auto learn。learn之後生成record,用戶拿著record就可以做跑机做檢查,我們叫inspection
系統設計。基礎模塊包含device,learn module,inspection module。每個基礎模塊必須是可重用的。模塊可以用戶自定義,通過plugin的方式註冊到系統。基礎模塊使用lua來暴露其接口。接口包括如何創建模塊的實例,如何設置模塊的輸入輸出鏈接,如何調度模塊
速度要求。除了inspection對速度要求很高,其他無特別速度要求