老中文培訓(xùn)手冊(cè)vp1buildingapp使用創(chuàng)建一個(gè)應(yīng)用程序_第1頁(yè)
老中文培訓(xùn)手冊(cè)vp1buildingapp使用創(chuàng)建一個(gè)應(yīng)用程序_第2頁(yè)
老中文培訓(xùn)手冊(cè)vp1buildingapp使用創(chuàng)建一個(gè)應(yīng)用程序_第3頁(yè)
老中文培訓(xùn)手冊(cè)vp1buildingapp使用創(chuàng)建一個(gè)應(yīng)用程序_第4頁(yè)
老中文培訓(xùn)手冊(cè)vp1buildingapp使用創(chuàng)建一個(gè)應(yīng)用程序_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

概每個(gè)步驟將教您VisionPro編程的一個(gè)方面的步驟1:創(chuàng)建并且運(yùn)行最簡(jiǎn)單的應(yīng)用程步驟2:處理CJM“停止 步驟3:正確地處理 步驟4:獲取CJM結(jié)果步驟5:使用一個(gè)顯示控步驟6:執(zhí)行自定義行1步驟1重要的事情先打開(kāi)VisualStudio添加參數(shù)到.NETCognex.VisionPro→定義低級(jí)別對(duì)Cognex.VisionPro.Core 低級(jí)別的東Cognex.VisionPro.QuickBuild.Core→CogJobManager位于此1我們?yōu)槭裁刺砑幽切﹨⒁驗(yàn)槟仨毭鞔_ 定義您想要使用的VisionPro類對(duì)象的任何集您需要知道哪些集包含哪有兩種方式可以幫助您了 1步驟1名稱空記住所有.NET對(duì)象在名稱空間中定義例如,低級(jí)別的VisionPro對(duì)象在Cognex.VisionProCogJobManager位于Cognex.VisionPro.QuickBuild名稱空間中要了解VisionPro名稱空間有多種方VisualStudio對(duì)象瀏覽器顯示所有的名稱空1步驟1–導(dǎo)入您的名稱空ImportsImportsPublicClassEnd1步驟 對(duì)象變 PublicClassPrivatemyJobManagerAsCogJobManagerPrivatemyJobAsCogJobPrivatemyIndependentJobAsCogJobIndependentEndClass1步驟1準(zhǔn)備加載一個(gè)文 到GUI設(shè)計(jì)器并在您的窗體上雙這會(huì)創(chuàng)建一個(gè)“Form1_Load()”方法,當(dāng)首次加載您的應(yīng)用序時(shí)會(huì)調(diào)用在迅速?gòu)?fù) 操作者之后,我們會(huì)在該函數(shù)中加載我的.vpp文件1步驟1–復(fù) 操作 允許對(duì)象在發(fā)生特殊事情時(shí)通知其他對(duì)象作為一個(gè)函數(shù)調(diào)用來(lái)執(zhí)要接受通知的對(duì)象必定義一個(gè)方法 發(fā)生時(shí)調(diào)用Form1_Load()是一 操作者:它處理窗體的加 當(dāng)您在窗體上雙擊時(shí),VisualStudio自動(dòng)執(zhí)行必要的動(dòng)作1步驟1–加載您的.vpp文?myJobManager=CType(CogSerializer.LoadObjectFromFile(_"..\..\AE_QBSample.vpp"),CogJobManager)個(gè).NET對(duì)象1步驟1–變量初始myJob= 第二行初始化一個(gè)參 包 CogJobManager的信息的一個(gè)不同對(duì)1步驟1–刷新所有CJM隊(duì)刷新隊(duì)列使用 的CogJobManager的任何應(yīng)用程序1步驟1–完美地關(guān)JMJM。以下為操作步在VisualStudio中,從位于代碼窗口頂部的右手下拉框中選 這會(huì)創(chuàng)建一個(gè)Form1_FormClosing方法,在關(guān)閉窗體時(shí)調(diào)將該代碼添加到使用CogJobManager的任何應(yīng)用程1oJobManaer進(jìn)行實(shí)驗(yàn)在命令行中添加一個(gè)調(diào)用LoadObjectFromFile()的斷點(diǎn)1步驟1–為什么能完美地關(guān)正如您所看到的,CJM1步驟1–創(chuàng)建您的運(yùn)行您的應(yīng)用程有點(diǎn)煩,嗯?決不要運(yùn)行CJM停止運(yùn)行應(yīng)用程序,添加一個(gè)“運(yùn)行一次(RunOnce)”按鈕以下為實(shí)現(xiàn)方修改按鈕的名稱為“運(yùn)行一次按鈕(RunOnceButton)1步驟1–添加按鈕代我們想要RunOnceButton_Click運(yùn)行的CogJobManagerCatchexAsExceptionEndTry1步驟1完我們現(xiàn)在已經(jīng)完成了步驟1我們建立了一個(gè)簡(jiǎn)單的應(yīng)用程序,使用我們保存的CJM并且可以行運(yùn)現(xiàn)在盡可能快地點(diǎn)擊運(yùn)行一次按注意您很快會(huì)從“CogJobManager1”得到一個(gè)錯(cuò)享受夠了在步驟2中 學(xué)習(xí)這是什么樣的錯(cuò)誤,以及使用來(lái)自CJM來(lái)校正1步驟2校正錯(cuò)在步驟1中我們通過(guò)調(diào)用以下函數(shù)運(yùn)行我們的問(wèn)題在于我們忘記閱讀一Run()校正方法:我們的應(yīng)用程序應(yīng)該使得“運(yùn)行一次”按鈕失效,直完成此前的運(yùn)要使得該按鈕失效,在調(diào)用Run()之前需添加以下這行1當(dāng) 啟動(dòng) 在我們級(jí)別的最后,鍵入以下停 PrivateSubmyJobManager_Stopped(ByValsenderAsObject,ByValeAsEndSubEnd1步驟 操作除 按照以下方 在Form1_Load()的最后鍵 AddHandlermyJobManager.Stopped,EndSubAddHandler的第一個(gè)參數(shù)是我們想要處理 其第二個(gè)參數(shù)是指向操作者的指1步驟2–注銷操作 在Form1_FormClosing()的頂部鍵入 AddressOf1步驟2–關(guān)于VB.NET的一個(gè)警一些VB用戶不使用添加/刪除操作者 從列表中選擇一 這種技巧很“容易”但是不允許您控 或者注銷操作者的時(shí)間在我們的應(yīng)用程序中,停 必須在關(guān)閉CogJobManager之前銷1步驟2完現(xiàn)在我們完成了步驟2我們使用了CJM停 確保用戶不會(huì)運(yùn)行工作,除非其已被止運(yùn)行您的應(yīng)用程序測(cè)試一下。點(diǎn)擊“運(yùn)行一次”按鈕您會(huì)立即得到一個(gè)無(wú)效操作異常(InvalidOperationException)示“交叉線程運(yùn)算無(wú)效”開(kāi)始對(duì)本課程的教員持有嚴(yán)重的在步驟3 學(xué)習(xí)這是什么錯(cuò)誤以及如何使用標(biāo)準(zhǔn).NET函數(shù)校正1步驟3–現(xiàn)在什么出錯(cuò)了我們又一次忘記閱讀文件這次我們需要看看微軟的文 文件中說(shuō):每個(gè)Windows窗體控件只可以通過(guò)創(chuàng)建它的線程 還記得CJM創(chuàng)建的所有那些線程嗎它們沒(méi)有在您的GUI上創(chuàng)建按鈕,但是它們中的一個(gè)調(diào)用了您 操作者并且您 操作者正 該按鈕因此:出現(xiàn)一項(xiàng)錯(cuò)1步驟3–校正大有一個(gè)標(biāo)準(zhǔn)技巧用于校正該問(wèn)題。以下為其工作的方將其添加到您的停 IfInvokeRequiredEnd 錯(cuò)誤的線程上它會(huì)返回到“正確(True)”。1在.NET中有一個(gè)被稱為“委托(delegate)”的函數(shù)指針 以下為實(shí)現(xiàn)方就在您的停 操作者之前添加該委托?簽名必須匹配 的委托DelegateSubmyJobManagerDelegate(ByValsenderAsObject,ByValeAs ?創(chuàng)建一個(gè)指向該函數(shù)的指DimmyDelAsNewmyJobManagerDelegate(AddressOf1步驟3–使用適當(dāng)?shù)木€(即我們 操作者)在您 操作者的正確地方添加以下這兩行代碼DimeventArgs()AsObject{sender,e}Invoke(myDel,eventArgs)第一行為調(diào)用定義了一個(gè)數(shù)組參1步驟3完現(xiàn)在我們完成了步驟3我們使用不到10行的代碼確保我們的按鈕只可由創(chuàng)建它的線 我們使用的技巧是一個(gè)標(biāo)準(zhǔn)的微軟做法。您應(yīng)該徹底學(xué)習(xí)它,并在GUI項(xiàng)目可能被非適當(dāng)線程調(diào)用的地方使運(yùn)行您的應(yīng)用程序測(cè)試一下。點(diǎn)擊“運(yùn)行一次”按鈕。注意不會(huì)的錯(cuò)對(duì)本課程開(kāi)始感覺(jué)好些了在步驟4 開(kāi)始讓我們的GUI更加有意思1步驟4優(yōu)化在步驟4 以兩種方式更新我們先從“連續(xù)運(yùn)行”按鈕開(kāi)始我們想要該按鈕在兩個(gè)狀態(tài)之間切換:“按下”和“未按”在“按下”狀態(tài)我們的JM們的JM應(yīng)該被停止。得到這一動(dòng)作的好辦法是使用復(fù)選框控件來(lái)制1步驟4–連續(xù)運(yùn)以下為實(shí)現(xiàn)方法:添加復(fù)選框RunOnceButton.Enabled=FalseCatchexAsExceptionEndTry下頁(yè)幻燈片繼續(xù)1步驟4–連續(xù)運(yùn)行(續(xù)另CatchexAsExceptionEndEnd該代碼告訴我們CJM在復(fù)選框被勾選時(shí),執(zhí)行RunContinuous()者Stop在我們開(kāi)始運(yùn)行時(shí),它還使得“運(yùn)行一次”按鈕失效,而在我們待CJM停止時(shí)使得“連續(xù)運(yùn)行”按鈕失1步驟4–連續(xù)運(yùn)行(結(jié)束 RunOnceButton.Enabled=TrueRunContCheckBox.Enabled=True?在停止時(shí)激活在RunOnceButton_Clicked方法添加另一行如下代1步驟4–避免死 1步驟4–避免死鎖(續(xù)在RunOnceButton_Click()中添加ControlBox=在RunContCheckBox_CheckedChanged()中添加ControlBox=在myJobManager_Stopped()中添加ControlBox=1步驟4–顯示運(yùn)行狀態(tài)(RunStatus現(xiàn) 更新GUI顯示運(yùn)行狀態(tài)現(xiàn)在GUI可能看起來(lái)有如下11步驟 和線程處這一切必須 要編寫(xiě)的 什么線程會(huì)激活 1步驟4–編寫(xiě)操作者的代在我們級(jí)別的最后,添加一個(gè)新操作者ByValsenderAsObject,ByValeAsIfInvokeRequired?創(chuàng)建一個(gè)指針指向該函DimmyDelAsNewmyJobManagerDelegate(AddressOf在正確的線程上調(diào)用同一個(gè)函數(shù)DimeventArgs()AsObjectsendere}Invoke(myDel,eventArgs)EndIfEndSubEnd這確保適當(dāng)?shù)木€程處理(但是沒(méi)有作用)1步驟4–編寫(xiě)操作者的代碼(續(xù)現(xiàn)在給操作者添加“真實(shí)”代碼DimtopRecordAsCognex.VisionPro.ICogRecord=RunStatusTextBox.Text=_topRecord.SubRecords("UserResultTag").Content&":"_&topRecord.SubRecords("JobName").Content&"-->"_&topRecord.SubRecords("RunStatus").Content.ToString在第一行調(diào)取下一個(gè)結(jié)果注意您必須完全給予ICogRecord資格其他行代碼創(chuàng)建包含以下內(nèi)容的該字符串被放置在文本框1步驟 操作如以前一樣,我們需 操作者 End按照以下方法注銷操作() 1步驟4完我們更新了我們的GUI使其更加“真實(shí)” 1步驟5–添加一個(gè)顯示控 1步驟5– 這是您在QuickBuild中能夠看見(jiàn)的“標(biāo)準(zhǔn)”控件它是四個(gè)控件中最復(fù)雜的一它知道如何連接到VisionPro工具以及如何調(diào)取該工具的所檢查記錄它通過(guò)顯示區(qū)上方的一個(gè)下列框允許用戶選擇瀏覽哪些1步驟5– 該控件看起來(lái)與 y相同和 y一樣,它允許用戶通過(guò)下拉列表選擇一個(gè)像記而且和 y一樣,它顯示所選圖像的任何圖形但是它對(duì)VisionPro工具一無(wú)所該控件不能從相關(guān)的VisionPro工具獲得一個(gè)CogRecords您必須使用編程的方法提1步驟5– 該控件將顯示單個(gè)圖像記錄及其圖形的該控件沒(méi)有下拉列表框,不允許用戶選擇圖像 y對(duì)VisionPro工具一無(wú)所知您必須為該控件提供一個(gè)包含單個(gè)圖像的CogRecord1步驟5– y是最低級(jí)別的顯示控由所有其他顯示控件來(lái)使用該控件對(duì)VisionPro工具或CogRecords一無(wú)所它不允許用戶選擇不同的圖該控件只顯示一個(gè)圖像和一組圖圖像和圖形必須通過(guò)編程來(lái)提供1步驟5–選擇 對(duì)于我們自定義的應(yīng)用程 使 在VisualStudio中我們的第一步 1步驟5–添加 將 y拖放到窗體上在它正下方放置 yStatusBar1步驟5–開(kāi)始編記住在關(guān)閉應(yīng)用程序時(shí)要處理所有VisionPro控在Form1_FormClosing End連接 yStatusBar到顯示區(qū)在Form1_Load y=CogRecordDis EndSub1步驟5–完成編在UserResultAvailable操作DimtmpRecordAs?假定所需記錄存在并且取tmpRecord=tmpRecord.SubRecords("LastRun") y1.Record=tmpRecord EndSub1步驟5完 1步驟6–定制您的應(yīng)用程 訓(xùn)練PatMax模型。 1步驟6–再說(shuō)說(shuō)線每個(gè)Widos例如,這意味著在視覺(jué)工具的工作運(yùn)行期間您不得試 它您不可以讀寫(xiě)屬性或者oJo和obaar以“同時(shí)”由多個(gè)線程使用。1步驟6–關(guān)于線我們需要確保我們的應(yīng)用程序遵守VisionPro的線程要1步驟6–添加自定義按修改其“外觀”屬性為“按鈕”修改按鈕的文本為“顯示訓(xùn)練圖修改按鈕名稱為“顯示訓(xùn)練檢查(ShowTrainCheckBox)”修改按鈕的文本為“重新修改按鈕名稱為“再訓(xùn)練按鈕(RetrainButton)”修改“激活”屬性為“錯(cuò)誤(False)1步驟6–在運(yùn)行時(shí)失RunContCheckBox.EnabledFalseDisableifrunningShowTrainCheckBox.Enabled=False在RunContCheckBox_CheckedChanged()中添加RunContCheckBox.EnabledTrueEnablewhenstoppedShowTrainCheckBox.Enabled=True1步驟 的按鈕邏下一步 確保用戶在他們?yōu)g覽訓(xùn)練圖像時(shí)不能運(yùn)行CJM在“顯示訓(xùn)練圖像”復(fù)選框上雙擊并且添加以下RunOnceButton.Enabled=FalseRunContCheckBox.Enabled=FalseRetrainButton.Enabled=TrueRunOnceButton.Enabled=TrueRetrainButton.Enabled=FalseEnd我們已經(jīng)完成所有按鈕“激活/失效”邏輯。是添加一些“真實(shí)代碼的時(shí)候1步驟6–使用兩個(gè)新

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論