最近開發一類別包裝光學探頭模組,
將同仁的使用需求直接整理成完整的API,
同仁就可以省去摸索光學探頭的操作細節。
程式完成之後開始進行測試,
發現透過探頭去蒐集data都會有data延遲的情形,
情境如下:
光學探頭控制器接收一次trigger便會開始蒐集3點data,
並等待下一次trigger,
這次預計收3次trigger。
預期結果如下:
[ a b c d ] 第一次triggerg收進來的data
[ e f g h ] 第二次triggerg收進來的data
[ i j k l ] 第三次triggerg收進來的data
實際結果如下:
[ a b c d ] 第一次triggerg收進來的data
[ a b c d ] 第二次triggerg收進來的data
[ e f g h ] 第三次triggerg收進來的data
[ i j k l ] 第四次triggerg收進來的data(預期之外的Trigger)
可以發現第一筆資料重複出現了一次,
導致需要多一次Trigger訊號才能夠得到所有的資料,
檢查了很多次程式碼流程,找不出問題,
後來想詢問原廠是否遇到相同情況,
但後來發現原來他們的dll已經更新版本,
由於我們使用的控制器是不同時間點購買進來的,
因此配合的dll版本也不同,
改成相同的dll版本便會出現預期結果了,
廠商提供的軟體版本很容易會因為相信廠商而沒檢查到版本不同,
這是一次印象深刻的經驗。
[小地方也要注意]
剛開始找到上面的問題時,
是直接將最新版本的dll檔案覆蓋到新檔案上(資料夾內直接把檔案覆蓋),
但問題還是重複出現,
原來是我沒有在專案中透過加入的動作把新的dll檔案給匯入到專案中,
這是容易疏忽的地方,要特別小心。
所以流程上 匯入新的dll 下一步還要加入進去 才是完整的被更新囉?
回覆刪除嘿阿,除了DLL檔案要更新,儘管檔名和路徑都相同,也不要忘記透過IDE重新匯入這個DLL檔案。
刪除