国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

海康VisionMaster-腳本模塊

這篇具有很好參考價值的文章主要介紹了??礦isionMaster-腳本模塊。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

VM是??禉C(jī)器人自主研發(fā)的機(jī)器視覺軟件,將一系列的圖像算法、邏輯工具和通訊協(xié)議等封裝成圖形化模塊,致力于幫助客戶提供快速搭建視覺應(yīng)用、解決視覺難題,能夠滿足視覺定位、尺寸測量、缺陷檢測以及信息識別等機(jī)器視覺應(yīng)用。
轉(zhuǎn)自:機(jī)器視覺技術(shù)交流社區(qū)

1 引言

在VM的工具箱中,雖然已經(jīng)包含了一百多個算法模塊可供用戶通過連線組合的方式來完成相應(yīng)的視覺需求,但仍存在一些數(shù)據(jù)處理邏輯是工具箱中的模塊所不涵蓋的。此時,腳本模塊就可以體現(xiàn)數(shù)據(jù)處理的靈活性。腳本使用的常用場景包括:日志打印、坐標(biāo)排序、定位偏差計算、檢測結(jié)果分類、圖像格式轉(zhuǎn)換、聯(lián)合OpenCV開發(fā)等等。
腳本模塊主要是需要確定輸入變量、輸出變量以及數(shù)據(jù)處理邏輯??蓪?dǎo)入或?qū)С鲆呀?jīng)編寫的腳本內(nèi)容,腳本文本格式的后綴為cs;可編輯程序集來調(diào)用第三方庫;可直接在腳本編輯頁面編寫代碼、預(yù)編譯和執(zhí)行;也可導(dǎo)出當(dāng)前腳本的工程,直接就會打開工程所在文件夾,再用VS打開工程、附加進(jìn)程就可以進(jìn)行腳本的調(diào)試,具體介紹見腳本模塊章節(jié)。

2 腳本模塊

雙擊打開腳本模塊,界面如下所示,可以分為五個區(qū)域:變量輸入?yún)^(qū)、變量輸出區(qū)、菜單欄、C#編程區(qū)、提示區(qū)。
海康VisionMaster-腳本模塊

C#編程區(qū)的代碼可分為三部分:命名空間、初始化函數(shù)、執(zhí)行函數(shù)。Init()函數(shù)為初始化函數(shù),Process()為執(zhí)行函數(shù)。
??礦isionMaster-腳本模塊

2.1 接口介紹

使用腳本模塊的目的,主要是為了處理數(shù)據(jù),那么就需要獲取腳本輸入的數(shù)據(jù)以及通過設(shè)置數(shù)據(jù)將腳本某些結(jié)果進(jìn)行輸出,因此需要了解相應(yīng)的獲取和設(shè)置數(shù)據(jù)的接口函數(shù)。針對不同類型的數(shù)據(jù)有不同的接口函數(shù),如:string、float、int、byte、image等數(shù)據(jù)類型的獲取和設(shè)置接口大同小異。另外,還可以使用通信的發(fā)送數(shù)據(jù)接口,全局變量獲取及設(shè)置接口,模塊的結(jié)果獲取和運行參數(shù)設(shè)置。

  1. 數(shù)據(jù)類型接口
功能 函數(shù)方法 參數(shù)說明
獲取int型 GetIntValue(string paramName, ref int paramValue) 輸入:變量名paramName;輸出:變量值paramValue
獲取float型 GetFloatValue (string paramName, ref float paramValue) 輸入:變量名paramName;輸出:變量值paramValue
獲取string型 GetStringValue (string paramName, ref string paramValue) 輸入:變量名paramName;輸出:變量值paramValue
獲取byte型 GetBytesValue (string paramName,ref byte[] paramValue) 輸入:變量名paramName;輸出:變量值paramValue
獲取圖像數(shù)據(jù) GetIMAGEValue (string paramName, ref Image paramValue) 輸入:變量名paramName;輸出:變量值paramValue
獲取int型數(shù)組 GetIntArrayValue(string paramName, ref int[] paramValue,out int arrayCount) 輸入:變量名paramName;輸出:變量值paramValue,數(shù)組個數(shù)arrayCount
獲取float型數(shù)組 GetFloatArrayValue(string paramName, ref float[] paramValue,out int arrayCount) 輸入:變量名paramName;輸出:變量值paramValue,數(shù)組個數(shù)arrayCount
獲取string型數(shù)組 GetStringArrayValue(string paramName, ref string[] paramValue,out int arrrayCount) 輸入:變量名paramName;輸出:變量值paramValue,數(shù)組個數(shù)arrayCount
設(shè)置int型 SetIntValue(string key, int value) 輸入:變量名key,變量值value
設(shè)置float型 SetFloatValue (string key, float value) 輸入:變量名key,變量值value
設(shè)置string型 SetStringValue (string key, string value) 輸入:變量名key,變量值value
設(shè)置byte型 SetBytesValue (string key, byte[] value) 輸入:變量名key,變量值value
設(shè)置圖像數(shù)據(jù) SetImageValue (string key, Image value) 輸入:變量名key,變量值value
設(shè)置int型數(shù)組 SetIntValueByIndex(string key, int[] value, int index, int total) 輸入:變量名key,變量值value,數(shù)組索引index,數(shù)組元素個數(shù)total
設(shè)置float型數(shù)組 SetFloatValueByIndex (string key, float[] value, int index, int total) 輸入:變量名key,變量值value,數(shù)組索引index,數(shù)組元素個數(shù)total
設(shè)置string型數(shù)組 SetStringValueByIndex(string key, string[] value, int index, int total) 輸入:變量名key,變量值value,數(shù)組索引index,數(shù)組元素個數(shù)total
  1. 其它接口
功能 函數(shù)方法 參數(shù)說明
設(shè)置全局變量 GlobalVariableModule.SetValue(string paramName,string paramValue) 輸入:變量名paramName,變量值paramValue
獲取全局變量 GlobalVariableModule.GetValue (string paramName) 輸入:變量名paramName
獲取模塊結(jié)果數(shù)據(jù) CurrentProcess.GetModule(string paramModuleName).GetValue(string paramValueName) 輸入:模塊名paramModuleName,結(jié)果名paramValueName
設(shè)置模塊運行參數(shù) CurrentProcess.GetModule(string paramModuleName).SetValue(string paramValueName,string paramValue) 輸入:模塊名paramModuleName,變量名paramValueName,變量值paramValue
PLC、Modbus發(fā)送數(shù)據(jù) GlobalCommunicateModule.GetDevice(int deviceID).GetAddress(int addressID).SendData(string data,DataType dataType) 輸入:設(shè)備deviceID,設(shè)備地址addressID,待發(fā)送數(shù)組data,待發(fā)送數(shù)據(jù)類型dataType
TCP、UDP、串口發(fā)送數(shù)據(jù) GlobalCommunicateModule.GetDevice(int deviceID).SendData(string data) 輸入:設(shè)備deviceID,待發(fā)送數(shù)據(jù)data

2.2 引用和調(diào)試

  1. 添加引用
    在腳本界面點擊【編輯程序集】進(jìn)入程序集界面,點擊【添加】根據(jù)需求進(jìn)行程序集動態(tài)庫的添加,僅支持C#程序集添加,到需要的第三方程序集路徑下找到想要添加的.dll點擊打開即可添加,添加完成后在腳本中調(diào)用即可。
    ??礦isionMaster-腳本模塊

  2. 調(diào)試步驟
    在腳本界面點擊【導(dǎo)出工程】,選擇.sln文件使用VS打開,設(shè)置斷點并且重新生成,然后點擊【調(diào)試】中的【附加到進(jìn)程】,VM4.2版本是選擇VmModuleProxy.exe(VM4.0版本是附加ShellMouleManager.exe)附加,最后在VM中單次執(zhí)行方案或者單次執(zhí)行流程或者腳本模塊來查看是否能進(jìn)入斷點。小小提示:斷點調(diào)試時,每次修改代碼都需要重新編譯,VS每次重新編譯后,只有第一次運行會進(jìn)入初始化函數(shù)Init()。
    ??礦isionMaster-腳本模塊

