PySide2 / PyQt5,  日常隨筆

幫碩班同學進行程式整合的小小心得

之前在研究所的工作有做過軟硬體整合相關的工作,但其實大多都是軟體整合,硬體的程式廠商其實有提供API讓人呼叫,再加上現在AI的發展,許多廠商也有提供Python API,那這樣只需要有一個GUI畫面讓人操作就好,而我的工作其實就是將這些API整合到GUI中。

這次我同學需要的功能主要是將Arduino、影像感測器以及電控平台進行整合,剛好他所使用的設備都有Python程式可以呼叫或是相關範例參考,其實剛好這些設備都是我之前有用過的,再加上之前寫的並沒有很好,所以這次就想說找時間來幫忙他,順便把以前的程式優化看看。

一開始先將Arduino的功能在Python中控制,這塊其實還蠻簡單的,只要透過Serial Port來進行程式溝通就可以完成功能,再來就是弄一個介面來控制,由於他需要將這些感測器的值記錄下來,所以又在加上記錄功能。紀錄功能我是靠redirect_stdout這個模組來完成,作用就是將print()的內容直接存到檔案中,不過也可以用f.write()去完成,當下其實沒多想反正可以記錄就好了。

弄完之後就開始整合平移台跟影像感測器。這兩個東西我是拿以前程式去改,但我手邊沒東西可以測,所以很多東西都沒刪到,導致程式一直出現一些無腦Bug,而且弄這兩個東西的時候剛好疫情,我同學也不能測,所以才會拖到現在才弄。總之弄出一個可以開的程式之後,才發現寫出來的東西都不能用,說實話超不爽的= =。

後來整合就先擱著,因為程式實在太多問題,就將平移台和影像感測器都獨立成一個程式,好死不死影像感測器這塊一直有奇怪Error,完全無法解決。(這個錯誤以前就看過了,而且也沒解決= =)

可以看下面的圖跟錯誤訊息,每次執行後過沒多久就會跳出下面這段訊息,然後就閃退了,但這問題完全不知道怎麼來的,一直解決不了就改用平移台了。

Traceback (most recent call last):
  File "winCam.py", line 174, in run
  File "api_ueye.py", line 79, in __init__
  File "api_ueye.py", line 66, in __init__
  File "pyueye\ueye.py", line 7882, in is_AOI
  File "pyueye\ueye.py", line 102, in _pointer_cast
  File "ctypes\__init__.py", line 498, in cast
OSError: exception: access violation reading 0x0000001200000019

平移台也有一些以前程式沒刪乾淨而導致的錯誤,但是基本上這些錯誤都比剛剛影像感測器要來的好解決,事實上也是一下子就完成平移台的功能,畢竟之前就弄好的功能,沒理由平移台跑不起來。

原本想說我同學只能靠他寫的LABVIEW程式去控制影像感測器這塊,結果我把以前的載的範例程式給他執行,神奇的事情發生了,不會出現錯誤了,這也代表我以前程式沒寫好。既然可以執行,就開始幫他把影像感測器的功能加進去,包括顯示目前畫面還有存圖等功能,目前看起來執行的挺正常的。

最後這些功能確認都正常之後,又回到一開始的目標,整合功能,主要要實現的功能是讓平移台自動移動特定的幾個點並進行影像拍攝,同時要記錄感測器的數值。剛剛那些東西都能正常執行,所以很快就完成整合了。

現在東西都做得差不多,就趁有印象來紀錄一下在這Side Project做了什麼XD。

由於他的東西需要長時間運行,這部分還在測試,但基本上功能都完成了,雖然現在只能遠端幫忙,但可以幫到他感覺心裡挺踏實的。希望接下來不要出啥大問題就好。

由於這程式沒啥機密,就放在GITHUB上了,也有轉成執行檔,以後如果有人需要也可以從這邊直接抓或是修改功能之類的。這次做這小工具的參考資料都在GITHUB上,有興趣可以去看看。

jacky10001/Micro-Incubator-GUI: Make a Micro Incubator by Arduino. And using Python to create GUI (github.com)

留下一個回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *