2016年11月29日 星期二

MIL鍵盤事件無法使用

MIL如果用displaySelectWindow將顯示放到panel中,內建的鍵盤事件就會無法使用
主要是因為鍵盤事件沒有被導向到Form中
解決的方法是將SelectWindow導向到Form中,再將Form嵌入Panel上,最後,把母Form中的鍵盤事件導向到DisplayForm中

[WinForm]取消focus狀態

這篇要做的事情跟前一篇的取消textbox輸入狀態不同
textbox只要將form的active control改成null或其他control就可以取消輸入狀態
但如果今天是想取消鍵盤事件對子Control的校果(例如只在特定狀態下讓快捷鍵能對子control作用)就沒這麼簡單
主要的問題是出在取消active control只是讓使用者不會繼續輸入,但是鍵盤事件一樣會被control接收到

2016年11月28日 星期一

鎖定combobox

combo box 如果不想讓使用者任意輸入值(其實一般狀況下combo box的操作方式都是這樣),可以把combobox的DropDownStyle改成DropDownList

clr20r3 錯誤

最近寫一隻avt vimba取像程式,在我自己電腦run沒問題,但在traget上一直出現clr20r3的錯誤訊息
但在有安裝VS的電腦上又沒事orz
google上大部分的人都說這是.net framework沒有安裝正確版本的問題,少部分有更奇門遁甲的招式。但其實,.net framewor的版本問題會有其他錯誤訊息產生。
後來經過一番奮戰發現,這就是在form load之前的error,一旦form建立了,error的形式就會改變。所以這個clr20r3就是一般的bug,只是在form尚未建立時發生,請遵循一般debug步驟排除之。

也就是說如果你下載了一個程式,他在妳電腦上出現這樣的error,這隻程式有問題,如果你沒有code不用想修復他。
如果你是coder,你的程式有問題,請想辦法Debug

2016年11月25日 星期五

[VS]取消textbox的輸入狀態

在form中加入了快捷鍵的功能後在textBox中輸入文字竟然也會觸發快鍵
難怪快捷鍵都設定成ctrl+blablabla
但是我就是為了方便程式運作不用用滑鼠按按鈕,所以快捷鍵只想按鍵盤上的一個鍵,因此在textbox輸入時要阻止form的快捷鍵運作。

[VS]設定透明Label

將Label背景設定為透明
label.Parent = pictureBox_lowerLayerObject;
label.BackColor = Color.Transparent;

2016年11月21日 星期一

openCv顯示影像

opencv 顯示影像可以用
cvShowImage(windowName, image);
但是在使用完這行之後一定要用
cvWaitKey(delay);
才會顯示
另外,這裡的delay應該是timeOut的意思
cvWaitKey會傳回使用者按下哪個鍵的char
可以用if(cvWaitKey(1) == 'q'){exit();}來退出
--

2016年11月13日 星期日

C++ c# raw string literal 原始字串

在C++字串中為了可以表示換行,tab等特殊操作,因此有跳脫字元\
好死不死資料夾路徑也用很多'\'
以前都會使用兩個("\\")表示\,但這樣的問題是在複製路徑後需要經過加工有點麻煩
ex: c:\testFile.txt 需要以 "c:\\testFile.txt"表示,麻煩
C++ 11裡面提供Raw String
表示
R"\a\b\c"
相當於
"\\a\\b\\c"
蠻方便的

在c#中則可以用 @"\a\b\c"
相當於"\\a\\b\\c"

MIL win7 touch縮放與滑鼠滾輪

mil的display在window中已經做好對滑鼠滾輪縮放的支援
但在win7中卻一直無法使用
昨天新同事mike發現在筆電上,win7是可以做縮放的,但需要用touch pad的zoom(兩隻手指往內或往外)
但在win10中卻又可以用滾輪跟touchpad

2016年11月4日 星期五

更換驅動程式 switch device driver

同時使用Vimba與Matrox,同一台相機在兩個狀況需要不同的驅動程式。
1. 打開Device Manager
2. 在目標裝置上(right click on target device)右鍵>Properties
3. 在Driver的tab中>Update Driver>Browse my computer for driver software
4. 選擇 Let me pick from a list on my computer 這裡就可以改變使用的driver

2016年11月2日 星期三

Interface, abstract class

今天試著寫grabber跟processor
本來是寫用Mil作grabber, vidi作processor
後來想想說把他抽象化,趁機研究了一下abstract, Interface跟呼叫base的contructor

2016年11月1日 星期二

Mil app 關閉錯誤

在free mil app的時候會出現mil app ID 錯誤的錯誤訊息
經過debug之後發現,原因出在inquire的時候餵入接收參數型態為ref int
將型態改為ref MIL_INT之後app就可以正常被釋放

奇怪的是,其他如buffer之類的暫存器釋放不完全會在free mil system時出現system內尚有buffer未釋放