2.3 VM4.2的更新

  1. VM4.2雖然保留了VM4.0的一系列接口函數(shù),但VM4.2的腳本模塊提供了更簡單更方便的編程寫法,不需要使用接口函數(shù),直接在腳本中用等于號(=)來獲取輸入變量的值或用等于號(=)給輸出變量賦值。

  2. VM4.2在調(diào)試的時候,相比較VM4.0,附件的進(jìn)程由ShellMouleManager.exe變?yōu)閂mModuleProxy.exe。這是因為當(dāng)一個方案中包含多個腳本,我們對每個腳本進(jìn)行調(diào)試附加進(jìn)程時,每個腳本得附加進(jìn)程名都是ShellMouleManager.exe,因此得打開任務(wù)管理器,需要在進(jìn)程中來查看每個腳本對應(yīng)的PID,然后通過ID編號來確定當(dāng)前腳本調(diào)試需要附加的是哪個ShellMouleManager.exe。這一步查看比較繁瑣,因此提出附加VmModuleProxy.exe,無論時哪個腳本進(jìn)行調(diào)試,都只需要附加這個進(jìn)程即可。

3 案例演示

需求:獲取下圖中條碼信息和二維碼信息,然后通過編寫腳本打印日志到本地。
海康VisionMaster-腳本模塊

??礦isionMaster-腳本模塊

根據(jù)案例需求,步驟如下:

  1. 使用條碼識別模塊和二維碼識別模塊獲取識別信息;
  2. 用GetStringValue函數(shù)分別獲取條碼和二維碼信息;
  3. 通過FileStream類操作流寫入信息到本地;
  4. 并通過SetstringValue函數(shù)輸出打印日志的狀態(tài)信息給到下一個模塊。

效果如下所示,確定輸入輸出變量,然后編寫代碼,執(zhí)行之后將輸出相應(yīng)得結(jié)果。
海康VisionMaster-腳本模塊

完整代碼如下所示:

using System;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Script.Methods;
public partial class UserScript:ScriptMethods,IProcessMethods
{
   //********輸入變量**********   
    string Barcode; 				//條碼 
	string TwoD_Code;				//二維碼	    
    //*******輸出變量**********    
    string writeSucceedOrFailed; 	//日志寫入狀態(tài);
    
    /// <summary>
    /// 預(yù)編譯時變量初始化
    /// </summary>
    public void Init()
    {
		//變量初始化,其余變量可在該函數(shù)中添加      
    }

    /// <summary>
    /// Enter the process function when running code once
	/// 流程執(zhí)行一次進(jìn)入Process函數(shù)
    /// </summary>
    /// <returns></returns>
    public bool Process()
    {
        //每次執(zhí)行將進(jìn)入該函數(shù),此處添加所需的邏輯流程處理           
        GetStringValue("barcode",ref Barcode);				//獲取條碼信息
        GetStringValue("twoD_Code", ref TwoD_Code);			//獲取二維碼信息        
        try
       {
       	   using(FileStream fsWrite = new FileStream(@"E:\\Log.txt",FileMode.Append,FileAccess.Write) )
           {
       		  string str= "條碼信息:"+ Barcode + "\r\n" + "二維碼信息:" + TwoD_Code;
       		  byte[] buffer=Encoding.Default.GetBytes(str+"\r\n");		
       		  fsWrite.Write(buffer,0,buffer.Length); 		
           }
           writeSucceedOrFailed="寫入OKAY";    
       }
         catch
       {
			writeSucceedOrFailed="寫入失敗";
       }
       SetStringValue("stateOutput",writeSucceedOrFailed);	  //輸出日志打印狀態(tài)
        
        return true;
    }
}

由于我們可以直接使用等于號(=)進(jìn)行賦值,不需要使用不同類型的接口函數(shù)獲取變量(GetxxxxValue)和賦值變量(SetxxxxValue),上述Process()函數(shù)中的代碼也可以用如下方式實現(xiàn)。

public bool Process()
{
    //每次執(zhí)行將進(jìn)入該函數(shù),此處添加所需的邏輯流程處理           
    Barcode=barcode;//獲取條碼信息
    TwoD_Code=twoD_Code;//獲取二維碼信息
        
    try
    {
       	using(FileStream fsWrite = new FileStream(@"E:\\Log.txt",FileMode.Append,FileAccess.Write) )
        {
       		string str= "條碼信息:"+ Barcode + "\r\n" + "二維碼信息:" + TwoD_Code;
       		byte[] buffer=Encoding.Default.GetBytes(str+"\r\n");		
       		fsWrite.Write(buffer,0,buffer.Length); 		
        }
        writeSucceedOrFailed="寫入OKAY";    
    }
    catch
    {
		writeSucceedOrFailed="寫入失敗";
    }
    //輸出日志打印狀態(tài)
    stateOutput=writeSucceedOrFailed; 
    return true;
}

4 總結(jié)

作為VM中的邏輯模塊之一,腳本模塊能夠靈活的按照需求處理數(shù)據(jù),只要簡單的模仿寫過一遍,就能掌握其中規(guī)則,隨后就能在實際項目中拓展使用。根據(jù)經(jīng)驗,有以下兩點需要注意:文章來源地址http://www.zghlxwxcb.cn/news/detail-458473.html

  1. 無法進(jìn)入到斷點位置。建議調(diào)試過程中,導(dǎo)出工程后關(guān)閉腳本模塊編輯界面,只使用vs修改代碼和編譯,然后附加進(jìn)程。
  2. 全局變量與局部變量的差異,在函數(shù)外定義的是全局變量,在process函數(shù)定義的是局部變量。

到了這里,關(guān)于??礦isionMaster-腳本模塊的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【HIKROBOT】??禉C(jī)器人:工業(yè)相機(jī)SDK二次開發(fā)

    【HIKROBOT】海康機(jī)器人:工業(yè)相機(jī)SDK二次開發(fā)

    海康機(jī)器人官網(wǎng)鏈接:https://www.hikrobotics.com/cn 根據(jù)購買設(shè)備的型號下載用戶說明書 筆者實驗室購買了兩款,一款GigE網(wǎng)口接口的,一款USB接口 GigE網(wǎng)口接口 USB接口:MV-CA050-20UC 服務(wù)支持”“下載中心”“機(jī)器視覺”中下載MVS客戶端安裝包及SDK開發(fā)包。 1.1.1 Ubuntu18.04系統(tǒng)安裝 下

    2024年02月05日
    瀏覽(64)
  • ??禉C(jī)器人工業(yè)相機(jī) Win10+Qt+Cmake 開發(fā)環(huán)境搭建

    ??禉C(jī)器人工業(yè)相機(jī) Win10+Qt+Cmake 開發(fā)環(huán)境搭建

    參考這個鏈接安裝好MVS客戶端 Qt新建一個c++項目 cmakeList中添加??禉C(jī)器人的庫,如下: main.cpp中添加以下代碼 運行程序,出現(xiàn)以下內(nèi)容則說明安裝庫成功

    2024年02月11日
    瀏覽(18)
  • ??礦isionmaster-全局腳本:PLC 通訊字符觸發(fā)流程執(zhí)行的方法

    打開全局通信腳本,在 UserGlobalMethods_OnReceiveCommunicateDataEvent 里面 修改,修改代碼如下

    2024年02月05日
    瀏覽(240)
  • 海康Visionmaster-全局變量:全局變量關(guān)聯(lián)流程中具體 模塊結(jié)果的方法

    ??礦isionmaster-全局變量:全局變量關(guān)聯(lián)流程中具體 模塊結(jié)果的方法

    將視覺流程中模板匹配算法模塊運行的結(jié)果數(shù)據(jù):特征匹配點 X 關(guān)聯(lián)全局變量 MatchResultX。 在流程運行的主界面中,按照下面 1,2,3,4 步驟操作,第一步選中算法模塊,第二步擇模塊結(jié)果 Tab 頁,第三步點擊訂閱數(shù)據(jù)圖標(biāo),第 4 步選擇全局變量。

    2024年02月05日
    瀏覽(239)
  • Python 實現(xiàn)??禉C(jī)器人工業(yè)相機(jī) MV-CU060-10GM 的實時顯示視頻流及拍照功能

    Python 實現(xiàn)??禉C(jī)器人工業(yè)相機(jī) MV-CU060-10GM 的實時顯示視頻流及拍照功能

    一、背景介紹 1、最近項目中需要給客戶對接??禉C(jī)器人工業(yè)相機(jī) MV-CU060-10GM; 2、客戶要求通過部署的管理平臺,可以在頁面上實現(xiàn)如下功能: 1)相機(jī)視頻流開始預(yù)覽; 2)相機(jī)視頻流停止預(yù)覽; 3)相機(jī)拍照功能。 需求背景:客戶需要對生產(chǎn)的產(chǎn)品進(jìn)行定期抽樣質(zhì)檢,其中

    2024年02月08日
    瀏覽(23)
  • ??禉C(jī)器視覺Visionmaster-VM3D常見問題及解決方法

    ??禉C(jī)器視覺Visionmaster-VM3D常見問題及解決方法

    ??禉C(jī)器視覺Visionmaster-缺失檢測 軟件及環(huán)境問題 第一個問題:軟件獲取問題 官網(wǎng)獲取 第二個問題:環(huán)境配置類問題 1.軟件打不開,加密狗燈不亮,6報錯:加密狗未檢測到或異常。解決方法:安裝3DVM的驅(qū)動。 安裝后加密狗無法識別,安裝此驅(qū)動。 第三個問題:安裝VM3D后,

    2023年04月26日
    瀏覽(96)
  • shell腳本實現(xiàn)告警消息推送釘釘機(jī)器人

    shell腳本實現(xiàn)告警消息推送釘釘機(jī)器人

    一、準(zhǔn)備釘釘機(jī)器人 ? ? ? ? 釘釘創(chuàng)建群聊 ???????? ????????群設(shè)置、智能群助手、添加機(jī)器人 ? ? ? ? 機(jī)器人類型選擇 自定義 (通過webhook接入自定義服務(wù)) ?? ??? ?添加到剛才創(chuàng)建的群組、安全設(shè)置選擇自定義 ( 將設(shè)置為告警二字,有用),配

    2024年02月14日
    瀏覽(21)
  • ABB PM864A 機(jī)器人模塊

    ABB PM864A 機(jī)器人模塊

    ABB? PM864A 機(jī)器人模塊?? ABB? PM864A 機(jī)器人模塊?? ? ? 詳情介紹: ABB PM864A 機(jī)器人模塊是一款高性能、高可靠性、模塊化設(shè)計、多種接口支持、安全性強(qiáng)、易于操作、長壽命和低維護(hù)成本以及工業(yè)級可靠的機(jī)器人控制系統(tǒng)模塊。其特點包括: 高性能與高可靠性:該模塊具備高

    2024年02月02日
    瀏覽(30)
  • KUKA機(jī)器人后臺邏輯功能模塊sps

    KUKA機(jī)器人后臺邏輯功能模塊sps

    KUKA機(jī)器人的后臺邏輯功能體現(xiàn)在其sps.sub文件中,其中功能和其他品牌的機(jī)器人一致(詳細(xì)的說明解釋可參考小編另一篇文章 FANUC機(jī)器人后臺邏輯功能 ),這邊對軟plc,后臺邏輯功能的具體解釋不做過多的贅述,下面進(jìn)入講解的主題。 在workvisual軟件中我們可以看到后臺文件

    2024年04月13日
    瀏覽(20)
  • 前端web3入門腳本六:套利夾子機(jī)器人,羊毛黨必備

    前端web3入門腳本六:套利夾子機(jī)器人,羊毛黨必備

    DEX上有很多零風(fēng)險套利的機(jī)會,包括三角套利,夾子機(jī)器人… 今天主要介紹一下架子機(jī)器人的思路和簡易實現(xiàn)。 套利原理 : 夾子機(jī)器人的核心:在韭菜買入前以更低價格買入,并再韭菜買入后賣出,賺取差價 / 在韭菜賣出前以更高價格將token賣出 ,并在韭菜賣出后以低價將

    2024年02月05日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包