From cce18ebcb11e718803d5b7171e70b8811fd3593a Mon Sep 17 00:00:00 2001 From: uu Date: Mon, 9 Jun 2025 15:40:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HitBotCSharpDemo/CSharpDemo.csproj | 3 + HitBotCSharpDemo/CameraManager.cs | 14 + HitBotCSharpDemo/ShowForm.Designer.cs | 50 +- HitBotCSharpDemo/ShowForm.cs | 43 +- .../bin/x64/Debug/HitBotCSharpDemo.exe | Bin 308736 -> 309760 bytes .../bin/x64/Debug/HitBotCSharpDemo.pdb | Bin 60928 -> 62976 bytes .../bin/x64/Debug/MvCameraControl.Net.dll | Bin 0 -> 177664 bytes .../bin/x64/Debug/MvCameraControl.Net.xml | 18755 ++++++++++++++++ .../x64/Debug/SDK_LOG/id_74_2025-06-09.hilog | 419 + .../bin/x64/Release/Cam_pos_path.txt | 6 - .../CSharpDemo.csproj.AssemblyReference.cache | Bin 6746 -> 7525 bytes .../CSharpDemo.csproj.CoreCompileInputs.cache | 2 +- .../CSharpDemo.csproj.FileListAbsolute.txt | 2 + .../CSharpDemo.csproj.GenerateResource.cache | Bin 132 -> 132 bytes .../obj/x64/Debug/CSharpDemo.csproj.Up2Date | 0 ...gnTimeResolveAssemblyReferencesInput.cache | Bin 2467 -> 2544 bytes .../obj/x64/Debug/HitBotCSharpDemo.exe | Bin 308736 -> 309760 bytes .../obj/x64/Debug/HitBotCSharpDemo.pdb | Bin 60928 -> 62976 bytes README.md | 1 + 19 files changed, 19272 insertions(+), 23 deletions(-) create mode 100644 HitBotCSharpDemo/CameraManager.cs create mode 100644 HitBotCSharpDemo/bin/x64/Debug/MvCameraControl.Net.dll create mode 100644 HitBotCSharpDemo/bin/x64/Debug/MvCameraControl.Net.xml delete mode 100644 HitBotCSharpDemo/bin/x64/Release/Cam_pos_path.txt create mode 100644 HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.Up2Date diff --git a/HitBotCSharpDemo/CSharpDemo.csproj b/HitBotCSharpDemo/CSharpDemo.csproj index b56738f..823c8c9 100644 --- a/HitBotCSharpDemo/CSharpDemo.csproj +++ b/HitBotCSharpDemo/CSharpDemo.csproj @@ -77,6 +77,9 @@ False bin\x64\Release\ClassLibrary_ControlBean.dll + + ..\..\..\..\..\..\..\Program Files (x86)\MVS\Development\DotNet\AnyCpu\MvCameraControl.Net.dll + diff --git a/HitBotCSharpDemo/CameraManager.cs b/HitBotCSharpDemo/CameraManager.cs new file mode 100644 index 0000000..cc7f54e --- /dev/null +++ b/HitBotCSharpDemo/CameraManager.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MvCamCtrl.NET; + +namespace HitBotCSharpDemo +{ + public class CameraManager + { + + } +} diff --git a/HitBotCSharpDemo/ShowForm.Designer.cs b/HitBotCSharpDemo/ShowForm.Designer.cs index df0f53a..9b9d95f 100644 --- a/HitBotCSharpDemo/ShowForm.Designer.cs +++ b/HitBotCSharpDemo/ShowForm.Designer.cs @@ -113,6 +113,9 @@ this.lbl_Refresh_ID = new System.Windows.Forms.Label(); this.tim_IO_Refresh = new System.Windows.Forms.Timer(this.components); this.rit_Coord = new System.Windows.Forms.RichTextBox(); + this.cam_connected = new System.Windows.Forms.Button(); + this.cam_shooting = new System.Windows.Forms.Button(); + this.cam_feed = new System.Windows.Forms.PictureBox(); this.tac_MainForm.SuspendLayout(); this.tap_Axis.SuspendLayout(); this.grb_R.SuspendLayout(); @@ -127,6 +130,7 @@ this.tap_Move.SuspendLayout(); this.tap_Cam.SuspendLayout(); this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.cam_feed)).BeginInit(); this.SuspendLayout(); // // btn_Init @@ -988,6 +992,9 @@ // // tap_Cam // + this.tap_Cam.Controls.Add(this.cam_feed); + this.tap_Cam.Controls.Add(this.cam_shooting); + this.tap_Cam.Controls.Add(this.cam_connected); this.tap_Cam.Controls.Add(this.init_pos_btn); this.tap_Cam.Controls.Add(this.cam_btn_4); this.tap_Cam.Controls.Add(this.cam_btn_3); @@ -1003,7 +1010,7 @@ // // init_pos_btn // - this.init_pos_btn.Location = new System.Drawing.Point(152, 449); + this.init_pos_btn.Location = new System.Drawing.Point(222, 470); this.init_pos_btn.Name = "init_pos_btn"; this.init_pos_btn.Size = new System.Drawing.Size(128, 43); this.init_pos_btn.TabIndex = 4; @@ -1013,7 +1020,7 @@ // // cam_btn_4 // - this.cam_btn_4.Location = new System.Drawing.Point(152, 359); + this.cam_btn_4.Location = new System.Drawing.Point(222, 383); this.cam_btn_4.Name = "cam_btn_4"; this.cam_btn_4.Size = new System.Drawing.Size(128, 43); this.cam_btn_4.TabIndex = 3; @@ -1023,7 +1030,7 @@ // // cam_btn_3 // - this.cam_btn_3.Location = new System.Drawing.Point(152, 278); + this.cam_btn_3.Location = new System.Drawing.Point(222, 289); this.cam_btn_3.Name = "cam_btn_3"; this.cam_btn_3.Size = new System.Drawing.Size(128, 43); this.cam_btn_3.TabIndex = 2; @@ -1033,7 +1040,7 @@ // // cam_btn_2 // - this.cam_btn_2.Location = new System.Drawing.Point(152, 195); + this.cam_btn_2.Location = new System.Drawing.Point(222, 201); this.cam_btn_2.Name = "cam_btn_2"; this.cam_btn_2.Size = new System.Drawing.Size(128, 43); this.cam_btn_2.TabIndex = 1; @@ -1043,7 +1050,7 @@ // // cam_btn_1 // - this.cam_btn_1.Location = new System.Drawing.Point(152, 117); + this.cam_btn_1.Location = new System.Drawing.Point(222, 117); this.cam_btn_1.Name = "cam_btn_1"; this.cam_btn_1.Size = new System.Drawing.Size(128, 43); this.cam_btn_1.TabIndex = 0; @@ -1097,6 +1104,35 @@ this.rit_Coord.Text = ""; this.rit_Coord.TextChanged += new System.EventHandler(this.rit_Coord_TextChanged); // + // cam_connected + // + this.cam_connected.Location = new System.Drawing.Point(796, 470); + this.cam_connected.Name = "cam_connected"; + this.cam_connected.Size = new System.Drawing.Size(130, 43); + this.cam_connected.TabIndex = 6; + this.cam_connected.Text = "摄像头链接"; + this.cam_connected.UseVisualStyleBackColor = true; + this.cam_connected.Click += new System.EventHandler(this.button2_Click_1); + // + // cam_shooting + // + this.cam_shooting.Location = new System.Drawing.Point(626, 470); + this.cam_shooting.Name = "cam_shooting"; + this.cam_shooting.Size = new System.Drawing.Size(128, 43); + this.cam_shooting.TabIndex = 7; + this.cam_shooting.Text = "拍摄"; + this.cam_shooting.UseVisualStyleBackColor = true; + this.cam_shooting.Click += new System.EventHandler(this.button1_Click_1); + // + // cam_feed + // + this.cam_feed.Location = new System.Drawing.Point(598, 117); + this.cam_feed.Name = "cam_feed"; + this.cam_feed.Size = new System.Drawing.Size(357, 318); + this.cam_feed.TabIndex = 8; + this.cam_feed.TabStop = false; + this.cam_feed.Click += new System.EventHandler(this.cam_feed_Click); + // // ShowForm // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F); @@ -1137,6 +1173,7 @@ this.tap_Move.PerformLayout(); this.tap_Cam.ResumeLayout(false); this.panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.cam_feed)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -1227,6 +1264,9 @@ private System.Windows.Forms.Button cam_btn_2; private System.Windows.Forms.Button cam_btn_1; private System.Windows.Forms.Button init_pos_btn; + private System.Windows.Forms.Button cam_connected; + private System.Windows.Forms.Button cam_shooting; + private System.Windows.Forms.PictureBox cam_feed; } } diff --git a/HitBotCSharpDemo/ShowForm.cs b/HitBotCSharpDemo/ShowForm.cs index 83f4f77..51f06ea 100644 --- a/HitBotCSharpDemo/ShowForm.cs +++ b/HitBotCSharpDemo/ShowForm.cs @@ -5,7 +5,7 @@ using System.Threading; using System.Windows.Forms; using ControlBeanExDll; using TcpserverExDll; - +using MvCamCtrl.NET; namespace HitBotCSharpDemo { public partial class ShowForm : Form @@ -89,15 +89,14 @@ namespace HitBotCSharpDemo } } } - - if (positionIndex == 5) - { - MessageBox.Show("成功加载5个相机位置点位"); - } - else - { - MessageBox.Show($"只加载了{positionIndex}个点位,需要5个点位"); - } + //if (positionIndex == 5) + //{ + // MessageBox.Show("成功加载5个相机位置点位"); + //} + //else + //{ + // MessageBox.Show($"只加载了{positionIndex}个点位,需要5个点位"); + //} } else { @@ -136,7 +135,7 @@ namespace HitBotCSharpDemo robot.new_set_acc(30, 30, 30, 30); // 移动到指定位置 - int result = robot.new_movej_xyz_lr(x, y, z, r, 50, 0, currentHand); + int result = robot.new_movej_xyz_lr(x, y, z, r, 100, 0, currentHand); if (result != 1) { @@ -615,5 +614,27 @@ namespace HitBotCSharpDemo { MoveToPosition(4); } + + private void button2_Click_1(object sender, EventArgs e) + { + // 测试1:枚举设备 + MyCamera.MV_CC_DEVICE_INFO_LIST deviceList = new MyCamera.MV_CC_DEVICE_INFO_LIST(); + int nRet = MyCamera.MV_CC_EnumDevices_NET(MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE, ref deviceList); + + //MessageBox.Show($"SDK初始化成功!返回值: {nRet}"); + MessageBox.Show($"发现设备数量: {deviceList.nDeviceNum}"); + + + } + + private void button1_Click_1(object sender, EventArgs e) + { + + } + + private void cam_feed_Click(object sender, EventArgs e) + { + + } } } diff --git a/HitBotCSharpDemo/bin/x64/Debug/HitBotCSharpDemo.exe b/HitBotCSharpDemo/bin/x64/Debug/HitBotCSharpDemo.exe index 36b4d4af07326b7a48dbe36cf4cc8f45fdb85af7..4ec7fc2cb8246bd0e9592332be762fabd43ec6e1 100644 GIT binary patch delta 21504 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 delta 20544 zcmcg!3z!tumA+N|nC_nGp6-U}c`(?`W1t6+hcF5V0xAgMEs8u;1VIFa#u`v`z?zYu z5=A5>qT*{bCX$Ge42CtnAi91UHIX$&iJHh7qwbn0YfQw%u;)MZx>eQrzWu(bC$*MRLYMe{-!6nQ-mAZsANge#?q+U;O>}@mP<)E8S9= z)SzmiZ53jTsV@fB3GI6%#&~#X48ct=8{@+DaZ))pa;en=FtL=fNI_(KY>az;>exRvAd)dgP?u}Ur9~w`k8kDb%A>A9)xN1!8 zUa!`uMyk4A?WGzW-D|Q#RIz4YL>o?*2b%H;?G&|ZR`nfWa^&M~eg3bb^bL+e!xhI< zq@_tjgxaumnDLYDt7+Kgnt$@JU)5mP6}f-%u%l~tsi&%4Z`LMNnw$^nLy9rJM_+v& z!VzkyI3LUa(QRl%{QguSl2orkZCyaS1E1xhlU;TS zv+Tq-m|X%VPGOeSnuygc8~xnQ{h4LUMP@l9+B<9~X!o%#&vDUnT=ra-o$Ipaxhy5! z8cg3vdAA3qWZNty+GZ);HcL*~ET!CL$vff!iIZ$z~}BHhVEx-JGSRF1*ZT zN4o4uE=!xKJ;Vr?ZE@L?ndPkYVU{c*hRe=$*-^}ruZfML zndQl)VkLjr9BmTB^1v&ZWy_bi>~fdAlv$lSuW;crnB{@TFv}gry6kB#JI-atyX*vJ z*`Lc@^a__<<+7`FmoK^O8fIxG5*zz6%Q2tMEW36lShWocvz5Y2Y@Eey9PZg*+X_TW z6fW&mZM`HOi_petjp>enMPxT%W!O9l-{w*7Hjh%X`92bl$+dCJhs`4wHjki8URR5j zlX=1lLlru-3avCZi4si;oCn^}O4FGr(OzOB+DzKuOEjhpui=tqUV^z)f-q&U zTyL(QKySSb8*Z7wxx}RI4f#eh%&W}E;fFU&AlfD=OsUIySE=w!nC=3jvs)mnJ~%9?3@?NZ~?- z)cbnM6L`MHo($G|TJnc;Z_W(5tQaFi*%CGZ80zBW{js#M!w9(AnL|R{Az8ACC9fB#`A!v}H9*=-~Jp!WDNFD(Q zta1jEwsF?!108Fb55WG4b2@6j;c)N)s^-g_2$QSY> zJ>dZ4;?U*l0ID@hA+c^tKI_RRz(zYFR%wwU!u%FaM?HBH2;7@MAeuf_G6y7(K?YN{ zJyx3Pv*#obt>qGE;eiA;WBy4Y>CYhVA!d0Gq%rM+m0;ZIm4OHOV5;t0C>fsQV-!0T zOUxMqq|KI6A@#A!8%VkG2A=O`=LeEg-Vn44jGyX8pC)~0Ytk;N`=(LDqJAt3Kw`jYv%`&Q@A=L zZMT#y1Y>S1!#y4W_j&|G+aq}dATT)$R@uf`=SkO`-Uh^(9SG9wIJIoyfyuG(z~mtH z=HcQE0=Op#y$z6dP>KRTAPNSZ70EikaHHTsoFLFzE(iIVW9?>J9>0qTM31*)}3 z5wWhndI37e39C$y@`t%Km%lfEz`gm?0cleta{vMfWJP=OSmivQIVXQ;EtfwF_vKGl z+pLB_0(;XyR%H(bYgM)c&nXY{^SIR8|3HNi>?~N52uQm?%7WC#Dr_L$Co1QG3Qe{4 z0~HT-nUo!~)q0>pB*jg%cuLcF1?g=-@{RU0-wJbG0Sr_IK<#SDNdSfCRoXwi5B$LE z?AcSpI$g7HSL42-vXW#IG5!}A=N=3g2dZve}T zvYuq>_SZ0((KDc;2WvFz6n z7ZlcMbo>D-JVp2Jg;_M0o|6Dg&U*?7&W#HM?T9hsq+Yu08D=d%u|SabehPS?pa5zg zO3tx%F5lhb1A~3-a)Lz5y9(Q&`GUw=LMRMpzk`rpTDa8zKmt7A20*Pc;+`t3eVXrK zkU{6^jCGozGs##rywQ^b)FR~|U>tbBI6!TPWSq7AIbg7lodZZ^bAWPpasYvHaFRa< zzyodo)aFQTu(m%33_ACcth0)9V9f#6RdG5B)!bd$7?A4&0Oba67d@2=Jm3^S?JCJB z*7oNHpq}q-CkLW8Ip#{h+IDgSfpT-qU#7qVZUEGFNp7&VCpWdUj2LyEf>`Ns@!GuX=xACfnGYi_VxIq^fF_z(Eq03L7yp!UAx25Wob zr|u-U5p@?QYx{G+V8ONysca6g2Rk`{ zKslf-)mw_d18xA+21;(Qwm$~|o%=jinFtli!7oqo<^a2Xeqw%_XAuAlSO%!glq|EV zKLHHp?F2ybCVq779iOt5={>wWJfb|@;(=k` zjPqmayNVR#W z9~g8d7)!wQ0qdR-d42(q4+s1{01x;8P#Y!rz}kKv7;LcD|1!r1qj_wVXa7f2ewJ_F z0T?h0P+KS&W>vpo2J3CZSkTTE2O(c7tke}>uF()M2T+b-#TEozGKQXTM}0Ta;rT0@*)CHRwI$&=9Z>P&+8u zXLY}Q2AxltSm&^0AA6x=9|GAw5U`JifPH}4`;vWD_uFUCd7H{Qf0gWG({=1aAp182 z?4u!IAD|YAxoeHp{q`Aj-XyV3Pv}_lkImh&4t}%c*TLvb@nR`9_j*L*v@Ch2s}Tx@RD5e{F)67vQugs5N)~S6M({_D!tK|=XnO@ zF`WltR@*As=bW}u5NaDe_&8~IVZDu>ipt<^Gs?p=eQ;q?hgEvz^v}2M}tm}7*LFYqu)~SxWdk+A| zDG0Vx`W1*@Gvh~bkyn9FYk_;60;1Kzz~z#v-zgr?c`Lv=CrVBM&>gQJ*CzW_LHK_Iu{{<6aUS68~xj2=R5 zX^ZjM#5#QijYQv<)mHJfPP>Ay_1ZdIOW$%83NvW2=P&n|0vI@J0BXA=YXAyw!kYIR5Wt-sfwi87)+8!ud~h~| znyq7n7MQcYN$@4*;pOFFTDau~p_kHrnCz=o6-1S+NQ5lXPm zQ^3HzP65#}FktOUtoj1>j)G^c0M9#bzK^BpSRXfoLa6CIJ-6m;|1W z+ouMr$tF?Yrp0Sbi@NoJ3mUv8foM}CldN0DByi`&8*9lHv3BzF@|HQv8bH&UZXb$( zv}KYxR`hT60G)%HRXU(D$=vP$I6Eo?n&`A!b!I0l+Wh&29p)1mtz-M7MuRs6K(sBA zPXG#E(L@(chWaWR(f*Ptnw*DlR+O^9L;QA%M>FII9ei90K4tl!Zhdr5ukm z7pr_J#0oj4f0&H&M7O3nZX?41Ce2MboYSaJq{vvoosU%J`8==KdA4xd81pk;9! z1YA*0AlfN`33JK01qa;gGZ1ZsMjSbc3^s_l)9H3+yj#vo>BY9m7D%9m9CBhPDR# z80N7IDH8ykV;Eubmm&%W72jTiChZ={3GRz|%n$VJa=@KeY`CcpYx^a80Gy=-fii!B zKl8||>Bn-vA868^mi*wpW&8kM?|gTO)ecF10C4<(Kz{V}`+u6%=;ZDv9;kwTtx@uD;g8=dyd=F3nox=$NrJ>GA!&cWS;SmS7j>$8r zzkTb_rbEhS^F@zi00Z|80JUY3YpgoochkVC_Cd}no22=h#kOxT9fY8hhn0?p+suZu zsiE*IT2Q`x0r$=i5N*5U6RVcF!36Hy%dnPtYh~^KK**C?$CF#xliot4ClI-HLhE({ zir;3mwrKFxtb<$aIw;=8XwiI!h7qmGvk)Z1i_px`Urd?hX?5xw=#+Pn+Tsp25!D_- z$hVWQb|(GlYjG#TW@?Ieu%JCjU5e&vt1aGXVz0VWLD7aOTAjauQoM`X+pt`6rCp}b z%P*AfHXA0&4G`=Gx`lStA=nLP$qf+fh9=6ttI{O3P}bdsIex*`A0{_Iup9cw4G`>x zsdB>*+J9UtL!@pv^_)y#QfwhtG}BY$WDJzMM`qNldjKWK`6#h2$T8(tO|6NH$2lW=(r!-Hm(e#*qB3tSt zrPc?CR93X3pV_-=pop0RDT0=esOE8~`of8UB08YAP}?C4=tf^uL3^6psoJb|wfLYA zHRRUZ)*^iT4jEWWyM@}m))>8Dz}W8OSf6W!Xs7FYS>orc)mE%tPGi#Fz*BLINfLJM z9C7zx9$WM|>)a`4QrjaW?=w0V^w(+H1Pv(2rf8;L`kX2}z05vLh;^;*Rv5%B+}{s-sr{ z=MbI{uZ2MeGygyq{H;vyWcmZ9lTsM7I;roWA^uRkhm=36u1#k}hz5#^i=!CyzUW|b z<;N6FR9qQFWL2plL}w?jtICRaw2u0G$nD&H2nt5C!(JaQw&nh?FC==rzwS@E2>lxRXM zqgHyqw1y1l#K$V2MVz#sastn#=A4*R1^f?H7-A~XsCYiRlcIlvBF4<)YniAF{FfFl zR9=vrzD=&J4Xp^v^1Ko*P0igG1myWu$+oQzs$J&={suxYH`8OJW$P zk@;6L80a(=L;P9+J)Pt3Wif+Az7L!3$LL=n%U@I{Asr3$N~uCFQW4Sl7mVxKALqG#eOH7p8r zuA=KclA_`hOIk}(Oq_##SzIsX({7Lu8wQ#^7gAe7%o}7%X{XPvm|{tb?q+33^yB}CMhR2j4-9&l2j+2!jV9VuhTFM;!OH1 z7|wK%GmYZLQ_Qxh)Yd4zV@ab)Izb$;q=!fb62#&i_Z2~4Ljoy~MUQ++XAYQzc_ zu3&mK(|QHN^&;9JnwcNQbT-ifl@(f7C|@V~6P=qGD6UZ2)02t*NA+}ZwX!QbnP^9R zF46C%7ZTl9xkPMH{v5f4_*>Ge#CBy=cAdCdCt(9YH>9r<$HZIVC8AS&lg{`~aY5>K zqMJi^5nY;kfYtVhBO;mpiRe_GOrp;v;R9l^G9pe|%Cn*8#csy;D$(o`!jDB>qduo( z-XI#KdxB1Jyy|vwSPUYqPVsp5Got!ozP!!!>MB4>mE&TIxIP(EI>p}P0Wx`aWsS01 zuo*EYTCc#}6O`RbT{g|GHz`k0R)#2BC@U>Q+ru?9!kSE!B8JvprJ8znifmOqjkzgP zuk2MerRFIImHm45Lb|+~T}sgQ)N10tss!>}=tAmhuBd4irRq6CS|e$psAlVPv7Zq# zFRO^SdLLC-hVUVT3{4y&D$;K$_3E>s-{>U#De-~wgjhyh4+;#rS5f27DF+3V4+<#n zRbGkJ2pIcBIV2uR)`(_nxM9gZQUBFM4~vnMp~K>Y=wB&+y)qXncZzV8s@^HKhib$G zwV5)#S6N3nJ|f0N;_7U57WLOVmEVQa>OrM7lvDRA#|Szix`huZM+FjoRNNegzb}Ul zDf7u>UR|sXN;eUGCOk;(5Qizs4lz42TpgwCNRKAu^r~@0k&h1XcGV=}A12+s%H9mZ zc!u(~n=`saeYSeKxjQUxcOz z9Yb#tn?#D}O(IUzAo`$1H;Gx{@!>W?hKU=+KDxC$B0d*M`hSg$QPwHCvR%1LIbU6? zUPDK?LeEinQmRVzrpx|Fk?4o%!6B7y&qB1VH&MGH`Vm#>rniC|3%3j7%}cBG3uqI> z^OgN`qq+eD`LJ3%j?oB04DLgl4F4R#L!+%!I7g^ka(MaH7m&$||{-Jx_TSH2d`lrFiX zb=g`mXU*j+)`}%-S1;;{wY{eppKqWqAsFK}-ZHj6z2v^L?>~FvwiYp9#+O%)UOs*1 zYW;~d(`PDu{%a2K>u0oyp<*Mo0ulGZgp%^7JJ3E%ENUJ?lG5VKMiBV%z^=fvbG3cg~8edIO zx>Kn}rm18_LZxQ8dru_>v5f{N_ex#r(v6$KWn0fh{FC7Z^>xf4RBHNKEs9Xg{7)0v++dp(qdjlg$qh!3VgO>tO-q^94R!- zib{!6vJ>JJAvN265B+0zrc}^iscgp-4y`jx0d_}x9n*7;}+?e zH;g;Co^yIQO1dDOp=h={)El$y9oBU-We-DxcGB%HrKgjsI@_JT=?EOOvupS*o0U!b zx81ORn?k=T{f74M-xhA^)38u{_f=G>O24Og~RD|^HbA5 iXk9k*2JQO~zrMBK*qtM~!oN0#9viZ=w|*B78Nsccw@zn;D<8q115zvvREsQ+Jd z_5I|;e?DjO;GIY9s<(EEQ#A4V@U@SP7<7DtHcHKK*)Yr`$KbV}5 zwY^XEX{;hE)R9;MKUe+V{&B(;r`?x4GyjR|$F&_c|F!d9Z8qhl@bQE1Kk(0@j&)8y z@kq>jMVjc-KU4qjH~-%kjC<^fYH#0i-|{oh?%ngnt_%M*{G%Q*&9*iE-O8ejmn+Kp z$Si@MtNt&~Pq}j7O-*X9dA42G`(Eoealqz|muFqs{;q#yPwBGSJ*wJ~nfr=VX`MgI z8BnhdJStiom7OJ3j&V+(IlOIbx7dWZ9tm;r-Fn6K?A^0xzqrIMef#u?WF+=V?3a+x zE51*U#J)Y!BfWa{?vdUrJ|m$=B(+c9)Hw-#BZ<-ADlU%L5-4l^-;_JR;QikboA`=^ z{p1oTtNxo;)c;Q|*I!BiKiB+UvHt(1)Og8s{#^B6vHmYvuD=xB&sF~w>;GR$jh9U4 z&sG1m7rcGXh$r&jt@BFFvp;(3k>P_bf9OB+mi&Fs4f`&wziH!VV@t+bp*vDa;ODCU zK3{&YX3&_%ou(AMJ8NUn*Xy0nj$VA-8!7j%+A;FLqs>P)I#Tjmk&coj@N?CF`X}?- z^~tSq>APRnYg821zuTBsx9?8B@^5bPU6Hd-`F7g{C1b779VsR7%?ICnpkqBPWB4vsCA+g8i1TASR; zF6dUR)4ILC{mV7vR;^ZUWfyd-7HHijcE5hG+^Utzt?YtsO%K3ad3)*66<^4$dV$=^ zF6cHDGaGKrcAqYkTaszq$}Z>@?f;8X=ZkYX*Hh$c{S*Wr)^>25m}jPW>2~7M3Ucxs zr?FG1p8V-hhum8G>Q1|Q)21xVFNiGQ*m#W7)2Uqfslo5=yl3W1V;*c@E&RZ3TW90k z8Sf-v=Qx!q427ekhm}mp=&X5+GssWRJQWtIp9k~zSkm*7P0!p&L5f`pj8Dx@of{!_ zUi#L-cKDZH>t5;JjXoChHt?T*I8B|{dWwos$CLw?4tdBGl^!om-;)>Gl=4#(KPt1z zF-}PN3O5Y7%NvJG7>Rzq_9!w`4G-oo?IfnobibUHui*=`3Kr&>Cer`=%JJa1!%7Fy zmWWsFU#hAH^Or6g)6~Yx+#ifL?)%~;{9v9{P9G8K0K{t(A=5q-5naQH*99upaa@fX zqSDeDR&!c7EuB`luWrIvfw@<2p=kZ9tt~;MC@+`j9n$Yshwp#zja$ptYdqq(nu{B! z3ygzZVRzUK_JNqW^_==t_+WI7GsGF{G;;1oI$|dCc1|ruHk%)>ZbH#I3+9LLOj-<2b0Yp$z>nI+-v&!Axak>oAsUsfGx7b0#745S822 z$TsAMDD^*ut+uK$PfBBTh5Fwp0advj|G)CHtd*Ws?HM2LvE%Ld)XZ!w?D+o}*K%v^ zgX4e8;<+GhcurPUB&~oIeSX}i2shE0Y4ot@ToE@eGy62f*EC=@bzWX1HJy8(xT&f6 z^YcsC&B)A7&sm%wr+o!>70ej-W9AwSgKFY-yqe0jmxqwa4_aeCS{Eq#hUwo-4yJF` zhZpy8nW%PDtdG_=;RM@3>AE(4hUa7#ZF|fOw;h?M*XHM4i4a0eyw|%XQAJQc~7|6567-cFp92AvNE$H zYV&Pav#1>h?bxO>k&Vetk7%A$xGQk56^CDelpR^eG+arBP>0fLB4yXOKYN_ z`$ef)3zaaHe`&Ghwx4iX;O4VHyy~C9a8w}H|D5kz*ASjv*ARx*a!!KMkPvd+P+{n( z!cNr+JB126g$u6_FKZK8c6xZ(-J#`kLd*Aum+uHKpBXx@gW|I5y-(E1P>BR)6-_9n z5%CzK@i~hkQ*&%vG3AqtgAMqTAL~x}U5EK>%x@#0CBFZbep^5rZ6|39^YS9u1*225 z(+MxO9^TYOqxN3=h&Ai@p!rhV$-Or|7P~*)H`ibgbgu=s>P>5w66TS77O*mlG5Jxt z*OBh_xNFa~@~wEZUJCjP*3p=FCg%eID=eH2>0F}(bv z(29*FzT&!>t&E~pdoX`VX3SVWjgH;GPEn`UT=_ls0c0%Lc9j4A{<=TjjHHfpN+2$x zk9oz$m6kIn<%Arz!BfU0r3}x?Oq*}YE*(ev5&5%j)fP5kwhtML`MZHKRq$w|b*(;U z+y0>MOFxwnOuxO42@MOo+rs@!IJRBe1EYUXguWt+F^LqQY1eZKvQx%nXL3^!%}W9f zwjuIk-I;!j*;Zr*=Bs`GY9A!WK^x6WUZfzJmtlvHmxhEFjt{#}hYG8Q3#XRIPgM%fsf>foi2PW0%Fh7IZa~^$-kv&=fAtgP2W>Pz^VC6oJ4G9` z%g>EOWNGVe)*<9q_Xg?@w}uK^g$l=q3%7@tZ3-`+6J9YUys}1kES7SRwb4kh?crw_Rb2a3Paba9sGr z&*KCo%2#ABrazNmG>^xdGUxGGQqJORhcV@Q#-W4zvDp&{_wwSldn{dRdJ&!)X!ArH zbFPiMAag;=n2Bt&WbgoFUdmJrN+`AQ&q?!%@M9gE}30)CXN(thNA1>x7leGS}S?YmdK(p5{ir`{NXau+fcnKcvrtAu^l zoGi9H%v?z}z4Qdrw3#@16UT#WF4%l%pP{TYHNou-NFy9R=DSy#v=#}vSDGd+EHH`E zI*xs(687b#N$EQM$Je_vj_|{Yp~3;-!d{`mf17DB(r($tF#ne)hF4S#uXsJYa!a`I zz0fK*wCa)2st?bjFkA=_O5I!$EeEyK|s>LPREM+dWRE6RzjAA|_v&Kl7@G|L- zmR_5Q$I%Ul{8_iQKT@U9wvl7XCxssA)yeTcKHs6{q$?C3&IuQ$hL=qVFCP(J(I>pJ zlWB8y4$D$yqS$wdDvV<0*Y)$EIc$6m{cc*W92|1LBRrL#?RWeAcoPEUN72RH6pYud z2;-wg__M{IrACPg#!owpd6gP4Nm9OT{5^jD`1h9)KUt5d%}w<|@%Q}s;oLPvAVlM5I?1z(7aSdO-KThUZ|B!Ne%#Fibu92%7~9F#(W%%kNx|F3yLE= zl=y64?&^;o34#0(RZQ*1f&5J=$jSAycPMe$vfSp!^-LfxqKO$6jLWP^ip%m4#;{5n z!?b>TI$YQ~T(}{;tV(#9?zw_vNmm+=RA9O098Fs4@W(Wvz{_FvZP=*YtFe^ zSRP9LkN4MQTgr%&bxuq@8)u1onJE!%07lZy&csiO-_~^#8gA)4vlkcBz{X#Ynrqgm zKcTK|Tr2#zn4hAGeb1OiHZIO26y#(_N6AAeR~y%XGUB4Y#dF{h5$CMs&pf&6O()lzZf7Y#C3$Z-#M;OORk1Wbe zi;T<6FYxXm)u)5@*(Y#QjPk~WA3a}G(l8ww6LQ!1Vc2}Re!ha^N-X)hpk%)McJJlu zP|DG^{rzRc*P8fN+xXH_7o=oxPy7?=%+A5-geldj|J|7ybhaISBL|nJS{dLp)c_uE+ z91u`i+mX+@xR+aN|7(9f@DX`!=&$KQ%)IN+OQ|fcHdp41fy=%E&nt?bA!)cm-1d+z z;P!?TojU+B&$z=ObAWq1WPElfL&i?`M98@2vb=PTg?ffw&1r%(M>-*$k&fj^qIn*r zn*$qaY4zY7p4l-B1hoR4dl)uR*FAGvGhh!$yK#HLSy1f1*`HngMToE~ajsMcI5EGaL{Ihb`c@hL4*ooUxfx0ILu{)Rd) zQVZ8&JzAS+&$DbG|K4+)Q1m%aEdDRVTq>8c(IxH9tpQaRjOh;T&#eRVVN+NDTfs$e zD3m+erL!14?NR4r+>;^w)Sctor@=GOQ=iURkhq+)A!be?JO?g=>ch+7HE;#I4Pxg$ z1kZFN_wH6jp6UCup_vBud7bA0y-S%Hd&4Yne|uftgQ z28@RaSM$?f(QB;u8$1KVI(`ip%1rSKo<*TH|n*WjB_XBysu`=R_DfP2w@ z2;YW%DZ72JAC&!Z@E!DHef>oEF8WFEUvNF#4>!Q~pw2SLpUyzMkN$S}0aTqFfS>yI zpTQ5&A4MI?eGT{#`kL@#I0b$Jr^3(RG$?m7;D6BT?8%pKCj1(fKX!JbWNrJ=SlI<> zjc9yqYwW!CmW#f=(KlwElM0$232uXZLD#k)Y@#f^XObbuKC4V5{p&C{D&+Np5Uh%U z%CQ!#gkHTX2Db3cW8qQgTf?d_3G!^o%&GD>3O)0iI~__t6Ee@avtVs_7OVp`?lA9} zduh457(Ht(mjJqUp0FAq@EwSe}b&xT-uOxG^7nVtmVx5 zPvPnrJ!?9*3Tz5>cB>ie1ZCd^vcGKBbJ7n+-va#**b=5g`kYy>(dXQS=;cn&Wm=;@ z9kziRVO#iH-+mKphyE^KzZJGee=qC+Ux7TsbN>QKllvwlP3~JT46FM6pbqSez8NH~ zemhoe*ftw%qnhK(YNLaUdC4~V-*)T8r!=T-)-q4ql!xN8%&I%@*>lJ|hgKey8^$H0 zx|4s3$6?GXFLW;f$CW1+dfNrc1j*9VS(s=v`bC&2!gt9`PjH*38C zQ0;UOJRi~~T*iKfHsSsm4uj>7CsW8%f8-ckda4oY=SI$Cq#2^?9CK~^=USY3&#*(f zr!lHJe^>a|BZyD=9tqViN5P|^@}c=@Gjhs?8Ug3vvhvjlUg69`Y~ngW%ssjwlm>6(UK>6#9og)^Ya z??lL4Y20a^n~8omoCTR%oRi>JFc~s-8~2P&hSj0M*V_4H>={dpp0U9>1$`r!0_n5P zY^Z*o3cEr1(|w&tnjQMKo8{|sVFdkhm;uj)^We3<{f#ga{Wf?i{5{04yUVwK87@Ho zF3g7eAz`{z{C->wo`zoIZysz33t%g#e6;o14Jv&Ja3SV>eEk5p2>n2~7>a!tOGBFEuqT1HC%_j4ZI90)tAFQa6KFeH$ctda<7zMf&L_4e+s-3eG0q^royXX z0c8GjmqX@1SL2rap9il&zrojE1vjC;8q%-a-@@zQ-SB!?1aE*3L;2qc>31&cWus>u z?A(O@HFz_818#U`5k(V9rwU#a4Te-aPEclOXogFzjPQU{I(rSo7G-NXHsX|cPwpY z6ry=TD=f9+?uOFWbB-)~+Xhvy-g%FZ_P&g&#@{9W^#kOYtUC|FW>9sYwzmU)EBFVf z`=^IsS6Bqqh98Fg;Umx+4|=1sWu^N>trs*$wT#Y9YD3-`kWln&Mh(m~mr6ZOSW3%I zD08JnCH(|?^@}H==FX>}()K5)v^@>~3ZH>(2;f=R3;r2;Y4hfFub%Awi`Fz6v$R(- zphOzIb0TG@@dd(E8h6298h4{t8efD;<4aI!d<80ve}PKlt59it4JwVV!$V1li_n_+deW>>L0qiS1b+7h%0Q~^?A=DW65!C4a37ic-g$v-n;Zpb+^wQda zdR04AE4A%1j((~(sXYg+o7zR|{Y~6>XH>Y~Qo>O6kXOtV_oaj@)ysL)|B_#xP@M4Agq*C|HdMxQB47!*2+$9#r_ve0urP zI?x+`yn9*gBWu4U6*=}G%1u3HGOIq~LhESnTujJOnM+khRL)YhNCQziwV`6-e#W#H zeg_dK+t_H?DLn7oOWENy@WX59hsR#A39oT9Jgp^KN5h+~xEp)VQnV(Pib1BDE9PrI zyrzD5+-I4#!#d497B?-R#wgZnetOjo^m|41`Qkcf%yYamEg|g_8KqSS^NCTd@vqA^ zFxZb+_nCgw4yqruhw4Wiq54rLsL@b$r?%V~eLvU*4uY%~&Dvh}lhDVZpA5UhQ(zC6 z0%e~Hd!o>T#CHDmaMG+g9O0)u=+8UPQ?@_W>c-#kW%%>X;gs!fyzg&fDSzr)-kF+E^h`=6 z%#?nq6MTQ%8&Jlyb>DyRURz;!XJyI`gZl}S<`exeW|k9%cLt{HFp~W+PWHn%rJOLl zvn^$Zk?Myr#}6Z|oG`pID`kg~;fFET4`W^#Va%pHyt5@CCy8sR;5aeg4`YEJMmE&g z&HCHz2v38jrOwaZr1V-QmNK`Z41Z z^R27B_nz<{kX)MQcM0%w^o+@FB@&(pYeVj#%>4vowA&6nW3<~HvSM)iL)IVWSuy?2 zorIpexF^9uFar*Tr@l0ujd_Ny!EHSH8gK$+?ljNPnWM}z^sbOO#Oyts0EeNctX;+< z^URzvK~I`p`l5MePG2z3%xSacnfVGh6Z?zcEO;e63El{k;a%`#_yDBt+?|j)%6%Tr zhOfg^_%@saKZ0rSYnTqJRx)=)JUU)Tp z0&aw_z~92R;5ASK=q6YT-T>Rd8{u*ACU^p5?cip@&CrFn!1eG}cpIdTx;x+&_$<5~ z?tyo}FX5fA>QUaa&|~1;=sUoBVJ}GEcE`f|;cU1Ko(8wW^Wg8{diVg;@6#TF55Xe% z5_}lG2Ooh|s(Q~dkA{z-?+71<{ozh{0(=6_hEKu;@F{o}dsRxhA$Eo@p&tfcg%jaxFde=Qm%=yT`S7ps8u&N31@3`6;G6J8 z_!fK{?uGh&(%Z0Bb?@0;Gx!eruJB#h5B>{IhWlYAd=D1F58(#*5xf(A40pm$;9udV z@BsWb4AthqwfO$1N*@*;7Ir-oB_XuInd$Wr4WYTB`^$chK#-Ly|6Oe39Gc*=#Tmuu~HLwrd0{g

--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 sc;Ymk~c%kLbls^nUSoJbdw+wb)p7I+WJ6M$z~p z3Rob7<7Ya_H;We>{pPw)b?e^DuP=FVH}Tay#UAmQiJNlQGDGS54ePZa#`MP#K}4*qOXaw#Jx;%NE?2kOlNoEkm5IWU73bkI?wFAMI@Q{3)AxaYxUofR})vE z7nhbCMzPNs(ci?y8HB>zobV`lC~@s5BQE-D#E6n{buz8$P~sX&XO!~ii}n^Vu4G){ z(f3f|T3<$7EQ2F5OU4y{DETsdv$c1+)Ss{8i7Us%m8E;qyxf9RP44c!>2JxK8P8XG z@wIb{)A`$!_-2{-lClbj?bnazgrK3*^k?qD-L*T0{(hgrSR=K|w|I#p-WyE3y7$gX z%g#D0l$bj$FE@t`A-UK3`9{**1po4D+?#b6OOxaPHQ?)vZ7-*>1Cw11$b zV!&SD_&3iM@<^jpI3li_;r@bTZ_J9xa2_rztrJOSSKQ03vHvUWE$<;;X0JWKh`kiO zl*&!}RZ=V&_IuW#W{21rpZ>jbE0 ztyQdsNE4(D(iUlb07-D3TWDUM>;rqmCZzM0#zm|8?*1u(#9ICn?qDb{3|{2P<@7SaGuBL z8E`%H3FuW;T_A1D>Iz8<>pAxsFkQeV4Y~(#%258WbM(C-K8{ zXq_lM+pkZJ)u)xz$E-emAlf;NqCV0FeFOT`DURFYtX5ppYEg}7ugB2>j#H~c>9j&K zO1_n6-;CXcmMS4sOHA8P%3`rT7qeLWG^ahDXvL|OqMC7~u%z5D(=lu9#HX}KwWWX5 zSFb|3>FegOSU<$kD{oS69=ki#8HVbFDAuNBi{^~QGRnw()({9ktBAz^#h6Rcww-=P z+qSEsSH0*qt^j>aSO|}W(_vFM6ZU~}M<38x4V$)aF&5ag5#4*))V*U*-CO6Pr|zve zFb~@NKL^f*=finWLg^#pY5yeajq99UK)vwn4Em+F*Lb#F{^+jJad>W)2b znMN~?v_QH#ZBu?-^AQf^N6Piv(V;1CJ%DnbhXlgUQ+nd|>!9PsdWv+Zyq|{tvE&)_ zH8Fn{s@$K0O7#n{9aOo*!57i1UA+ty?kjLGd=-v>TVN)99Tr0QWBjqUqG$ZEXz%t$ z_y(lx9DB;ldJ{ciIC|V#Z=uJnwH-Dk!EeJz_zsMP3RiRCyXZAm?11OM_u#ou_H*F- z=r8m1OW?oIYtGsU-+~{&?Qj?T6w2Qh@I&-p!jE8A%I;&>4a)vR_zC(Up8jO`f9OZR zPvKSYGpJ|tpTpH6{_cRg(ccNbfU1)(;WwWBw{Q>oqo_l#y(N zDNycCh5tc67XAQFgFiyI{WYQ#O7{;>!YX7I(qu1&XU^nP3ss)Te4U$+O#E$^`f)ZRQ!7OdMtXKBWVm}`G4TPVyDmRQzj$*8{DIO~hR)wkujsC2Yobj6b0%yEt zEOf@}1lSq-F0e1`3j2Bf26`M0se7k=_JHT0KMAUx(iZFsVQ;t@_JNG~Rw6v`c#=$> zx+CsbgLCGtSY#y9*t^bku1)`3j2rhkYe4r;jyjsZ^S$f-#HV}@fa;e6;W1G8*ZedH zy;dcIp<2dJ7!QZRK5#f321h_Q-OWj#zYS>(8IQyvEyLr6&da#ZR0H8>vx5j{7UojP zgr{_khDz5dupTt&8iQWxIu*VE$3m6gX^=V7ai@819QrMAJY&MCh!87;MsSF7or~yFM=cBC2%BEJ~S_j z=}_Ti!AsG*?Xe~8t|2vT#6E20vLzQ_m_&4;;;gwLSz6y4M z%V2-F9BK}id!_tp^y5AK1b7YlRJa1BLFPSYZOgo8&qM!rsBugFFMuo2FZ1-*K>Cxt z0$vZVgEzpt;f-)3q@UT3LHU0Y-i)60v!iESY~6zXEw~!K4R3{-H*SMJ!P}ulLCAj) z-hrNVg`;l(??itL{0D3V?}F{&8mKkE-H>^}ao-c(gP!rz(T{>_(I>-oknzsC7fylq zLHeh4Kcs(J8=%{^BWbhR>u5{rO#6)vJ3ZA)tLW zM^)kPEbsau@=VsPhhbx=I#Ant1ikK`9)-Gp+6ddj$DrEq;<%0lUhacBuCHCHfw457Zd< z71Zee4V(!74X43x;cWOFbj!09^{RHLR%+U14Ee}OY1;){BiGPwb!iumNevq{U|rJnaPaW!-dw-?%9oi zr81YQh^U;UYLEt^w78FP>ZTS{d*KkOuWTd3WvB4mvl(TFSI-Ntz878tFT7*I;b|?= zEF9iM!gJ4F(7w5riauHP({_%7C*X#4nlnbRPV>^McA($Tsm~YJ zIb)yYp1TNGo4v5L3SnMxRCE06l678*eiVgX{ir2WxwL}n>usR=QCq0dP<5xa+zx#= z*dF$TF>sh?KLU0@KN9l$273bR2va@#G}sA!o~JK>tTUbYyE808p8)52_8RY5e>!`B zihmh;_J8cIt7i-wQqu`@jQ_Rb}0us5DLA zQyrUmv-KgHD;;Xfv50$KMZb-8l^Eq+Cy{2=VSg{}et+(nld}B{^8B$!=H%J$&pj(r zw!h(?Klai}_*36<&wT{K=O!v(ru0j3PvE3;wBwKaGS9#NURzXd0MsIgq_UH7_N+w~#ixZMmgjyvmX>};+0u=CovRywBrYCh4L zrubeviDvAcfe1L~Ar!y%F1xzTTRY-T{EQ8@=DtYS1QMq+PO+wU_M+(}_DPu2W}RmP z%pZ0#`c_cm0b`n-1qs&a_if-D^rY3<>mcvWUVnSI67y(yJB)$ai|YU%gS0iLA2To6 z+N16W--qPVdCtXHYk!BHvCFOyaG!tIfZS_1>u$y}I|@BxncV?0v)bJu^R)B)miFm9 zuO%cs);T13ua!+Cdt-=GM3vf!-;S^ zOoJc7bhrm*zp+6o@hHc;!sCPur7VKW|3^*80h1yG}-P;r4G&mLJ zz!@+X7QsAtF+3Aq1@qx*SOC|;Lii}04xfWF;8r*j{tMFI?A>rS+zZcwM^&_}vteC$ z4r~g~h3(*ZunVNE+KJHS|H-fjj)!w$I$Q|Pg6G4F;Uah~ya3(%&tqG_CFr}urEnzt8=L~Kgwx?wa1mSvuZGLv?eJ>29$o`qg)86=xDtK~ zSHT()?lZ@h@CNif;EgaD-UQEpH^cMbEpRbh4OhWi;aYebd;!u&?YH0^@Kbmv{2ty7 zBaU*P5grfMqVELP!6bMuOo8-m`wVzLJR3d;uYeE1Tj9fSBYXsIgO9>b;6}I?J_f5- zcAx#VgqzTJf=|HS@SkubdRM555BH zS8<=MHHTZ#cY)jBQ1}Ks9li#4?Y0jhtI)(!5wfX{2YD&e}cPU zwWHluXThJ~B51M3Uk(HCW*CHzK*nDCbyyL84lBdGkoyC>RyEFD z!j`ZqOn}wk5Lg|Kg^byD7OVq{U|qNb)`K^~`fvkeZ^eEJ9s{?*hVTQ(9*eyX9t-PN zcb~yT!=~tyU?dz5o56g@y`p^~Yynq5<_P;v*b+VpTfwdH1o#1L4fnt{utE*yE7%yu zz-Y+aV)ulxFd4?dG}sa5L+(lKIWQhx1v|sLU;=y!GAG&ZLiUF2FJTWDtm!@@I0mvu zWVeL9U;^w76JZ}X9`=O=FcDq^2f$@;AiNU}f{(+&@KrbjegucYf5Tz$s9MZ3upS%* zo55rl14qOD@Dw-}j)7V5R9FPZ!pq=ka3vfE?}QWJ6EGFN1t-EiFby76+ubv71T)a< zO+1;f2Moc{kh$1Shm&D0oC38l%7)9}GqL^vCcfM>xFJR6<`nfvXF;JI)mJP+Op=fFqcJoq}C4?ltn;P-GLtWnq9!)^>0 zp>Gc_fZgDQa3s_ob{4!C7Qw}E8N3|c1+Rcl!X@xcxDOmV!+*dKybGQKxi7Vsz`NmX@E-UWTno3sb#OPl7e+L2_cxD$_oMFs*TX(=0~`e( zfSK??I0te+Y+no?hRfk2@HY53d=PGe&%-C+PWVswJ$w=#eT=(r*AzaDJ{mp)`@zj{ z6np`m0bhi3;7f2Zd>P&ZUx91ktMCc96}|?y!CmkT_#=E1)@|tSrA5K*=)1wU;Q;s! zOoi{mZ1^uYAMS+9;Ro+T&L3oD@S2rI$?Pq4r}s!G>@M zYy>Al?YEo>wcoN3YQJSE)PBnykhQhF0cyYGW!M7lf>H2WsC|-ZP27EwM(_mmZK3u> zPK4SQ847uhW~V{zkIaDD7danlUt|T0gSSELk30^w@9`qke#cIzeU9&;_BoC|&fVu| z3bnt{9%^6XB-k5{hJD~v$UT5P7be2xFbS@K{oqqjdk62p0q`3*5LP>$c>uP6gJE~5 zy@HW&D4Ybjr?6*1?Fn1}Plne(?G4-qN5V~T6nqJ458yp`D%=BgKVP9K^8joNbw3{q z$HP7_1&)EbXU~Lba5_wf3tDED7|w(@!dY+wJCx zyTRMxaCiqyfp@}b@NRe(ya!$Z*TP%iI=CL*3pd02;9Ky1_$ho4eh(jlwWAonVJr9u z>;fN!L*Yg^4n78_!hgb9kb6}768IFn9zG4%!e`*q@LBjed=7pHUxYuxmtg&tjNh<5 zd<7=LSK&Cg1?Irlpf<%{hnK^x@CLXIJ_6r>&%rn0cK8c7~ z;J@HtxD$?tAHjV1F}whN0$0NSgZINv;fwGy_#XTm?t!~u#S<9UVN>`ejD~w)clZ?? z0>6b5;dd|}eh=rt|G;H%FT4r<0PlnQ;3oJZd<*hi-u?MC@ zuq}*+F|a%A00+R>3fBDdU}yAKLe3@Ft6>+o0d|Ei!*1{$coO_S*b{2Qk3A5(KI{!! z!9K7j>$PXxhV3BdBkaDA z^AYxGa1_jg$#6d8T%&y@WG}|P1@gWcdjsSgg}nuih3`T32<<&^9Q+B6hsQ*-u7_P9 zdpPzem;dFQgWY5Sx8_tAF;4HWb&W88EbK$e_Jh&asfuBJeR_efb4(q_VumxNQyTbF~ zV7Lg5hZn#+cp*F&UIZ_N7sG4dC2%dg96krHfN#Sk@N>8nR*7XihYjGB@C0}jjEC32 zK5zv*4PFa#;B{~g{5!k~u7o$jRq$ST6MPol47bBu;Ae0(48}2@!@5;V$?b+zX$Fl{>LchmGJ1uoZj}_Jps(32+OX z0bhfQ;OlTX+zS5zx4{SD8}NDfCVT_F1;2#v!piZC=ddY!4<^9(;V}3wmbkcn({_FJVWx2PVR=;0X9NoC3dt^WgVz zDf|z-1MYKGSdn#R0^>Ps3@gG;uoCPIBj8BL9;rP6R)#ZRHF!C! z4zGtb-~+HGd zgv($vcoS?6H^3I~IT!`E!6dVrUhU_`pAHWfCFB}Q0cW3;DO<^*OgQH<0JO!Qt$H3F!sjv`^g+=f* zcnKT_{|4F1wpYOvxDK8UAA=L%3osSF2`9o2VH*4jrb9hE$$-^hCTs*luqB)XJHpAZ zC!7L@z$`cxo&huARCp%LhUda*@IsgauY|eq2ABuez%$`PFdsex3*hUp5WWMa!w=w0 z=sxf5$8)bskY30Dq&Fh7p2$hai5?H6H*S&+;78#lA_`mYz5KP5+x`cTKA0a!bmm9D zV<~MfGl{}fnq+UxM5SNpRJ^*Ds7&NmqHEb3y`g?Dr}C0}oi)~V2c#XMa|wQFgFYJ3 zZ&@Xs5V>oM$WG7M2YMoRiqH7h*|d>}>Z2Q?cy%rF!HDuO6zPoU{EPI8L-nS!#75*^ z*D43arFi64>GsE^b2KL-V-dxpIARgy(VVdn7z$J6+6qxvEfASWlt0if#?uci8!fxGGo0Ei?5YxgCe7UCT^mnS!W{hasmR>bvqUzmh+b zU$vLtneM-bM5%1Z6jUslGi8IMa-V^>)+5c5HZ%3t-T_MrMwc@;4MPK)}m%0z8geOLKV9wh$_JGI%e(xN`4x-rzX`l-JTO#f|*x$10`Cz?0Z zN0dL+m-K#79Z6J2>Srns^+&l^KT{m0?o7W|9GXLwR@wRO+o3<4_NDWoG^wv^>eRc~v`-x!S$zzpS!rg?TEX{75vWD9`bT`c`{H z;iz4xf2%F2&5S{0r*x`M$&boMW-8kQQSC-)5|u8wGgO_Ka1^K9D1FT>|G8549Yq11 zPjpm}zihKRsvg^G5nSmRViikgrB4cfZzJHj+32w{20w6J3${jvBALj1WCg-=U_E=a zzDBAMNqZy-$wbaUcut~c6WYJmp1D=6g0ttV{Zr?iIyPK}u#cs^Bki+jZ$tY7x>whI zDjNvwt0C)=mynN;%9YrQKzbu%ky(h|MZE@j8u=8dNG9Wvp-46|A6bd4N46k3Csp|< z!a;f?QpGihBvHuBoR^1#O=Kw>|oy8 zrnD=LJ%rc;ar063H++cKRvsI`D)1QS{su#1hx;9%D9qjT1j6Z*pN5E39mnqyr+=#n z$9tJp{@Y_P5SfU~lI0&n{e(KUN{26P#)}@LcNiH`o(6F(zDxrVU!(tuA0T3pXU?-E zN6(ob*WA-rVN8&_D)eVj^(t2K!eKAW(ZB4Oe@6VW|G;yvYso&3wb4jl-3xz}=YN$K zUVX|`_NRFMPxIoB_QGZF)3LwXGuJswx!>T0AMN?S+%xByyJP>E=YEi9zub$TvpA0Z z$6mNR6L9o>JohJg;f(aczuYtb#`DMCw&Q-bXFl6=zrdu&a+NvHBiL^($B1y;yBn6p*6e2cqF|rJ~ z5m|#ggglLGL3SXYBAgM^`7WK!a^CaO8pb2Nk)g;~MC&rn-dKwet<6>&EjN&oeI1Z#Lyt z!C6QYe`wJ7aqT=mJf|~$b~=7aew@(waqT=mdgkWKPtbBdSZ3TRk3q|G%kxve+dvt4 z4|r~4vOoG{;&I)$@#wkl@m`vSQcr=>AO9gu#-D5N`J=o|{e}#=q;%^UwJKlg?~z@Lc~TKeA)|x%QsF zwBj*U-@gf1Wq%;Y_;uZQe$$KNjATI*u=f8*it*>#d;T(fW546C`@$0(r{DzAC?%2<7_%-+8`gh%UekT?ComiuEyx~{LhyA*4T)%NF z>`a~P2>UJh5e}1H*WUBTd~DiIN=?OC`~eN)-Zl5!`{v*+j(e47$q!!`f3Cgfk2%<+ zFR7NvTgeYt7=Nz4=Z|^V_*)nD=lc+auTQx4ow7mk?#uoF zfbr|Pas76r@0qwJvgxJuulsd(nY-(M*W7bYpEKpB^+Lr`n}NoUYv=j#jq$eQXa6`{ zbI-jqM%SPPt39)EXCilyqQ(v0$SG{V;z5KL+gu~ zjkwl5YbKT1o@?EI8bwplPpeR$Z*;()pMG+$6qc@x-Zian6|$Ks)o@_x-4MdgD(stE zn3y~zEk7?QG%YvAe1FsGnh@WyPoMsbrBWu$vg2?%n&U2;zoplx`^7OLKX-C|+B7S^ zYf_hlKAjo59QE^Y)Y0#M9HqU2UlT`OD8Dc(R1jnCk_)V^{rdFj(nV*0rG7rX2G0J4 z+}X&%#Frc@EaZF31y<+S*iLcr34Ig@>gVIDVoh{hmHnq}q&_KJ;B8Ju^D3 zYv*p!@o{OLqPxXr#71|^oRk(98#gH~ty|}wR+s*LllpW_QgKE<5c8!eqov`Hi!Wp+ zbAEfdpOO*36$`%u-|s+n=g|Hy@f&*AveSO&gag=d{xkgUalaG!)4Q_y9l?G|c6xts zlhTERx$N}L)|dA4<=W}Jro#_lr+15vj4?2*Y-V1afyUd@l(|ddl=DH9Y?NKLoPdSBe*cYTsnqDwFHO1XtP00`OJ*kw^^H}Pvg!ugo_cvg+ z^Jb!y@Jtkw6e`G?oD<5A$tXAyaptC=_PKg=bZ*+eq+|bP2{Hg87kiD$j zoRen6$0WqW#q=pC2u(}Rp53RgFh7egt1)37nKb#z!NjS#?8wEYHO3JN-K>(1bnr*G znfR*2ELuvmOn$So`$vAh?~eaY_u<-6>SV4u+Ubn$wXrSduPlM3G49%5Wo!!6kl+7V z9foG*OjS3rI*cBcn3gdmWOc})Cl^>93i2~LObMlBhVs+1b2Fy829sDK7Ietyp2Al} z%O1t1WEJwo`-}pu_%m7YJEK@>!<79D3Z~@FoRpjIbSNk4BOgQl>j8<%9|+g(syMB`2jcZ&FGtF)96Sbz`E> z^5!S4RO%t>rM#Iw_--SY1SG5v}GF&KCs2f?sb1 zve}TPA*+iGm(=>b2!q(6v)e28XbibU6Xl;EeG8Q=v8HbEVQV^13aSQ3R zUbTF!$GIJI?h(||)sofv)ne6()uOo_by_^PC(hXs?Ncd#x-V>k9Eb3F7ON=|i8Mo+ zBQ209q$Sb{IRQ~#+aPTb^&IVkMI$jt2P76@OOzAI&U-kWd&tgQCm>xAm7(rgx+5nd zJ&==-o=7jGH_`{`izFgRNI#@MG5{Hf3_=DYLy)1!FhuwFCnKYfk;n*yTOj9L%qegT zaxiM*!8k5=`x}!m)S0Xj0eYm#YQw5*Y+*WPQo@X9U?0My* z-%pwK-i{kTT2g1_wcn}+;^4r?J+a2e>?U5 zg%9`tVpEg;8otZbAFu=tSN&&xJvFLJUezU^?5$mYV@&txL2qu@l6m#JcFLO2oC!az zzvvH`_3|Y7NcDO~r(Y@%luf=0E*qjB49>azpnb|W$ok)7Y|=RUV%#@&92+%CpUZe{0pyODbi z6Yl*jw^o%~oy(S6+4QgQDQ%Fln6T`uM4Kg%wc z^7Ee>P28JCJ^y|RX^GKtq#DL6kt1;a^RIJO@CY8L^qoZf-44n6;wKmS>LM*fH&{WD|R z5s%0mz$`!iS$_UgPwvXke;(cu_0JWW&PVF^NWaJV&xyp9j}#z<2#-tkEo^=FTHn0Z z_pbG=YklXs%=4de@sP2Acu1P Nb2|RZ)&Fh@{6Fyt^IZS{ diff --git a/HitBotCSharpDemo/bin/x64/Debug/MvCameraControl.Net.dll b/HitBotCSharpDemo/bin/x64/Debug/MvCameraControl.Net.dll new file mode 100644 index 0000000000000000000000000000000000000000..588d956d513be69d8731f9c65a890a9c58ea28a4 GIT binary patch literal 177664 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 + + + MvCameraControl.Net + + + +

+ 排序方式 + + + + + 按序列号排序 + + + + + 按用户自定义名字排序 + + + + + 按当前IP地址排序(升序) + + + + + 按当前IP地址排序(降序) + + + + + 动作命令信息 + + + + + 设备密钥 + + + + + 组键 + + + + + 组掩码 + + + + + 只有设置成1时Action Time才有效,非1时无效 + + + + + 预定的时间,和主频有关 + + + + + 广播包地址 + + + + + 等待ACK的超时时间,如果为0表示不需要ACK + + + + + 只有设置成1时指定的网卡IP才有效,非1时无效 + + + + + 指定的网卡IP + + + + + 动作命令返回信息 + + + + + 设备IP + + + + + 状态码 + + + + + 设备枚举类,支持枚举GigE Vision、USB3 Vision相机,及采集卡上的相机(GigE Vision、CameraLink、CoaXPress、XoFlink) + + + + + 枚举设备 + + 设备接口类型 + 设备列表 + 成功,返回MV_OK;失败,返回错误码 + + 设备接口类型为MV_GIGE_DEVICE时,枚举所有GigE设备,包含虚拟GigE设备和采集卡上的GigE设备。 + 设备接口类型为MV_USB_DEVICE时,枚举所有USB设备,包含虚拟USB设备。 + + 设备列表的内存是在SDK内部分配的,调用该接口时会进行设备列表内存的释放和申请,避免多线程枚举操作。 + + 枚举到设备后,通过创建设备实例。 + + + + + 枚举设备,支持枚举指定厂商的设备 + + 设备接口类型 + 厂商名称 + 设备列表 + 成功,返回MV_OK;失败,返回错误码 + + 设备接口类型为MV_GIGE_DEVICE时,枚举所有GigE设备,包含虚拟GigE设备和采集卡上的GigE设备。 + 设备接口类型为MV_USB_DEVICE时,枚举所有USB设备,包含虚拟USB设备。 + + 设备列表的内存是在SDK内部分配的,调用该接口时会进行设备列表内存的释放和申请,避免多线程枚举操作。 + + 枚举到设备后,通过创建设备实例。 + + + + + 枚举设备, 可指定排序方式枚举、根据厂商名字过滤 + + 设备接口类型 + 排序方式 + 厂商名称 + 设备列表 + 成功,返回MV_OK;失败,返回错误码 + + 设备接口类型为MV_GIGE_DEVICE时,仅枚举网络上的网口相机,不包含虚拟GigE相机和采集卡上的相机 + 设备接口类型为MV_USB_DEVICE时,枚举普通USB设备,不包含虚拟USB设备。 + + 设备列表的内存是在SDK内部分配的,调用该接口时会进行设备列表内存的释放和申请,避免多线程枚举操作。 + + 枚举到设备后,通过创建设备实例。 + + + + + 判断设备是否可达 + + 设备信息 + 访问权限 + 可达,返回true;不可达,返回false + + + + 设置GigE设备枚举超时时间,范围 1-UINT_MAX(包括1,不包括UINT_MAX) + + 超时时间 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置枚举命令的回复包类型 + + 回复包类型(默认广播),0-单播,1-广播 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取主机串口列表 + + 串口列表 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置在指定的串口上枚举设备 + + 串口列表 + 成功,返回MV_OK;失败,返回错误码 + + + + 发出动作命令 + + 动作命令信息 + 动作命令返回信息列表 + 成功,返回MV_OK;失败,返回错误码 + + 仅GigEVision相机支持 + + + + + 获取GigE设备组播状态 + + 设备信息 + 组播状态(true:组播状态;false:非组播) + 成功,返回MV_OK;失败,返回错误码 + + 仅GigEVision相机支持 + + + + + 将用户的设备信息格式转换为SDK的内部设备信息格式 + + + + + + + + 设备工厂类,用于创建设备实例 + + + + + 创建设备对象 + + 设备信息 + 成功-返回设备实例,失败-抛出异常 + + + + 通过设备IP地址创建设备,适用于GigE设备,不包含虚拟设备与采集卡设备 + + 设备IP地址 + 网口IP地址 + 成功-返回设备实例,失败-抛出异常 + + + + 通过GenTL设备信息创建设备句柄 + + 设备信息 + 成功-返回设备实例,失败-抛出异常 + + + + 设备接口类型 + + + + GigE Vision 设备 + + + USB3 Vision 设备 + + + Camera Link 设备(串口) + + + 虚拟 GigE Vision 设备 + + + 虚拟 USB3 Vision 设备 + + + 网口采集卡下GigE Vision设备 + + + Camera Link 设备 + + + CoaXPress设备 + + + XoFLink设备 + + + + 设备基本信息 + + + + + 设备接口类型 + + + + + 制造商信息 + + + + + 设备型号 + + + + + 设备版本 + + + + + 设备序列号 + + + + + 用户自定义名称 + + + + + 设备类型信息,7 - 0 bit: 预留,15 - 8 bit:产品子类别,23 - 16 bit:产品类型,31 - 24bit:产品线(如: 0x01 标准产品;0x02 3D产品;0x03 智能ID产品) + + + + + GigE相机信息 + + + + + GigE Vision协议主要版本 + + + + + GigE Vision协议次要版本 + + + + + 高MAC地址 + + + + + 低MAC地址 + + + + + IP配置选项 + + + + + 当前IP配置 + + + + + 当前IP地址 + + + + + 当前子网掩码 + + + + + 当前网关 + + + + + 网口IP地址 + + + + + 是否虚拟相机 + + + + + 是否采集卡上的相机 + + + + + USB相机信息 + + + + + 控制输入端点 + + + + + 控制输出端点 + + + + + 流端点 + + + + + 事件端点 + + + + + 供应商ID号 + + + + + 产品ID号 + + + + + 设备索引号 + + + + + 设备GUID号 + + + + + 家族名字 + + + + + 支持的USB协议 + + + + + 设备地址 + + + + + 是否虚拟相机 + + + + + Camera Link串口设备信息 + + + + + 端口号 + + + + + 名称 + + + + + CoaXPress设备信息 + + + + + 相机ID + + + + + 采集卡ID + + + + + Camera Link设备信息 + + + + + 相机ID + + + + + 采集卡ID + + + + + XoFLink设备信息 + + + + + 相机ID + + + + + 采集卡ID + + + + + 设备访问权限,只支持GigE设备 + + + + + 独占权限,其他APP只允许读CCP寄存器 + + + + + 可以从5模式下抢占权限,然后以独占权限打开 + + + + + 控制权限,其他APP允许读所有寄存器 + + + + + 可以从5模式下抢占权限,然后以控制权限打开 + + + + + 以可被抢占的控制权限打开 + + + + + 可以从5模式下抢占权限,然后以可被抢占的控制权限打开 + + + + + 读模式打开设备,适用于控制权限下 + + + + + IP配置类型 + + + + + 静态IP + + + + + DHCP自动获取IP + + + + + LLA(Link-local address),链路本地地址 + + + + + GigE设备传输模式 + + + + + 驱动模式 + + + + + Socket模式 + + + + + GigE设备网络传输的相关信息 + + + + + 已接收数据大小 [统计StartGrabbing和StopGrabbing之间的数据量] + + + + + 丢失的包数量 + + + + + 丢帧数量 + + + + + 已接收的帧数 + + + + + 请求重发包数 + + + + + 重发包数 + + + + + USB传输信息 + + + + + 已接收数据大小 [Open和Close之间] + + + + + 已收到的帧数 + + + + + 错误帧数 + + + + + GigE传输类型 + + + + + 单播 + + + + + 组播 + + + + + 局域网内广播 + + + + + 子网内广播 + + + + + 从相机获取 + + + + + 用户自定义应用端接收图像数据Port号 + + + + + 设置了单播,但本实例不接收图像数据 + + + + + 组播模式,但本实例不接收图像数据 + + + + + 设备异常类型 + + + + + 设备断开连接 + + + + + 设备异常消息 + + + + + 消息类型 + + + + + 提供设备通用的属性和接口 + + + + + 打开设备,默认以独占权限打开 + + 成功,返回MV_OK;失败,返回错误码 + + + + 以指定访问权限打开设备,只支持GigE设备 + + 访问权限 + 切换访问权限时的密钥 + 成功,返回MV_OK;失败,返回错误码 + + 目前设备暂不支持MV_ACCESS_ExclusiveWithSwitch、MV_ACCESS_ControlWithSwitch、MV_ACCESS_ControlSwitchEnable、MV_ACCESS_ControlSwitchEnableWithKey这四种抢占模式。 + + + + + 关闭设备 + + 成功,返回MV_OK;失败,返回错误码 + + + + 设备本地升级 + + 升级文件路径 + 成功,返回MV_OK;失败,返回错误码 + + 通过该接口可以将升级固件文件发送给设备进行升级。该接口需要等待升级固件文件成功传给设备端之后再返回,响应时间可能较长。 + + + + + 获取升级进度 + + 升级进度 + 成功,返回MV_OK;失败,返回错误码 + + + + 开启设备指定事件 + + 事件名称 + 成功,返回MV_OK;失败,返回错误码 + + + + 关闭设备指定事件 + + 事件名称 + 成功,返回MV_OK;失败,返回错误码 + + + + 设备异常事件 + + + + + 判断设备是否处于连接状态 + + + + + 获取设备对应的图像采集对象 + + + + + 获取设备对应的事件采集对象 + + + + + 获取设备信息 + + + + + 获取设备对应的参数配置对象 + + + + + 获取格式转换对象 + + + + + 获取用于图像处理的对象 + + + + + 获取用于图像保存的对象 + + + + + 获取用于解码图像的的对象 + + + + + 获取录像对象 + + + + + 获取图像和图形渲染对象 + + + + + GigE设备专用接口 + + + + + 获取最佳包大小 + + 最佳包大小 + 成功,返回MV_OK;失败,返回错误码 + + + + 强制设备IP + + IP地址 + 子网掩码 + 默认网关 + 成功,返回MV_OK;失败,返回错误码 + + 强制设置设备网络参数(包括IP、子网掩码、默认网关),强制设置之后将需要重新创建设备句柄,仅GigE设备支持。 + 如果设备为DHCP的状态,调用该接口强制设置设备网络参数之后设备将会重启。 + + + + + 配置IP方式 + + IP配置类型 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置传输模式,默认为Driver模式 + + 网络传输模式 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取网络传输信息 + + 网络传输信息 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置GVSP取流超时时间 + + 超时时间(MS),默认300ms,范围:>10ms + 成功,返回MV_OK;失败,返回错误码 + + + + 获取GVSP取流超时时间 + + 超时时间(MS) + 成功,返回MV_OK;失败,返回错误码 + + + + 设置GVCP命令超时时间 + + 超时时间(MS),默认500ms,范围:0-10000ms + 成功,返回MV_OK;失败,返回错误码 + + + + 获取GVCP命令超时时间 + + 超时时间(MS) + 成功,返回MV_OK;失败,返回错误码 + + + + 设置重传GVCP命令次数 + + 重传次数,范围:0-100 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取重传GVCP命令次数 + + 重传次数 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置是否打开重发包,及重发包参数 + + 是否支持重发包 + 最大重发比 + 重发超时时间 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置重传命令最大尝试次数 + + 重传命令最大尝试次数,默认值20 + 成功,返回MV_OK;失败,返回错误码 + + 该接口必须在调用开启重传包功能之后调用,否则失败且返回MV_E_CALLORDER。 + + + + + 获取重传命令最大尝试次数 + + 传命令最大尝试次数 + 成功,返回MV_OK;失败,返回错误码 + + 该接口必须在调用开启重传包功能之后调用,否则失败且返回MV_E_CALLORDER。 + + + + + 设置同一重传包多次请求之间的时间间隔 + + 同一重传包多次请求之间的时间间隔,默认10ms + 成功,返回MV_OK;失败,返回错误码 + + + + 获取同一重传包多次请求之间的时间间隔 + + 同一重传包多次请求之间的时间间隔(以毫秒为单位) + 成功,返回MV_OK;失败,返回错误码 + + + + 设置传输模式,可以为单播模式、组播模式等 + + 传输模式 + 组播地址,组播模式下有意义 + 组播端口,组播模式下有意义 + 成功,返回MV_OK;失败,返回错误码 + + + + USB设备专用接口 + + + + + 设置U3V的传输包大小 + + 传输的包大小,单位:Byte,默认为1M,范围:Windows[0x400, 0x400000], Linux[0x400, 0x200000] + 成功,返回MV_OK;失败,返回错误码 + + 增加传输包大小可以适当降低取流时的CPU占用率。但不同的PC和不同USB扩展卡存在不同的兼容性,如果该参数设置过大可能会出现取不到图像的风险。 + + + + + 获取U3V的传输包大小 + + 传输的包大小, 单位:Byte + 成功,返回MV_OK;失败,返回错误码 + + + + 设置U3V的传输通道个数 + + 传输通道个数,范围:1-10 + 成功,返回MV_OK;失败,返回错误码 + + 可根据PC的性能、设备出图帧率、图像大小和内存使用率等因素对该参数进行调节。但不同的PC和不同的USB扩展卡存在不同的兼容性。 + + + + + 获取U3V的传输通道个数 + + 传输通道个数 + 成功,返回MV_OK;失败,返回错误码 + + 该接口用于获取当前的U3V异步取流节点个数,2000W设备的MONO8默认为3个,YUV为默认2个,RGB为默认1个,其它情况默认8个节点。 + + + + + 设置U3V的事件缓存节点个数 + + 事件缓存节点个数,范围:1-64 + 成功,返回MV_OK;失败,返回错误码 + + 该接口用于设置当前的U3V事件缓存节点个数,默认情况下为5个。 + + + + + 设置U3V相机同步读写超时时间,范围为1000~UINT,默认1000 ms + + 同步读写超时时间 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取U3V相机同步读写超时时间 + + 同步读写超时时间 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取主机从USB设备接收的数据统计信息,如已接收字节数、帧数 + + USB传输信息 + 成功,返回MV_OK;失败,返回错误码 + + + + Camera Link波特率 + + + + + 9600 + + + + + 19200 + + + + + 38400 + + + + + 57600 + + + + + 115200 + + + + + 230400 + + + + + 460800 + + + + + 921600 + + + + + 最大值 + + + + + Camera Link串口设备专用接口 + + + + + 设置设备波特率 + + 波特率 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取设备波特率 + + 波特率 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取设备与主机间连接支持的波特率 + + 所支持波特率的或运算结果,单个波特率参考 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置串口操作等待时长 + + 串口操作的等待时长,单位为ms + 成功,返回MV_OK;失败,返回错误码 + + + + 错误码定义 + + + + 成功,无错误 + + + 错误或无效的句柄 + + + 不支持的功能 + + + 缓存已满 + + + 函数调用顺序错误 + + + 错误的参数 + + + 资源申请失败 + + + 无数据 + + + 前置条件有误,或运行环境已发生变化 + + + 版本不匹配 + + + 传入的内存空间不足 + + + 异常图像,可能是丢包导致图像不完整 + + + 动态导入DLL失败 + + + 没有可输出的缓存 + + + 加密错误 + + + 未知的错误 + + + 通用错误 + + + 参数非法 + + + 值超出范围 + + + 属性 + + + 运行环境有问题 + + + 逻辑错误 + + + 节点访问条件有误 + + + 超时 + + + 转换异常 + + + GenICam未知错误 + + + 命令不被设备支持 + + + 访问的目标地址不存在 + + + 目标地址不可写 + + + 设备无访问权限 + + + 设备忙,或网络断开 + + + 网络包数据错误 + + + 网络相关错误 + + + 设备IP冲突 + + + 读usb出错 + + + 写usb出错 + + + 设备异常 + + + GenICam相关错误 + + + 带宽不足 + + + 驱动不匹配或者未装驱动 + + + USB未知的错误 + + + 升级固件不匹配 + + + 升级固件语言不匹配 + + + 升级冲突(设备已经在升级了再次请求升级即返回此错误) + + + 升级时设备内部出现错误 + + + 升级时未知错误 + + + 处理正确 + + + 不确定类型错误 + + + 能力集中存在无效参数 + + + 内存地址为空 + + + 内存对齐不满足要求 + + + 内存空间大小不够 + + + 内存空间大小不满足对齐要求 + + + 内存地址不满足对齐要求 + + + 图像格式不正确或者不支持 + + + 图像宽高不正确或者超出范围 + + + 图像宽高与step参数不匹配 + + + 图像数据存储地址为空 + + + 设置或者获取参数类型不正确 + + + 设置或者获取参数的输入、输出结构体大小不正确 + + + 处理类型不正确 + + + 处理时输入、输出参数大小不正确 + + + 子处理类型不正确 + + + 子处理时输入、输出参数大小不正确 + + + index参数不正确 + + + value参数不正确或者超出范围 + + + param_num参数不正确 + + + 函数参数指针为空 + + + 超过限定的最大内存 + + + 回调函数出错 + + + 加密错误 + + + 算法库使用期限错误 + + + 参数范围不正确 + + + 数据大小不正确 + + + 数据step不正确 + + + cpu不支持优化代码中的指令集 + + + 警告 + + + 算法库超时 + + + 算法版本号出错 + + + 模型版本号出错 + + + GPU内存分配错误 + + + 文件不存在 + + + 字符串为空 + + + 图像解码器错误 + + + 打开文件错误 + + + 文件读取错误 + + + 文件写错误 + + + 文件读取大小错误 + + + 文件类型错误 + + + 模型类型错误 + + + 分配内存错误 + + + 线程绑核失败 + + + 噪声特性图像格式错误 + + + 噪声特性类型错误 + + + 噪声特性个数错误 + + + 噪声特性增益个数错误 + + + 噪声曲线增益值输入错误 + + + 噪声曲线柱数错误 + + + 噪声估计初始化增益设置错误 + + + 噪声估计未初始化 + + + 颜色空间模式错误 + + + 图像ROI个数错误 + + + 图像ROI原点错误 + + + 图像ROI大小错误 + + + 输入的相机增益不存在(增益个数已达上限) + + + 输入的相机增益不在范围内 + + + 输入的噪声特性内存大小错误 + + + + 设备event信息 + + + + + Event名称 + + + + + EventID + + + + + 流通道序号 + + + + + 帧号 (暂无固件支持) + + + + + 时间戳 + + + + + Event数据长度 (暂无固件支持) + + + + + Event数据,内部会进行一次拷贝,将非托管内存拷贝到托管内存 (暂无固件支持) + + + + + 设备事件 + + + + + 事件信息 + + + + + 提供设备事件订阅相关接口 + + + + + 订阅事件 + + 事件名称 + 成功,返回MV_OK;失败,返回错误码 + + + + 取消事件订阅 + + 事件名称 + 成功,返回MV_OK;失败,返回错误码 + + + + 订阅所有事件 + + 成功,返回MV_OK;失败,返回错误码 + + + + 取消订阅所有事件 + + 成功,返回MV_OK;失败,返回错误码 + + + + 设备事件 + + + + + 通过GenTL枚举到的接口信息 + + + + + GenTL接口ID + + + + + 传输层类型 + + + + + 显示名称 + + + + + GenTL的cti文件索引 + + + + + 通过GenTL枚举到的设备信息 + + + + + GenTL接口ID + + + + + 设备ID + + + + + 供应商名字 + + + + + 型号名字 + + + + + 传输层类型 + + + + + 设备显示名称 + + + + + 用户自定义名字 + + + + + 序列号 + + + + + 设备版本号 + + + + + GenTL的cti文件索引 + + + + + 提供GenTL相关接口 + + + + + 通过GenTL枚举Interfaces + + GenTL的cti文件路径 + Interfaces列表 + 成功,返回MV_OK;失败,返回错误码 + + + + 通过GenTL Interface枚举设备 + + Interface信息 + 设备列表 + 成功,返回MV_OK;失败,返回错误码 + + 枚举到设备后,通过创建设备实例。 + + + + + 卸载cti库 + + 枚举卡时加载的cti文件路径 + 成功,返回MV_OK;失败,返回错误码 + 卸载前需要保证通过该cti枚举出的相机已全部关闭,否则报错前置条件错误。 + + + + 提供获取图像缓存、图像属性的接口 + + + + + 转换为Bitmap + + Bitmap对象,失败返回null + + + + 图像数据指针(非托管内存) + + + + + 图像数据,内部会进行一次拷贝,将非托管内存拷贝到托管内存 + + + + + 图像宽度 + + + + + 图像高度 + + + + + 像素格式 + + + + + 图像大小 + + + + + 图像解码 + + + + + 无损解码 + + 输入图像及帧信息 + 输出图像及帧信息。图像使用完之后需调用Dispose方法及时释放内存,防止内存快速上涨。 + 成功,返回MV_OK;失败,返回错误码 + + 将从相机中取到的无损压缩码流解码成裸数据,同时支持解析当前相机实时图像的水印信息(如果输入的无损码流不是当前相机或者不是实时取流的,则水印解析可能异常)。 + 若解码失败,请检查以下情况:(1)需要CPU支持 SSE AVX指令集(2)若当前帧异常(丢包等),可能导致解码异常(3)相机出图异常,即使不丢包也会异常。 + + + + + 图像渲染模式 + + + + + 默认模式,Windows:GDI,Linux:OpenGL + + + + + Direct3D,只支持Windows + + + + + OPENGL,只支持Windows + + + + + 颜色 + + + + + 构造函数 + + 红色,根据像素颜色的相对深度,范围为[0.0 , 1.0],代表着[0, 255]的颜色深度 + 绿色,根据像素颜色的相对深度,范围为[0.0 , 1.0],代表着[0, 255]的颜色深度 + 蓝色,根据像素颜色的相对深度,范围为[0.0 , 1.0],代表着[0, 255]的颜色深度 + 透明度,根据像素颜色的相对透明度,范围为[0.0 , 1.0] (此参数功能暂不支持) + + + + 红色,根据像素颜色的相对深度,范围为[0.0 , 1.0],代表着[0, 255]的颜色深度 + + + + + 绿色,根据像素颜色的相对深度,范围为[0.0 , 1.0],代表着[0, 255]的颜色深度 + + + + + 蓝色,根据像素颜色的相对深度,范围为[0.0 , 1.0],代表着[0, 255]的颜色深度 + + + + + 透明度,根据像素颜色的相对透明度,范围为[0.0 , 1.0] (此参数功能暂不支持) + + + + + 矩形 + + + + + 构造函数 + + 矩形上边缘距离图像上边缘的距离,根据图像的相对位置,范围为[0.0 , 1.0] + 矩形下边缘距离图像下边缘的距离,根据图像的相对位置,范围为[0.0 , 1.0] + 矩形左边缘距离图像左边缘的距离,根据图像的相对位置,范围为[0.0 , 1.0] + 矩形右边缘距离图像右边缘的距离,根据图像的相对位置,范围为[0.0 , 1.0] + + + + 矩形上边缘距离图像上边缘的距离,根据图像的相对位置,范围为[0.0 , 1.0] + + + + + 矩形下边缘距离图像下边缘的距离,根据图像的相对位置,范围为[0.0 , 1.0] + + + + + 矩形左边缘距离图像左边缘的距离,根据图像的相对位置,范围为[0.0 , 1.0] + + + + + 矩形右边缘距离图像右边缘的距离,根据图像的相对位置,范围为[0.0 , 1.0] + + + + + 点 + + + + + 构造函数 + + 该点距离图像左边缘距离,根据图像的相对位置,范围为[0.0 , 1.0] + 该点距离图像上边缘距离,根据图像的相对位置,范围为[0.0 , 1.0] + + + + 该点距离图像左边缘距离,根据图像的相对位置,范围为[0.0 , 1.0] + + + + + 该点距离图像上边缘距离,根据图像的相对位置,范围为[0.0 , 1.0] + + + + + 圆形 + + + + + 构造函数 + + 圆心 + 宽向半径,根据图像的相对位置[0, 1.0],半径与圆心的位置有关,需保证画出的圆在显示框范围之内,否则报错 + 高向半径,根据图像的相对位置[0, 1.0],半径与圆心的位置有关,需保证画出的圆在显示框范围之内,否则报错 + + + + 圆心 + + + + + 宽向半径,根据图像的相对位置[0, 1.0],半径与圆心的位置有关,需保证画出的圆在显示框范围之内,否则报错 + + + + + 高向半径,根据图像的相对位置[0, 1.0],半径与圆心的位置有关,需保证画出的圆在显示框范围之内,否则报错 + + + + + 线条 + + + + + 线条的起始点坐标 + + + + + 线条的终点坐标 + + + + + 提供图像渲染、图形绘制接口 + + + + + 显示一帧图像 + + 窗口句柄 + 图像信息 + 渲染模式 + 成功,返回MV_OK;失败,返回错误码 + + 渲染方式可选择GDI或D3D,默认选择为GDI模式。渲染引擎仅在客户端不连接相机的情况下可以进行设置。GDI模式对电脑的显卡性能没有要求,适用于所有电脑。 D3D模式适用于安装显卡驱动且显卡内存大于1GB的电脑,该模式下客户端预览的图像效果会优于GDI模式下的图像效果。 + 渲染模式为RenderMode.OPENGL时支持4G以上超大图渲染 + + + + + 显示一帧图像 + + 窗口句柄 + 图像数据指针 + 图像数据长度 + 图像宽 + 图像高 + 像素格式 + 渲染模式 + 成功,返回MV_OK;失败,返回错误码 + + 渲染方式可选择GDI或D3D,默认选择为GDI模式。渲染引擎仅在客户端不连接相机的情况下可以进行设置。GDI模式对电脑的显卡性能没有要求,适用于所有电脑。 D3D模式适用于安装显卡驱动且显卡内存大于1GB的电脑,该模式下客户端预览的图像效果会优于GDI模式下的图像效果。 + + + + + 在图像上绘制矩形 + + 矩形框 + 线条颜色 + 线条宽度,只能是1或2 + 成功,返回MV_OK;失败,返回错误码 + + + + 在图像上绘制圆形 + + 圆形信息 + 线条颜色 + 线条宽度,只能是1或2 + 成功,返回MV_OK;失败,返回错误码 + + + + 在图像上绘制线条 + + 线条信息 + 线条颜色 + 线条宽度,只能是1或2 + 成功,返回MV_OK;失败,返回错误码 + + + + 图像格式 + + + + + BMP图像格式 + + + + + JPEG图像格式 + + + + + PNG图像格式 + + + + + TIFF图像格式 + + + + + 图像格式信息 + + + + + 图像格式 + + + + + JPEG编码质量(50-99],其他格式无效 + + + + + 提供保存图像数据到文件的接口,支持BMP、JPG、PNG、TIFF格式图像 + + + + + 保存图像到文件,支持BMP、JPG、PNG、TIFF格式图像 + + 文件路径 + 图像数据 + 图像格式信息 + 图像插值方法 + 成功,返回MV_OK;失败,返回错误码 + + + + 保存图像到缓存,支持BMP、JPG格式图像 + + 图像缓存 + 转换后的图像数据长度 + 图像数据 + 图像格式信息 + 图像插值方法 + 成功,返回MV_OK;失败,返回错误码 + + + + 提供采集卡属性和接口 + + + + + 打开采集卡 + + 成功,返回MV_OK;失败,返回错误码 + + + + 关闭采集卡 + + 成功,返回MV_OK;失败,返回错误码 + + + + 设备本地升级 + + 升级文件路径 + 成功,返回MV_OK;失败,返回错误码 + + 通过该接口可以将升级固件文件发送给设备进行升级。该接口需要等待升级固件文件成功传给设备端之后再返回,响应时间可能较长。 + + + + + 获取升级进度 + + 升级进度 + 成功,返回MV_OK;失败,返回错误码 + + + + 枚举采集卡上的相机 + + 相机列表 + 成功,返回MV_OK;失败,返回错误码 + + + + 开启设备指定事件 + + 事件名称 + 成功,返回MV_OK;失败,返回错误码 + + + + 关闭设备指定事件 + + 事件名称 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取采集卡对应的参数配置对象 + + + + + 获取采集卡对应的事件采集对象 + + + + + 提供枚举采集卡接口 + + + + + 枚举采集卡 + + 采集卡接口类型 + 采集卡列表 + 成功,返回MV_OK;失败,返回错误码 + + 枚举到采集卡后,通过创建采集卡实例。 + + + + + 采集卡工厂类,创建采集卡实例 + + + + + 根据采集卡信息创建采集卡实例 + + 采集卡信息 + 成功-返回采集卡实例,失败-抛出异常 + + + + 根据采集卡ID创建采集卡实例 + + 采集卡ID + 成功-返回采集卡实例,失败-抛出异常 + + + + 采集卡接口类型定义 + + + + + GigE Vision采集卡 + + + + + Camera Link采集卡 + + + + + CoaXPress采集卡 + + + + + XoFLink采集卡 + + + + + 采集卡信息 + + + + + 采集卡接口类型, + + + + + 采集卡的PCIE插槽信息 + + + + + 采集卡ID + + + + + 显示名称 + + + + + 序列号 + + + + + 型号 + + + + + 厂商 + + + + + 版本号 + + + + + 自定义名称 + + + + + 图像旋转角度 + + + + + 90度 + + + + + 180度 + + + + + 270度 + + + + + 图像翻转类型 + + + + + 垂直翻转 + + + + + 水平翻转 + + + + + 图像重构方式 + + + + + 源图像按行拆分成多张图像 + + + + + 图像拼接方式 + + + + + 垂直方向拼接 + + + + + 提供图像处理相关接口,比如旋转、翻转、对比度、饱和度等 + + + + + 图像旋转 + + 输入图像 + 输出图像。图像使用完之后需调用Dispose方法及时释放内存,防止内存快速上涨。 + 旋转角度 + 成功,返回MV_OK;失败,返回错误码 + + 该接口只支持MONO8/RGB24/BGR24格式数据的90/180/270度旋转。 + + + + + 图像翻转 + + 输入图像 + 输出图像。图像使用完之后需调用Dispose方法及时释放内存,防止内存快速上涨。 + 翻转类型 + 成功,返回MV_OK;失败,返回错误码 + + 该接口只支持MONO8/RGB24/BGR24格式数据的垂直和水平翻转。 + + + + + 图像对比度调节 + + 输入图像 + 输出图像。图像使用完之后需调用Dispose方法及时释放内存,防止内存快速上涨。 + 对比度值,[1, 10000] + 成功,返回MV_OK;失败,返回错误码 + + + + 重构图像(用于分时曝光功能) + + 输入图像 + 曝光个数(1-8] + 图像重构方式 + 输出图像列表。图像使用完之后需调用Dispose方法及时释放内存,防止内存快速上涨。 + 成功,返回MV_OK;失败,返回错误码 + + + + 重构图像(用于分时曝光功能,图像拆分后再拼接) + + 输入图像 + 曝光个数(1-8] + 图像重构的方式 + 图像拼接的方式 + 输出图像。图像使用完之后需调用Dispose方法及时释放内存,防止内存快速上涨。 + 成功,返回MV_OK;失败,返回错误码 + + + + 内存块 + + + + + 内存池 + + + + + 关闭内存池,清空内部缓存 + + + + + 归还内存块到内存池 + + 内存块 + 是否手动释放 + + + + 更新内存块列表,释放过期内存。方法内部不加锁 + + + + + + 更新内存块的空闲时间并删除过期内存块。 方法内部不加锁 + + + + + + + 打印统计信息 + + + + + 初始化属性值,在构造函数中使用 + + + + + 创建相机句柄 + + + 错误码 + + + + 判断设备是否处于连接状态 + + + + + 获取设备对应的图像采集对象 + + + + + 获取设备信息 + + + + + 获取设备对应的参数配置对象 + + + + + 设置设备波特率 + + 波特率 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取设备波特率 + + 波特率 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取设备与主机间连接支持的波特率 + + 所支持波特率的或运算结果,单个波特率参考 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置串口操作等待时长 + + 串口操作的等待时长,单位为ms + 成功,返回MV_OK;失败,返回错误码 + + + + Chunk数据 + + + + + Chunk数据指针(非托管内存) + + + + + Chunk数据,内部会进行一次拷贝,将非托管内存拷贝到托管内存 + + + + + ChunkID + + + + + Chunk数据长度 + + + + + 图像帧里面的chunk信息 + + + + + 通过ChunkID获取对应的ChunkData + + + + + + + 创建设备对象 + + + + + 创建设备对象 + + 设备信息 + 设备实例 + + + + 通过设备IP地址创建设备,适用于GigE设备 + + 设备IP地址 + 网口IP地址 + 设备实例 + + + + 通过GenTL设备信息创建设备句柄 + + 设备信息 + 成功,返回MV_OK;失败,返回错误码 + + + + 采集卡类型 + + + + + 未知采集卡 + + + + + 虚拟采集卡 + + + + + 自研采集卡 + + + + + gige设备信息实现 + + + + + 占用设备的主机ip + + + + + 组播ip + + + + + 组播port + + + + + 设备接口类型 + + + + + 制造商信息 + + + + + 制造商特殊信息 + + + + + 设备型号 + + + + + 设备版本 + + + + + 设备序列号 + + + + + 用户自定义名称 + + + + + 设备类型信息,7 - 0 bit: 预留,15 - 8 bit:产品子类别,23 - 16 bit:产品类型,31 - 24bit:产品线(如: 0x01 标准产品;0x02 3D产品;0x03 智能ID产品) + + + + + GigE Vision协议主要版本 + + + + + GigE Vision协议次要版本 + + + + + 高MAC地址 + + + + + 低MAC地址 + + + + + IP配置选项 + + + + + 当前IP配置 + + + + + 当前IP地址 + + + + + 当前子网掩码 + + + + + 当前网关 + + + + + 网口IP地址 + + + + + 是否虚拟相机 + + + + + 是否采集卡上的相机 + + + + + USB设备信息类 + + + + + 设备接口类型 + + + + + 制造商信息 + + + + + 设备型号 + + + + + 设备版本 + + + + + 设备序列号 + + + + + 用户自定义名称 + + + + + 设备类型信息,7 - 0 bit: 预留,15 - 8 bit:产品子类别,23 - 16 bit:产品类型,31 - 24bit:产品线(如: 0x01 标准产品;0x02 3D产品;0x03 智能ID产品) + + + + + 控制输入端点 + + + + + 控制输出端点 + + + + + 流端点 + + + + + 事件端点 + + + + + 供应商ID号 + + + + + 产品ID号 + + + + + 设备索引号 + + + + + 设备GUID号 + + + + + 家族名字 + + + + + 供应商名称 + + + + + 支持的USB协议 + + + + + 设备地址 + + + + + 是否虚拟相机 + + + + + Camera Link串口设备信息 + + + + + 设备接口类型 + + + + + 制造商信息 + + + + + 设备型号 + + + + + 设备版本 + + + + + 设备序列号 + + + + + 用户自定义名称 + + + + + 设备类型信息,7 - 0 bit: 预留,15 - 8 bit:产品子类别,23 - 16 bit:产品类型,31 - 24bit:产品线(如: 0x01 标准产品;0x02 3D产品;0x03 智能ID产品) + + + + + 端口号 + + + + + 名称 + + + + + CoaXPress设备信息 + + + + + 设备接口类型 + + + + + 制造商信息 + + + + + 设备型号 + + + + + 设备版本 + + + + + 设备序列号 + + + + + 用户自定义名称 + + + + + 设备类型信息,7 - 0 bit: 预留,15 - 8 bit:产品子类别,23 - 16 bit:产品类型,31 - 24bit:产品线(如: 0x01 标准产品;0x02 3D产品;0x03 智能ID产品) + + + + + 相机ID + + + + + 采集卡ID + + + + + Camera Link设备信息 + + + + + 设备接口类型 + + + + + 制造商信息 + + + + + 设备型号 + + + + + 设备版本 + + + + + 设备序列号 + + + + + 用户自定义名称 + + + + + 设备类型信息,7 - 0 bit: 预留,15 - 8 bit:产品子类别,23 - 16 bit:产品类型,31 - 24bit:产品线(如: 0x01 标准产品;0x02 3D产品;0x03 智能ID产品) + + + + + 相机ID + + + + + 采集卡ID + + + + + XoFLink设备信息 + + + + + 设备接口类型 + + + + + 制造商信息 + + + + + 设备型号 + + + + + 设备版本 + + + + + 设备序列号 + + + + + 用户自定义名称 + + + + + 设备类型信息,7 - 0 bit: 预留,15 - 8 bit:产品子类别,23 - 16 bit:产品类型,31 - 24bit:产品线(如: 0x01 标准产品;0x02 3D产品;0x03 智能ID产品) + + + + + 相机ID + + + + + 采集卡ID + + + + + Event名称 + + + + + EventID + + + + + 流通道序号 + + + + + 帧号 + + + + + 时间戳 + + + + + Event数据长度 + + + + + Event数据 + + + + + GenTL接口ID + + + + + 传输层类型 + + + + + 显示名称 + + + + + GenTL的cti文件索引 + + + + + GenTL接口ID + + + + + 设备ID + + + + + 供应商名字 + + + + + 型号名字 + + + + + 传输层类型 + + + + + 设备显示名称 + + + + + 用户自定义名字 + + + + + 序列号 + + + + + 设备版本号 + + + + + GenTL的cti文件索引 + + + + + 获取最佳包大小 + + + + + + + 强制配置ip + + + + + + + + + 设置ip方式 + + + + + + + 设置传输模式,默认为Driver模式 + + 网络传输模式 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取网络传输信息 + + 网络传输信息 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置GVSP取流超时时间 + + 超时时间(MS),默认300ms,范围:>10ms + 成功,返回MV_OK;失败,返回错误码 + + + + 获取GVSP取流超时时间 + + 超时时间(MS) + 成功,返回MV_OK;失败,返回错误码 + + + + 设置GVCP命令超时时间 + + 超时时间(MS),默认500ms,范围:0-10000ms + 成功,返回MV_OK;失败,返回错误码 + + + + 获取GVCP命令超时时间 + + 超时时间(MS) + 成功,返回MV_OK;失败,返回错误码 + + + + 设置重传GVCP命令次数 + + 重传次数,范围:0-100 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取重传GVCP命令次数 + + 重传次数 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置是否打开重发包,及重发包参数 + + 是否支持重发包 + 最大重发比 + 重发超时时间 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置重传命令最大尝试次数 + + 重传命令最大尝试次数,默认值20 + 成功,返回MV_OK;失败,返回错误码 + + 该接口必须在调用开启重传包功能之后调用,否则失败且返回MV_E_CALLORDER。 + + + + + 获取重传命令最大尝试次数 + + 传命令最大尝试次数 + 成功,返回MV_OK;失败,返回错误码 + + 该接口必须在调用开启重传包功能之后调用,否则失败且返回MV_E_CALLORDER。 + + + + + 设置同一重传包多次请求之间的时间间隔 + + 同一重传包多次请求之间的时间间隔,默认10ms + 成功,返回MV_OK;失败,返回错误码 + + + + 获取同一重传包多次请求之间的时间间隔 + + + 成功,返回MV_OK;失败,返回错误码 + + + + 设置传输模式,可以为单播模式、组播模式等 + + + 组播地址,组播模式下有意义 + 组播端口,组播模式下有意义 + 成功,返回MV_OK;失败,返回错误码 + + + + 解码功能实现类 + + + + + 判断像素是否为Mono格式 + + + + + + + 判断图像格式是否为彩色格式 + + + + + + + 获取图像大小 + + 图像宽度 + 图像高度 + 像素格式 + + + + + 内存拷贝 + + 目标缓存 + 源缓存 + 拷贝大小 + + + + 将FrameOut转成MvCCDll的帧结构体 + + + + + + + + 将Byte数组转为String,使用UTF-8编码,并去掉结尾的'\0' + + + + + + + String字符串拷贝到byte[] + + + + + + + 判断字符数组是否为utf-8 + + 字符数组 + + + + + 将枚举出来的设备信息转化为输出格式 + + + + + + + + 打开采集卡 + + 成功,返回MV_OK;失败,返回错误码 + + + + 关闭采集卡 + + 成功,返回MV_OK;失败,返回错误码 + + + + 设备本地升级 + + 升级文件路径 + 成功,返回MV_OK;失败,返回错误码 + + 通过该接口可以将升级固件文件发送给设备进行升级。该接口需要等待升级固件文件成功传给设备端之后再返回,响应时间可能较长。 + + + + + 获取升级进度 + + 升级进度 + 成功,返回MV_OK;失败,返回错误码 + + + + 枚举采集卡上的相机 + + 相机列表 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取采集卡对应的参数配置对象 + + + + + 采集卡接口类型, + + + + + 采集卡的PCIE插槽信息 + + + + + 采集卡ID + + + + + 显示名称 + + + + + 序列号 + + + + + 型号 + + + + + 厂商 + + + + + 版本号 + + + + + 自定义名称 + + + + + MyCamera + + + + ch GigE Vision采集卡 |en GigE Vision interface + + + ch Camera Link采集卡 |en Camera Link interface + + + ch CoaXPress采集卡 |en CoaXPress interface + + + ch XoFLink采集卡 |en XoFLink interface + + + Unknown Device Type, Reserved + + + GigE Device + + + 1394-a/b Device + + + USB3.0 Device + + + CameraLink Device + + + Virtual GigE Device + + + Virtual USB Device + + + GenTL GigE Device + + + GenTL CML Device + + + GenTL CXP Device + + + GenTL XOF Device + + + + ch:信息结构体的最大缓存 | en: Max buffer size of information structs + + + + + 最大的相机数量 + + + + + ch:最大Interface数量 | en:Max num of interfaces + + + + + ch:最大GenTL设备数量 | en:Max num of GenTL devices + + + + + XML节点描述最大长度 + + + + + XML节点最大长度 + + + + + XML节点最大数量 + + + + + XML节点显示名最大数量 + + + + + 枚举类型最大的EnumEntry个数 + + + + + string类型节点值的最大长度 + + + + + 最大父节点数 + + + + + 最大节点描述长度 + + + + + 参数导出允许配置的最大节点个数 + + + + + 参数导入时节点导入失败的最大错误个数 + + + + + 设备断开连接 + + + + + SDK与驱动版本不匹配 + + + + + 相机Event事件名称最大长度 + + + + 最大枚举条目对应的符号长度 + + + 分时曝光时最多将源图像拆分的个数 + + + 最大支持的串口数量 + + + + ch:最大支持的采集卡数量 | en:The maximum number of Frame Grabber interface supported + + + + + ch 静态 |en Static + + + + + ch DHCP |en DHCP + + + + + ch LLA |en LLA + + + + + 9600 + + + + + 19200 + + + + + 38400 + + + + + 57600 + + + + + 115200 + + + + + 230400 + + + + + 460800 + + + + + 921600 + + + + + ch 最大值 |en Auto Max + + + + + ch 网络流量和丢包信息 |en Network traffic and packet loss information + + + + + ch host接收到来自U3V设备的字节总数 |en The total number of bytes host received from U3V device + + + + + ch独占权限,其他APP只允许读CCP寄存器 |en Exclusive authority, other APP is only allowed to read the CCP register + + + + + ch 可以从5模式下抢占权限,然后以独占权限打开 |en You can seize the authority from the 5 mode, and then open with exclusive authority + + + + + ch 控制权限,其他APP允许读所有寄存器 |en Control authority, allows other APP reading all registers + + + + + ch 可以从5的模式下抢占权限,然后以控制权限打开 |en You can seize the authority from the 5 mode, and then open with control authority + + + + + ch 以可被抢占的控制权限打开 |en Open with seized control authority + + + + + ch 可以从5的模式下抢占权限,然后以可被抢占的控制权限打开 |en You can seize the authority from the 5 mode, and then open with seized control authority + + + + + ch 读模式打开设备,适用于控制权限下 |en Open with read mode and is available under control authority + + + + 成功,无错误 + + + 错误或无效的句柄 + + + 不支持的功能 + + + 缓存已满 + + + 函数调用顺序错误 + + + 错误的参数 + + + 资源申请失败 + + + 无数据 + + + 前置条件有误,或运行环境已发生变化 + + + 版本不匹配 + + + 传入的内存空间不足 + + + 异常图像,可能是丢包导致图像不完整 + + + 动态导入DLL失败 + + + 没有可输出的缓存 + + + 加密错误 + + + 打开文件出现错误 + + + 未知的错误 + + + 通用错误 + + + 参数非法 + + + 值超出范围 + + + 属性 + + + 运行环境有问题 + + + 逻辑错误 + + + 节点访问条件有误 + + + 超时 + + + 转换异常 + + + GenICam未知错误 + + + 命令不被设备支持 + + + 访问的目标地址不存在 + + + 目标地址不可写 + + + 设备无访问权限 + + + 设备忙,或网络断开 + + + 网络包数据错误 + + + 网络相关错误 + + + 设备IP冲突 + + + 读usb出错 + + + 写usb出错 + + + 设备异常 + + + GenICam相关错误 + + + 带宽不足 + + + 驱动不匹配或者未装驱动 + + + USB未知的错误 + + + 升级固件不匹配 + + + 升级固件语言不匹配 + + + 升级冲突(设备已经在升级了再次请求升级即返回此错误) + + + 升级时设备内部出现错误 + + + 升级时未知错误 + + + 处理正确 + + + 不确定类型错误 + + + 能力集中存在无效参数 + + + 内存地址为空 + + + 内存对齐不满足要求 + + + 内存空间大小不够 + + + 内存空间大小不满足对齐要求 + + + 内存地址不满足对齐要求 + + + 图像格式不正确或者不支持 + + + 图像宽高不正确或者超出范围 + + + 图像宽高与step参数不匹配 + + + 图像数据存储地址为空 + + + 设置或者获取参数类型不正确 + + + 设置或者获取参数的输入、输出结构体大小不正确 + + + 处理类型不正确 + + + 处理时输入、输出参数大小不正确 + + + 子处理类型不正确 + + + 子处理时输入、输出参数大小不正确 + + + index参数不正确 + + + value参数不正确或者超出范围 + + + param_num参数不正确 + + + 函数参数指针为空 + + + 超过限定的最大内存 + + + 回调函数出错 + + + 加密错误 + + + 算法库使用期限错误 + + + 参数范围不正确 + + + 数据大小不正确 + + + 数据step不正确 + + + cpu不支持优化代码中的指令集 + + + 警告 + + + 算法库超时 + + + 算法版本号出错 + + + 模型版本号出错 + + + GPU内存分配错误 + + + 文件不存在 + + + 字符串为空 + + + 图像解码器错误 + + + 打开文件错误 + + + 文件读取错误 + + + 文件写错误 + + + 文件读取大小错误 + + + 文件类型错误 + + + 模型类型错误 + + + 分配内存错误 + + + 线程绑核失败 + + + 噪声特性图像格式错误 + + + 噪声特性类型错误 + + + 噪声特性个数错误 + + + 噪声特性增益个数错误 + + + 噪声曲线增益值输入错误 + + + 噪声曲线柱数错误 + + + 噪声估计初始化增益设置错误 + + + 噪声估计未初始化 + + + 颜色空间模式错误 + + + 图像ROI个数错误 + + + 图像ROI原点错误 + + + 图像ROI大小错误 + + + 输入的相机增益不存在(增益个数已达上限) + + + 输入的相机增益不在范围内 + + + 输入的噪声特性内存大小错误 + + + + Byte array to struct + + Byte array + Struct type + Struct object + + + + Struct to Byte array + + Struct object + Byte + Bytes + + + + 判断字符数组是否为utf-8 + + 字符数组 + + + + + Write Error Message + + Message + ErrorNum + + + + 获取枚举类型节点(支持的枚举个数扩展到256) V4.4.1新增 + + + + + Grab callback + + Image data + Frame info + User defined variable + + + + Grab callback + + Image data + Frame info + User defined variable + + + + Xml Update callback(Interfaces not recommended) + + Node type + Current node feature structure + Nodes list + User defined variable + + + + Exception callback + + Msg type + User defined variable + + + + Event callback (Interfaces not recommended) + + User defined ID + User defined variable + + + + Event callback + + Event Info + User defined variable + + + + Stream Exception callback + + Msg type + User defined variable + + + + ch:采集卡信息列表 | en: Interface Information List + + + + + ch:在线设备数量 | en:Online Interface Number + + + + + ch:支持最多64个设备 | en:Support up to 64 Interfaces + + + + + ch:采集卡信息 | en: Interface information + + + + + ch: 采集卡类型; 低16位有效: bits(0~2)代表功能, bits(3~7)代表相机, bits(8-15)代表总线| en: Interface type + + + + + ch: 采集卡的PCIE插槽信息 | en: PCIe slot information of interface + + + + + ch: 采集卡ID | en: Interface ID + + + + + ch 显示名称 | en: Display name + + + + + ch 序列号 |en: Serial number + + + + + ch 型号 | en: model name + + + + + ch: 厂商 |en: manufacturer name + + + + + ch: 版本号| en: device version + + + + + ch: 自定义名称 |en: user defined name + + + + + ch 保留字段 | en Reserved + + + + + 排序方式 + + + + + 按序列号排序 + + + + + 按用户自定义名字排序 + + + + + 按当前IP地址排序(升序) + + + + + 按当前IP地址排序(降序) + + + + + ch: GigE设备信息 | en: GigE device information + + + + + IP 配置选项 + + + + + IP configuration:bit31-static bit30-dhcp bit29-lla + + + + + curtent ip + + + + + curtent subnet mask + + + + + current gateway + + + + + 制造商名 + + + + + 型号名 + + + + + 设备版本信息 + + + + + 制造商特殊信息 + + + + + 序列号 + + + + + 用户自定义名 + + + + + 网口IP地址 + + + + + 预留 + + + + + ch: GigE设备信息 | en: GigE device information + + + + + IP 配置选项 + + + + + IP configuration:bit31-static bit30-dhcp bit29-lla + + + + + curtent ip + + + + + curtent subnet mask + + + + + current gateway + + + + + 制造商名 + + + + + 型号名 + + + + + 设备版本信息 + + + + + 制造商特殊信息 + + + + + 序列号 + + + + + 用户自定义名 + + + + + 网口IP地址 + + + + + 预留 + + + + + ch:USB3 设备信息 | en:USB3 device information + + + + + 控制输入端点 + + + + + 控制输出端点 + + + + + 流端点 + + + + + 事件端点 + + + + + 供应商ID号 + + + + + 产品ID号 + + + + + 设备索引号 + + + + + 设备GUID号 + + + + + 供应商名字 + + + + + 型号名字 + + + + + 家族名字 + + + + + 设备版本号 + + + + + 制造商名字 + + + + + 序列号 + + + + + 用户自定义名字 + + + + + 支持的USB协议 + + + + + 设备地址 + + + + + 保留字节 + + + + + ch:USB3 设备信息 | en:USB3 device information + + + + + 控制输入端点 + + + + + 控制输出端点 + + + + + 流端点 + + + + + 事件端点 + + + + + 供应商ID号 + + + + + 产品ID号 + + + + + 设备索引号 + + + + + 设备GUID号 + + + + + 供应商名字 + + + + + 型号名字 + + + + + 家族名字 + + + + + 设备版本号 + + + + + 制造商名字 + + + + + 序列号 + + + + + 用户自定义名字 + + + + + 支持的USB协议 + + + + + 设备地址 + + + + + 保留字节 + + + + + ch:CamLink设备信息 | en:CamLink device information + + + + + 端口号ID + + + + + 模型名 + + + + + 家族名 + + + + + 设备版本信息 + + + + + 制造商名字 + + + + + 序列号 + + + + + 保留字节 + + + + + ch:采集卡Camera Link相机信息 | en:Camera Link device information on frame grabber + + + + + ch 采集卡ID |en Interface ID of Frame Grabber + + + + + ch 供应商名字 |en Vendor name + + + + + ch 型号名字 |en Model name + + + + + ch 厂商信息 |en Manufacturer information + + + + + ch 相机版本 |en Device version + + + + + ch 序列号 |en Serial number + + + + + ch 用户自定义名字 |en User defined name + + + + + ch 相机ID |en Device ID + + + + + ch 保留字段 |en Reserved + + + + + ch:CoaXPress相机信息 | en:CoaXPress device information + + + + + ch 采集卡ID |en Interface ID of Frame Grabber + + + + + ch 供应商名字 |en Vendor name + + + + + ch 型号名字 |en Model name + + + + + ch 厂商信息 |en Manufacturer information + + + + + ch 相机版本 |en Device version + + + + + ch 序列号 |en Serial number + + + + + ch 用户自定义名字 |en User defined name + + + + + ch 相机ID |en Device ID + + + + + ch 保留字段 |en Reserved + + + + + ch:XoFLink相机信息 | en:XoFLink device information + + + + + ch 采集卡ID |en Interface ID of Frame Grabber + + + + + ch 供应商名字 |en Vendor name + + + + + ch 型号名字 |en Model name + + + + + ch 厂商信息 |en Manufacturer information + + + + + ch 相机版本 |en Device version + + + + + ch 序列号 |en Serial number + + + + + ch 用户自定义名字 |en User defined name + + + + + ch 相机ID |en Device ID + + + + + ch 保留字段 |en Reserved + + + + + ch:设备信息 | en:Device information + + + + + 主版本号 + + + + + 次版本号 + + + + + MAC高地址 + + + + + MAC低地址 + + + + + 设备传输层协议类型,e.g. MV_GIGE_DEVICE + + + + + ch 设备类型信息 | en Device Type Info + + + + + 保留字节 + + + + + 设备类型 + + + + + 构造函数 + + 输入任意数,因为不接受无参构造函数 + + + + ch:特定类型的设备信息 | en:Special devcie information + + + + + GigE + + + + + Camera Link + + + + + Usb + + + + + CML + + + + + CXP + + + + + XOF + + + + + 相机列表 + + + + + 在线设备数量 + + + + + 支持最多256个设备 + + + + + ch:通过GenTL枚举到的Interface信息 | en:Interface Information with GenTL + + + + + GenTL接口ID + + + + + 传输层类型 + + + + + 设备显示名称 + + + + + GenTL的cti文件索引 + + + + + 保留字节 + + + + + ch:通过GenTL枚举到的设备信息列表 | en:Interface Information List with GenTL + + + + + ch:在线设备数量 | en:Online Interface Number + + + + + ch:支持最多256个设备 | en:Support up to 256 Interfaces + + + + + ch:通过GenTL枚举到的设备信息 | en:Device Information discovered by with GenTL + + + + + 采集卡ID + + + + + 设备ID + + + + + 供应商名字 + + + + + 模型名 + + + + + 传输类型 + + + + + 显示名 + + + + + 用户自定义名 + + + + + 序列号 + + + + + 设备版本信息 + + + + + cti文件序号 + + + + + 保留字节 + + + + + ch:通过GenTL枚举到的设备信息 | en:Device Information discovered by with GenTL + + + + + 采集卡ID + + + + + 设备ID + + + + + 供应商名字 + + + + + 模型名 + + + + + 传输类型 + + + + + 显示名 + + + + + 用户自定义名 + + + + + 序列号 + + + + + 设备版本信息 + + + + + cti文件序号 + + + + + 保留字节 + + + + + ch:GenTL设备列表 | en:GenTL devices list + + + + + 在线设备数量 + + + + + 支持最多256个设备 + + + + + Net Trans Info + + + + + 已接收数据大小 [统计StartGrabbing和StopGrabbing之间的数据量] + + + + + 丢帧数量 + + + + + 接收帧数 + + + + + 请求重发包数 + + + + + 重发包数 + + + + + Frame Out Info + + + + + 图像宽 + + + + + 图像高 + + + + + 像素格式 + + + + + 帧号 + + + + + 时间戳高32位 + + + + + 时间戳低32位 + + + + + 保留,8字节对齐 + + + + + 主机生成的时间戳 + + + + + 帧数据大小 + + + + + 丢包数量 + + + + + 保留字节 + + + + + Chunk数据信息 + + + + + Chunk数据 + + + + + ChunkID + + + + + Chunk大小 + + + + + 保留字节 + + + + + Frame Out Info Ex + + + + + 图像宽 + + + + + 图像高 + + + + + 像素格式 + + + + + 帧号 + + + + + 时间戳高32位 + + + + + 时间戳低32位 + + + + + 保留,8字节对齐 + + + + + 主机生成的时间戳 + + + + + Frame大小 + + + + + 秒数 + + + + + 周期数 + + + + + 周期偏移量 + + + + + 增益 + + + + + 曝光时间 + + + + + 平均亮度 + + + + + Red + + + + + Green + + + + + Blue + + + + + 帧计数器 + + + + + 触发计数 + + + + + 输入 + + + + + 输出 + + + + + 水平偏移量 + + + + + 垂直偏移量 + + + + + Chunk宽度 + + + + + Chunk高度 + + + + + 丢包数 + + + + + 为解析的Chunk数量 + + + + + 为解析的Chunk列表 + + + + + 图像宽扩展 + + + + + 图像高扩展 + + + + + 帧长度扩展 + + + + + 保留字节 + + + + + 为解析的Chunk列表 + + + + + 为解析的Chunk内容 + + + + + 对齐结构体,无实际用途 + + + + + 输出帧信息 + + + + + 帧数据地址 + + + + + 帧信息 + + + + + 保留字节 + + + + + 取流策略 + + + + + 从旧到新一帧一帧的获取图像(默认为该策略) + + + + + 获取列表中最新的一帧图像(同时清除列表中的其余图像) + + + + + 获取列表中最新的图像,个数由OutputQueueSize决定,范围为1-ImageNodeNum,设置成1等同于LatestImagesOnly,设置成ImageNodeNum等同于OneByOne + + + + + 等待下一帧图像 + + + + + 显示帧信息 + + + + + 显示窗口的句柄 + + + + + 显示的帧数据 + + + + + 显示的帧数据大小 + + + + + 图像宽 + + + + + 图像高 + + + + + 像素格式 + + + + + 保留字节 + + + + + 显示帧信息 + + + + + 图像宽 + + + + + 图像高 + + + + + 像素格式 + + + + + 显示的帧数据 + + + + + 显示的帧数据大小 + + + + + 图像渲染方式 0-默认模式(Windows GDI/Linux OPENGL), 1-D3D模式(Windows有效) + + + + + 保留字节 + + + + + 图像信息 + + + + + 图像宽 + + + + + 图像高 + + + + + 像素格式 + + + + + 图像缓存 + + + + + 图像缓存大小 + + + + + 图像长度 + + + + + 保留字节 + + + + + ch:保存3D数据格式 | en:Save 3D file + + + + + 未定义数据格式 + + + + + PLY数据格式 + + + + + CSV数据格式 + + + + + OBJ数据格式 + + + + + 保存的点阵参数 + + + + + [IN] 每一行点的数量 + + + + + [IN] 行数 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [OUT] 输出像素数据缓存 + + + + + [IN] 提供的输出缓冲区大小(nLinePntNum * nLineNum * (16*3 + 4) + 2048) + + + + + [OUT] 输出像素数据缓存长度 + + + + + 保存的点阵文件类型 + + + + + 保留字节 + + + + + 保存的图像格式 + + + + + 未定义类型 + + + + + Bmp图像格式 + + + + + Jpeg图像格式 + + + + + Png图像格式 + + + + + Tif图像格式 + + + + + 保存的图像参数 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [OUT] 输出图片缓存 + + + + + [OUT] 输出图片大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [IN] 输出图片格式 + + + + + 保存的图像参数 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [OUT] 输出图片缓存 + + + + + [OUT] 输出图片大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [IN] 输出图片格式 + + + + + [IN] 编码质量, (50-99] + + + + + [IN] Bayer的插值方法 0-快速 1-均衡 2-最优(如果传入其它值则默认为最优) + + + + + 保留字节 + + + + + 保存的图像信息扩展 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [OUT] 输出图片缓存 + + + + + [OUT] 输出图片大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [IN] 输出图片格式 + + + + + [IN] 编码质量, (50-99] + + + + + [IN] Bayer的插值方法 0-快速 1-均衡 2-最优(如果传入其它值则默认为最优) + + + + + 保留字节 + + + + + 保存图像到文件的参数 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [IN] 输入图片格式 + + + + + [IN] 编码质量, (0-100] + + + + + [IN] 输入文件路径 + + + + + [IN] Bayer的插值方法 0-快速 1-均衡 2-最优(如果传入其它值则默认为最优) + + + + + 保留字节 + + + + + 保存图像到文件信息扩展 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 输入图片格式 + + + + + [IN] 输入文件路径 + + + + + [IN] 编码质量, (0-100] + + + + + [IN] Bayer的插值方法 0-快速 1-均衡 2-最优(如果传入其它值则默认为最优) + + + + + 保留字节 + + + + + 保存图片所需参数 + + + + + [IN] 输入图片格式 + + + + + [IN] 编码质量, (0-100] + + + + + [IN] Bayer的插值方法 0-快速 1-均衡 2-最优(如果传入其它值则默认为最优) + + + + + 保留字节 + + + + + 旋转角度 + + + + + 旋转90度 + + + + + 旋转180度 + + + + + 旋转270度 + + + + + 旋转图像参数 + + + + + [IN] 像素格式(仅支持Mono8/RGB24/BGR24) + + + + + [IN][OUT] 图像宽 + + + + + [IN][OUT] 图像高 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [OUT] 输出图片缓存 + + + + + [OUT] 输出图片大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [IN] 旋转角度 + + + + + 保留字节 + + + + + 图像翻转类型 + + + + + 垂直方向翻转 + + + + + 水平方向翻转 + + + + + 翻转图像参数 + + + + + [IN] 像素格式(仅支持Mono8/RGB24/BGR24) + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [OUT] 输出图片缓存 + + + + + [OUT] 输出图片大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [IN] 翻转类型 + + + + + 保留字节 + + + + + 像素转换参数 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [IN] 源像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 目标像素格式 + + + + + [OUT] 输出数据缓存 + + + + + [OUT] 输出数据大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + 保留字节 + + + + + 图像像素转换信息扩展 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [IN] 源像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 目标像素格式 + + + + + [OUT] 输出数据缓存 + + + + + [OUT] 输出数据大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + 保留字节 + + + + + Gamma类型 + + + + + 不启用 + + + + + GAMMA值 + + + + + GAMMA曲线,8位需要的长度:256*sizeof(unsigned char) + 10位需要的长度:1024*sizeof(unsigned short) + 12位需要的长度:4096*sizeof(unsigned short) + 16位需要的长度:65536*sizeof(unsigned short) + + + + + 线性RGB转非线性RGB + + + + + 非线性RGB转线性RGB + + + + + Gamma参数 + + + + + [IN] Gamma类型 + + + + + [IN] Gamma值 + + + + + [IN] Gamma曲线缓存 + + + + + [IN] Gamma曲线长度 + + + + + 保留字节 + + + + + CCM参数 + + + + + [IN] 是否启用CCM + + + + + [IN] CCM矩阵(-8192~8192) + + + + + 保留字节 + + + + + CCM参数 + + + + + [IN] 是否启用CCM + + + + + [IN] 量化3x3矩阵 + + + + + [IN] 量化系数(2的整数幂) + + + + + 保留字节 + + + + + CLUT参数 + + + + + [IN] 是否启用CLUT + + + + + [IN] 量化系数(2的整数幂) + + + + + [IN] CLUT大小,建议值17 + + + + + [OUT] 量化CLUT + + + + + [IN] 量化CLUT缓存大小(nCLUTSize*nCLUTSize*nCLUTSize*sizeof(int)*3) + + + + + 保留字节 + + + + + 对比度调节参数 + + + + + [IN] 图像宽度(最小8) + + + + + [IN] 图像高度(最小8) + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [IN] 输入的像素格式 + + + + + [OUT] 输出像素数据缓存 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出像素数据缓存长度 + + + + + [IN] 对比度值,范围:[1, 10000] + + + + + 保留字节 + + + + + 锐化参数 + + + + + [IN] 图像宽度(最小8) + + + + + [IN] 图像高度(最小8) + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [IN] 输入的像素格式 + + + + + [OUT] 输出像素数据缓存 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出像素数据缓存长度 + + + + + [IN] 锐度调节强度,范围:[0, 500] + + + + + [IN] 锐度调节半径(半径越大,耗时越长),范围:[1, 21] + + + + + [IN] 锐度调节阈值,范围:[0, 255] + + + + + 保留字节 + + + + + 色彩校正参数(包括CCM和CLUT) + + + + + [IN] 图像宽度 + + + + + [IN] 图像高度 + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [IN] 输入的像素格式 + + + + + [OUT] 输出像素数据缓存 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出像素数据缓存长度 + + + + + [IN] 输入有效图像位数,8 or 10 or 12 or 16 + + + + + [IN] 输入Gamma信息 + + + + + [IN] 输入CCM信息 + + + + + [IN] 输入CLUT信息 + + + + + 保留字节 + + + + + 矩形ROI参数 + + + + + [IN] 矩形左上角X轴坐标 + + + + + [IN] 矩形左上角Y轴坐标 + + + + + [IN] 矩形宽度 + + + + + [IN] 矩形高度 + + + + + 噪声估计参数 + + + + + [IN] 图像宽度 + + + + + [IN] 图像高度 + + + + + [IN] 输入的像素格式 + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [IN] 图像ROI + + + + + [IN] ROI个数 + + + + + [IN] 噪声阈值[0-4095] + + + + + [OUT] 输出噪声特性 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出噪声特性长度 + + + + + 保留字节 + + + + + 空域降噪参数 + + + + + [IN] 图像宽度 + + + + + [IN] 图像高度 + + + + + [IN] 输入的像素格式 + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [OUT] 输出降噪后的数据 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出降噪后的数据长度 + + + + + [IN] 输入噪声特性 + + + + + [IN] 输入噪声特性长度 + + + + + [IN] 降噪强度(0-100) + + + + + [IN] 锐化强度(0-32) + + + + + [IN] 噪声校正系数(0-1280) + + + + + [IN] 亮度校正系数(1-2000) + + + + + [IN] 色调校正系数(1-2000) + + + + + [IN] 亮度降噪强度(0-100) + + + + + [IN] 色调降噪强度(0-100) + + + + + [IN] 锐化强度(1-1000) + + + + + 保留字节 + + + + + LSC标定参数 + + + + + [IN] 图像宽度(16~65536) + + + + + [IN] 图像高度(16~65536) + + + + + [IN] 输入的像素格式 + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [OUT] 输出标定表缓存 + + + + + [IN] 提供的标定表缓冲大小(nWidth*nHeight*sizeof(unsigned short)) + + + + + [OUT] 输出标定表缓存长度 + + + + + [IN] 宽度分块数 + + + + + [IN] 高度分块数 + + + + + [IN] 边缘填充系数,范围1~5 + + + + + [IN] 标定方式,0-中心为基准 + 1-最亮区域为基准 + 2-目标亮度 + + + + + [IN] 目标亮度(8bits,[0,255]) + (10bits,[0,1023]) + (12bits,[0,4095]) + (16bits,[0,65535]) + + + + + 保留字节 + + + + + LSC校正参数 + + + + + [IN] 图像宽度(16~65536) + + + + + [IN] 图像高度(16~65536) + + + + + [IN] 输入的像素格式 + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [OUT] 输出像素数据缓存 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出像素数据缓存长度 + + + + + [IN] 输入校正表缓存 + + + + + [IN] 输入校正表缓存长度 + + + + + 保留字节 + + + + + 噪声特性类型 + + + + + 无效 + + + + + 噪声曲线 + + + + + 噪声水平 + + + + + 默认值 + + + + + 噪声基本信息 + + + + + 版本 + + + + + 噪声特性类型 + + + + + 图像格式 + + + + + 平均噪声水平 + + + + + 曲线点数 + + + + + 噪声曲线 + + + + + 亮度曲线 + + + + + 保留字节 + + + + + 噪声估计参数 + + + + + [IN] 图像宽(大于等于8) + + + + + [IN] 图像高(大于等于8) + + + + + [IN] 像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 噪声阈值(0-4095) + + + + + [IN] 用于存储噪声曲线和亮度曲线(需要外部分配,缓存大小:4096 * sizeof(int) * 2) + + + + + [OUT] 降噪特性信息 + + + + + [IN] 线程数量,0表示算法库根据硬件自适应;1表示单线程(默认);大于1表示线程数目 + + + + + 保留字节 + + + + + 降噪参数 + + + + + [IN] 图像宽(大于等于8) + + + + + [IN] 图像高(大于等于8) + + + + + [IN] 像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [OUT] 输出降噪后的数据 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出降噪后的数据长度 + + + + + [IN] 降噪特性信息(来源于噪声估计) + + + + + [IN] 降噪强度(0-100) + + + + + [IN] 锐化强度(0-32) + + + + + [IN] 噪声校正系数(0-1280) + + + + + [IN] 线程数量,0表示算法库根据硬件自适应;1表示单线程(默认);大于1表示线程数目 + + + + + 保留字节 + + + + + 帧特殊信息 + + + + + [OUT] 秒数 + + + + + [OUT] 周期数 + + + + + [OUT] 周期偏移量 + + + + + [OUT] 增益 + + + + + [OUT] 曝光时间 + + + + + [OUT] 平均亮度 + + + + + [OUT] 红色 + + + + + [OUT] 绿色 + + + + + [OUT] 蓝色 + + + + + [OUT] 总帧数 + + + + + [OUT] 触发计数 + + + + + [OUT] 输入 + + + + + [OUT] 输出 + + + + + [OUT] 水平偏移量 + + + + + [OUT] 垂直偏移量 + + + + + [OUT] 水印宽 + + + + + [OUT] 水印高 + + + + + 保留字节 + + + + + HB解码参数 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [OUT] 图像宽 + + + + + [OUT] 图像高 + + + + + [OUT] 输出数据缓存 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出数据大小 + + + + + [OUT] 输出的像素格式 + + + + + [OUT] 水印信息 + + + + + 保留字节 + + + + + 录像格式定义 + + + + + 未定义格式 + + + + + AVI格式 + + + + + 录像参数 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 图像宽(指定目标参数时需为8的倍数) + + + + + [IN] 图像高(指定目标参数时需为8的倍数) + + + + + [IN] 帧率fps(大于1/16) + + + + + [IN] 码率kbps(128kbps-16Mbps) + + + + + [IN] 录像格式 + + + + + [IN] 录像文件存放路径 + + + + + 保留字节 + + + + + 输入帧信息 + + + + + [IN] 图像数据指针 + + + + + [IN] 图像大小 + + + + + 保留字节 + + + + + 采集模式 + + + + + 单帧模式 + + + + + 多帧模式 + + + + + 持续采集模式 + + + + + 增益模式 + + + + + 关闭 + + + + + 一次 + + + + + 连续 + + + + + 曝光模式 + + + + + Timed + + + + + TriggerWidth + + + + + 自动曝光模式 + + + + + 关闭 + + + + + 一次 + + + + + 连续 + + + + + 相机触发模式 + + + + + 关闭 + + + + + 打开 + + + + + Gamma选择器 + + + + + USER + + + + + SRGB + + + + + 自动白平衡 + + + + + 关闭自动白平衡 + + + + + 一次自动白平衡 + + + + + 连续自动白平衡 + + + + + 触发源 + + + + + LINE0 + + + + + LINE1 + + + + + LINE2 + + + + + LINE3 + + + + + COUNTER0 + + + + + SOFTWARE + + + + + FrequencyConverter + + + + + ALL MATHCH INFO + + + + + 需要输出的信息类型,e.g. MV_MATCH_TYPE_NET_DETECT + + + + + 输出的信息缓存,由调用者分配 + + + + + 信息缓存的大小 + + + + + + + + + + 已接收数据大小 [统计StartGrabbing和StopGrabbing之间的数据量] + + + + + 丢失的包数量 + + + + + 丢帧数量 + + + + + 帧数 + + + + + 请求重发包数 + + + + + 重发包数 + + + + + USB + + + + + 已接收数据大小 [统计OpenDevicce和CloseDevice之间的数据量] + + + + + 已收到的帧数 + + + + + 错误帧数 + + + + + 保留字节 + + + + + 图像的基本信息 + + + + + 宽度值 + + + + + 宽度最小值 + + + + + 宽度最大值 + + + + + Width Inc + + + + + 高度值 + + + + + 高度最小值 + + + + + 高度最大值 + + + + + Height Inc + + + + + 帧率 + + + + + 最小帧率 + + + + + 最大帧率 + + + + + 当前的像素格式 + + + + + 支持的像素格式种类 + + + + + 像素列表 + + + + + 保留字节 + + + + + 节点是否可见的权限等级 + + + + + Always visible + + + + + Visible for experts or Gurus + + + + + Visible for Gurus + + + + + Not Visible + + + + + Object is not yet initialized + + + + + 事件信息 + + + + + 事件名 + + + + + Event号 + + + + + 流通到序号 + + + + + 帧号高位 + + + + + 帧号低位 + + + + + 时间戳高位 + + + + + 时间戳低位 + + + + + Event数据 + + + + + Event数据长度 + + + + + 保留字节 + + + + + 节点错误类型 + + + + + 节点不存在 + + + + + 访问条件错误,通常是节点不可读写 + + + + + 写入越界,超出该节点支持的范围 + + + + + 校验失败,通常是写入的值与文件中的值不匹配 + + + + + 其它错误,可查阅日志 + + + + + 节点错误信息 + + + + + 节点名称 + + + + + 错误类型 + + + + + 保留字节 + + + + + 错误信息列表 + + + + + 错误个数 + + + + + 错误信息 + + + + + 保留字节 + + + + + 节点名称 + + + + + 节点名称 + + + + + 保留字节 + + + + + 节点列表 + + + + + 错误信息 + + + + + 节点个数 + + + + + 保留字节 + + + + + 文件存取 + + + + + 用户文件名 + + + + + 设备文件名 + + + + + 保留字节 + + + + + 文件存取 + + + + + 用户文件数据缓存空间 + + + + + 用户数据缓存大小 + + + + + 文件实际缓存大小 + + + + + 设备文件名 + + + + + 保留字节 + + + + + 文件存取进度 + + + + + 已完成的长度 + + + + + 总长度 + + + + + 保留字节 + + + + + GigE传输类型 + + + + + 表示单播(默认) + + + + + 表示组播 + + + + + 表示局域网内广播,暂不支持 + + + + + 表示子网内广播,暂不支持 + + + + + 表示从相机获取,暂不支持 + + + + + 表示用户自定义应用端接收图像数据Port号 + + + + + 表示设置了单播,但本实例不接收图像数据 + + + + + 表示组播模式,但本实例不接收图像数据 + + + + + 传输模式,可以为单播模式、组播模式等 + + + + + 传输模式 + + + + + 目标IP,组播模式下有意义 + + + + + 目标Port,组播模式下有意义 + + + + + 保留字节 + + + + + 动作命令信息 + + + + + 设备密钥 + + + + + 组键 + + + + + 组掩码 + + + + + 只有设置成1时Action Time才有效,非1时无效 + + + + + 预定的时间,和主频有关 + + + + + 广播包地址 + + + + + 等待ACK的超时时间,如果为0表示不需要ACK + + + + + 只有设置成1时指定的网卡IP才有效,非1时无效 + + + + + 指定的网卡IP + + + + + 保留字节 + + + + + 动作命令结果 + + + + + IP address of the device + + + + + status code returned by the device + + + + + 保留字节 + + + + + 动作命令结果列表 + + + + + 返回值个数 + + + + + 返回的结果 + + + + + 每个节点对应的接口类型 + + + + + IValue接口类型 + + + + + IBase接口类型 + + + + + IInteger接口类型 + + + + + IBoolean接口类型 + + + + + ICommand接口类型 + + + + + IFloat接口类型 + + + + + IString接口类型 + + + + + IRegister接口类型 + + + + + ICategory接口类型 + + + + + IEnumeration接口类型 + + + + + IEnumEntry接口类型 + + + + + IPort接口类型 + + + + + XML节点特点 + + + + + 节点类型 + + + + + 是否可见 + + + + + 节点描述 + + + + + 显示名称 + + + + + 节点名 + + + + + 提示 + + + + + 保留字节 + + + + + XML节点列表 + + + + + 节点个数 + + + + + 节点列表 + + + + + 整型节点值 + + + + + 当前值 + + + + + 最大值 + + + + + 最小值 + + + + + Inc + + + + + 保留字节 + + + + + 整型节点值 + + + + + 当前值 + + + + + 最大值 + + + + + 最小值 + + + + + Inc + + + + + 保留字节 + + + + + 浮点型节点值 + + + + + 当前值 + + + + + 最大值 + + + + + 最小值 + + + + + 保留字节 + + + + + 枚举型节点值 + + + + + 当前值 + + + + + 有效数据个数 + + + + + 保留字节 + + + + + 保留字节 + + + + + 枚举型节点值 + + + + + 当前值 + + + + + 有效数据个数 + + + + + 保留字节 + + + + + 保留字节 + + + + + 字符串型节点值 + + + + + 当前值 + + + + + 节点值的最大长度 + + + + + 保留字节 + + + + + 节点的读写性 + + + + + 未实现 + + + + + 不可获取 + + + + + 只写 + + + + + 只读 + + + + + 可读可写 + + + + + 未定义 + + + + + 内部用于AccessMode循环检测 + + + + + 整型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 最小值 + + + + + 最大值 + + + + + 增量 + + + + + 保留字节 + + + + + 布尔型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 保留字节 + + + + + 命令型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 保留字节 + + + + + 浮点型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 最小值 + + + + + 最大值 + + + + + 增量 + + + + + 保留字节 + + + + + 字符串类型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 保留字节 + + + + + 寄存器型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 保留字节 + + + + + 类别属性 + + + + + 节点描述 + + + + + 显示名称 + + + + + 节点名 + + + + + 提示 + + + + + 是否可见 + + + + + 保留字节 + + + + + EnumEntry属性节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + + + + + + 父节点数 + + + + + 父节点列表 + + + + + 是否可见 + + + + + 当前值 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 保留字节 + + + + + 节点描述 + + + + + 节点描述 + + + + + Enumeration属性节点 + + + + + 是否可见 + + + + + 节点描述 + + + + + 显示名称 + + + + + 节点名 + + + + + 提示 + + + + + Symbolic数 + + + + + 当前Symbolic索引 + + + + + Symbolic索引 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 保留字节 + + + + + Port属性节点 + + + + + 是否可见 + + + + + 节点描述 + + + + + 显示名称 + + + + + 节点名 + + + + + 提示 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 保留字节 + + + + 辅助线颜色 + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + 预留字节 + + + 自定义点坐标 + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + 预留字节 + + + 矩形框区域信息 + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + 辅助线颜色 + + + 辅助线宽度 + + + 预留字节 + + + 圆形框区域信息 + + + 圆心信息 + + + 宽向半径,根据图像的相对位置[0, 1.0] + + + 高向半径,根据图像的相对位置[0, 1.0] + + + 辅助线颜色信息 + + + 辅助线宽度 + + + 预留字节 + + + 线条辅助线信息 + + + 线条辅助线的起始点坐标 + + + 线条辅助线的终点坐标 + + + 辅助线颜色信息 + + + 辅助线宽度 + + + 预留字节 + + + 枚举类型指定条目信息 + + + 指定值 + + + 指定值对应的符号 + + + 预留字节 + + + U3V流异常类型 + + + 异常的图像,该帧被丢弃 + + + 缓存列表溢出,清除最旧的一帧 + + + 缓存列表为空,该帧被丢弃 + + + 断流恢复 + + + 断流,恢复失败,取流被中止 + + + 设备异常,取流被中止 + + + 重构后的图像列表 + + + 源图像宽 + + + 源图像高 + + + 像素格式 + + + 输出数据缓存 + + + 输出数据长度 + + + 提供的输出缓冲区大小 + + + 预留字节 + + + + 分时曝光的图像处理方式 + + + + + 源图像按行拆分成多张图像 + + + + + 源图像两行拆分成多张图像 + + + + 重构图像参数信息 + + + 源图像宽 + + + 源图像高 + + + 像素格式 + + + 输入数据缓存 + + + 输入数据长度 + + + 曝光个数(1-8] + + + 图像重构方式 + + + + 输出数据缓存信息 + + + + 预留字节 + + + 串口信息 + + + + 串口号 + + + + + 保留字节 + + + + 串口列表 + + + + 串口数量 + + + + + 串口信息 + + + + + 保留字节 + + + + + 像素格式定义 + + + + + 未定义像素格式 + + + + + Mono1p + + + + + Mono2p + + + + + Mono4p + + + + + Mono8 + + + + + Mono8_Signed + + + + + Mono10 + + + + + Mono10_Packed + + + + + Mono12 + + + + + Mono12_Packed + + + + + Mono14 + + + + + Mono16 + + + + + BayerGR8 + + + + + BayerRG8 + + + + + BayerGB8 + + + + + BayerBG8 + + + + + BayerRBGG8 + + + + + BayerGR10 + + + + + BayerRG10 + + + + + BayerGB10 + + + + + BayerBG10 + + + + + BayerGR12 + + + + + BayerRG12 + + + + + BayerGB12 + + + + + BayerBG12 + + + + + BayerGR10_Packed + + + + + BayerRG10_Packed + + + + + BayerGB10_Packed + + + + + BayerBG10_Packed + + + + + BayerGR12_Packed + + + + BayerRG12_Packed + + + BayerGB12_Packed + + + BayerBG12_Packed + + + BayerGR16 + + + BayerRG16 + + + BayerGB16 + + + BayerBG16 + + + RGB8_Packed + + + BGR8_Packed + + + RGBA8_Packed + + + BGRA8_Packed + + + RGB10_Packed + + + BGR10_Packed + + + RGB12_Packed + + + BGR12_Packed + + + RGB16_Packed + + + BGR16_Packed/// + + + RGBA16_Packed + + + BGRA16_Packed + + + RGB10V1_Packe + + + RGB10V2_Packed + + + RGB12V1_Packed + + + RGB565_Packed + + + BGR565_Packed + + + YUV411_Packed + + + YUV422_Packed + + + YUV422_YUYV_Packed + + + YUV444_Packed + + + YCBCR8_CBYCR + + + YCBCR422_8 + + + YCBCR422_8_CBYCRY + + + YCBCR411_8_CBYYCRYY + + + YCBCR601_8_CBYCR + + + YCBCR601_422_8 + + + YCBCR601_422_8_CBYCRY + + + YCBCR601_411_8_CBYYCRYY + + + YCBCR709_8_CBYCR + + + YCBCR709_422_8 + + + YCBCR709_422_8_CBYCRY + + + YCBCR709_411_8_CBYYCRYY + + + YUV420SP_NV12 + + + YUV420SP_NV21 + + + RGB8_Planar + + + RGB10_Planar + + + RGB12_Planar + + + RGB16_Planar + + + Jpeg + + + Coord3D_ABC32f + + + Coord3D_ABC32f_Planar + + + Coord3D_AC32f + + + COORD3D_DEPTH_PLUS_MASK + + + Coord3D_ABC32 + + + Coord3D_AB32f + + + Coord3D_AB32 + + + Coord3D_AC32f_64 + + + Coord3D_AC32f_Planar + + + Coord3D_AC32 + + + Coord3D_A32f + + + Coord3D_A32 + + + Coord3D_C32f + + + Coord3D_C32 + + + Coord3D_ABC16 + + + Coord3D_C16 + + + Float32 + + + HB_Mono8 + + + HB_Mono10 + + + HB_Mono10_Packed + + + HB_Mono12 + + + HB_Mono12_Packed + + + HB_Mono16 + + + HB_BayerGR8 + + + HB_BayerRG8 + + + HB_BayerGB8 + + + HB_BayerBG8 + + + HB_BayerRBGG8 + + + HB_BayerGR10 + + + HB_BayerRG10 + + + HB_BayerGB10 + + + HB_BayerBG10 + + + HB_BayerGR12 + + + HB_BayerRG12 + + + HB_BayerGB12 + + + HB_BayerBG12 + + + HB_BayerGR10_Packed + + + HB_BayerRG10_Packed + + + HB_BayerGB10_Packed + + + HB_BayerBG10_Packed + + + HB_BayerGR12_Packed + + + HB_BayerRG12_Packed + + + HB_BayerGB12_Packed + + + HB_BayerBG12_Packed + + + HB_YUV422_Packed + + + HB_YUV422_YUYV_Packed + + + HB_RGB8_Packed + + + HB_BGR8_Packed + + + HB_RGBA8_Packed + + + HB_BGRA8_Packed + + + HB_RGB16_Packed + + + HB_BGR16_Packed + + + HB_RGBA16_Packed + + + HB_BGRA16_Packed + + + + 图像类,实现基本的图像属性和接口,实现图像克隆、ToBitmap。作为其他图像类的基类 + + + + + 根据图像宽、高和像素格式创建对象,内部申请内存 + + 图像宽度 + 图像高度 + 像素格式 + 相机句柄,用于ToBitmap时像素格式转换 + + + + 根据图像宽、高、像素格式、图像大小创建对象,内部申请内存 + + 图像宽度 + 图像高度 + 像素格式 + 图像大小 + 相机句柄,用于ToBitmap时像素格式转换 + + + + 根据图像宽、高、像素格式、图像大小创建对象,外部传入内存 + + + + + + + + + + + 用于克隆 + + + + + + 构造空对象,内部变量由由子类初始化 + + + + + 相机句柄,用于内部做格式转换等图像处理 + + + + + 非托管内存指针 + + + + + 图像数据,内部会进行一次拷贝,将非托管内存拷贝到托管内存 + + + + + 从C库获取图像地址(GetImageBuffer或者回调),包装成Image,图像数据存放在非托管内存中 + + + + + 使用传入的非托管内存创建新的对象 + + + + + + + 设备句柄 + + + + 非托管内存指针 + + + + + 图像数据,内部会进行一次拷贝,将非托管内存拷贝到托管内存 + + + + + 基于内存池的Image对象,用于图像处理相关接口 + + + + + 根据图像宽、高和像素格式创建对象,内部申请内存 + + 图像宽度 + 图像高度 + 像素格式 + 相机句柄,用于ToBitmap时像素格式转换 + 内存池 + + + + 根据图像宽、高、像素格式、图像大小创建对象,内部申请内存 + + 图像宽度 + 图像高度 + 像素格式 + 相机句柄,用于ToBitmap时像素格式转换 + 图像大小 + 内存池 + + + + 根据图像宽、高、像素格式、图像大小创建对象,外部传入内存池内存 + + + + + + + + + + + + 整型参数实现类 + + + + + 整形参数 + + + + + 当前值 + + + + + 最大值 + + + + + 最小值 + + + + + Increment + + + + + 枚举项参数 + + + + + 枚举值 + + + + + 枚举符号 + + + + + 枚举类型实现类 + + + + + 枚举类型参数 + + + + + 当前枚举项 + + + + + 支持的枚举类型个数 + + + + + 支持的枚举项列表 + + + + + float类型实现类 + + + + + 浮点型参数 + + + + + 当前值 + + + + + 最大值 + + + + + 最小值 + + + + + String类型参数实现类 + + + + + 字符串类型参数 + + + + + 当前值 + + + + + 最大长度 + + + + + 参数导入时出错的节点信息 + + + + + 参数导入导出时的节点错误信息 + + + + + 节点名称 + + + + + 错误类型 + + + + + 节点名称 + + + + + 错误信息 + + + + + 参数实现类 + + + + + 提供设备参数配置相关接口 + + + + + 清除GenICam节点缓存 + + 成功,返回MV_OK;失败,返回错误码 + + 在加载工业相机节点时需要读取GenICam配置文件,该接口可以起到清除GenICam缓存的功能。 + + + + + 获取Integer属性值 + + 属性键值,如获取宽度信息则为"Width" + 属性值 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置Integer型属性值 + + 属性键值,如设置宽度信息则为"Width" + 属性值 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取Enumeration属性值 + + 属性键值,如获取像素格式信息则为"PixelFormat" + 属性值 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置Enumeration属性值 + + 属性键值,如设置像素格式信息则为"PixelFormat" + Enum型节点的值 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置Enumeration属性 + + 属性键值,如设置像素格式信息则为"PixelFormat" + EnumEntry的名称 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取Float属性值 + + 属性键值 + 属性值 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置Float型属性值 + + 属性键值 + 属性值 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取Boolean属性值 + + 属性键值 + 属性值 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置Boolean型属性值 + + 属性键值 + 属性值 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取String属性值 + + 属性键值 + 属性值 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置String型属性值 + + 属性键值 + 属性值 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置Command型属性值 + + 属性键值 + 成功,返回MV_OK;失败,返回错误码 + + + + 导入设备属性文件 + + 文件路径 + 成功,返回MV_OK;失败,返回错误码 + + + + 导入设备属性文件并保存错误信息列表 + + 文件路径 + 导入失败的节点信息 + 成功,返回MV_OK;失败,返回错误码 + 部分节点导入失败时也会返回MV_OK,通过nodeErrors返回导入失败的节点及错误原因 + + + + 保存设备属性到文件 + + 文件路径 + 成功,返回MV_OK;失败,返回错误码 + + + + 通过设备寄存器地址读取寄存器 + + 待读取的内存地址,该地址可以从设备的Camera.xml文件中获取,形如xxx_RegAddr的xml节点值 + 待读取的内存长度 + 存放读到的内存值(GEV设备内存值是按照大端模式存储的,其它协议设备按照小端存储) + 成功,返回MV_OK;失败,返回错误码 + + 访问设备,读取某段寄存器的数据。 + + + + + 通过设备寄存器地址写寄存器 + + 待写入的内存地址,该地址可以从设备的Camera.xml文件中获取,形如xxx_RegAddr的xml节点值 + 待写入的内存长度 + 待写入的内存值(注意GEV设备内存值要按照大端模式存储,其它协议设备按照小端存储) + 成功,返回MV_OK;失败,返回错误码 + + 访问设备,把一段数据写入某段寄存器。 + + + + + 获取设备属性树XML + + 设备xml + 成功,返回MV_OK;失败,返回错误码 + + + + 获得当前节点的访问模式 + + 节点名称 + 节点的访问模式 + 成功,返回MV_OK;失败,返回错误码 + + + + 获得当前节点的类型 + + 节点名称 + 节点类型 + 成功,返回MV_OK;失败,返回错误码 + + + + 从设备读取文件,保存为本地文件 + + 设备文件名 + 本地文件路径 + 成功,返回MV_OK;失败,返回错误码 + + + + 从设备读取文件,保存在内存 + + 设备文件名 + 缓存 + 成功,返回MV_OK;失败,返回错误码 + + + + 将文件写入设备 + + 设备文件名 + 本地文件路径 + 成功,返回MV_OK;失败,返回错误码 + + + + 将内存中的文件写入设备 + + 设备文件名 + 缓存 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取文件存取的进度 + + 已完成的长度 + 总长度 + 成功,返回MV_OK;失败,返回错误码 + + + + 设备句柄 + + + + + FileAccessRead到Byte数组时的默认文件大小 + + + + + 构造函数 + + + + + + 提供像素格式转换相关接口 + + + + + 设置图像插值算法类型 + + 图像插值算法 + 成功,返回MV_OK;失败,返回错误码 + + 设置内部图像转换接口的Bayer插值算法类型参数,使用的插值算法是该接口所设定的 + + + + + 插值算法平滑使能设置 + + 平滑使能(默认关闭) + 成功,返回MV_OK;失败,返回错误码 + + 设置内部图像转换接口的Bayer插值平滑使能参数,使用的插值算法是该接口所设定的。 + + + + + 设置Bayer格式的Gamma值 + + Gamma值:0.1 ~ 4.0 + 成功,返回MV_OK;失败,返回错误码 + + 设置该值后,将Bayer8/10/12/16格式转成RGB24/48, RGBA32/64,BGR24/48,BGRA32/64时起效。 + + + + + 设置Mono8/Bayer8/10/12/16格式的Gamma值 + + 像素格式 + Gamma值:0.1 ~ 4.0 + 成功,返回MV_OK;失败,返回错误码 + + 设置Mono8的gamma值后,再调用将Mono8转成Mono8时gamma值起效。 + 设置Bayer8/10/12/16的gamma值后,将Bayer8/10/12/16格式转成RGB24/48, RGBA32/64,BGR24/48,BGRA32/64时起效。 + 该接口兼容接口,新增支持Mono8像素格式 + + + + + 设置Bayer格式的Gamma信息 + + Gamma参数 + 成功,返回MV_OK;失败,返回错误码 + + 设置该信息后,在将Bayer8/10/12/16格式转成RGB24/48, RGBA32/64,BGR24/48,BGRA32/64时起效。 + + + + + 设置Bayer格式的CCM使能和矩阵,量化系数默认1024 + + CCM参数 + 成功,返回MV_OK;失败,返回错误码 + + 开启CCM并设置CCM矩阵后,在将Bayer8/10/12/16格式转成RGB24/48, RGBA32/64,BGR24/48,BGRA32/64时起效。 + + + + + 像素格式转换 + + 输入图像 + 输出图像。图像使用完之后需调用Dispose方法及时释放内存,防止内存快速上涨。 + 目标像素格式 + 成功,返回MV_OK;失败,返回错误码 + + + + 像素格式转换 + + 输入图像 + 输出图像缓存 + 输出图像长度 + 目标像素格式 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取像素格式转换所需的缓存大小 + + 目标像素格式 + 图像宽 + 图像高 + 缓存大小 + + + + 设备句柄, 用于内部做格式转换 + + + + + 构造函数,内部创建内存池,只在ToBitmap中使用 + + 设备句柄 + + + + 构造函数 + + 设备句柄 + + + + + 设置图像插值算法类型 + + 图像插值算法 + 成功,返回MV_OK;失败,返回错误码 + + + + 插值算法平滑使能设置 + + 平滑使能(默认关闭) + 成功,返回MV_OK;失败,返回错误码 + + + + 设置Bayer格式的Gamma值 + + Gamma值:0.1 ~ 4.0 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置Mono8/Bayer8/10/12/16格式的Gamma值 + + 像素格式 + Gamma值:0.1 ~ 4.0 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置Bayer格式的Gamma信息 + + Gamma参数 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置Bayer格式的CCM使能和矩阵,量化系数默认1024 + + CCM参数 + 成功,返回MV_OK;失败,返回错误码 + + + + 将图像转换为指定格式,输出IImage图像 + + 输入图像 + 输出图像 + 目的像素格式 + 成功,返回MV_OK;失败,返回错误码 + + + + 将图像转换为指定格式,输出Byte数组 + + 输入图像 + 输出图像缓存 + 输出图像长度 + 目的像素格式 + 成功,返回MV_OK;失败,返回错误码 + + outBuffer设置为null时, outDataLen会给出结果图像需要的缓存长度 + + + + + 获取像素格式转换所需的缓存大小 + + 目标像素格式 + 图像宽 + 图像高 + 缓存大小 + + + + SDk全局信息及操作接口 + + + + + 获取SDK版本信息 + + SDK版本号,格式x.y.z.a + + + + 初始化SDK + + 成功,返回MV_OK;失败,返回错误码 + + + + 反初始化SDK,释放资源 + + 成功,返回MV_OK;失败,返回错误码 + + + + 图像数据和帧信息 + + + + + 图像数据 + + + + + 帧号 + + + + + 设备时间戳 + + + + + 主机时间戳 + + + + + 帧长度 + + + + + 设备水印时标 + + + + + 周期数 + + + + + 周期偏移量 + + + + + 增益 + + + + + 曝光时间 + + + + + 平均亮度 + + + + + 白平衡红色通道 + + + + + 白平衡绿色通道 + + + + + 白平衡蓝色通道 + + + + + 总帧数 + + + + + 触发计数 + + + + + 输入 + + + + + 输出 + + + + + ROI区域,水平偏移量 + + + + + ROI区域,垂直偏移量 + + + + + 本帧丢包数 + + + + + Chunk数据 + + + + + 深拷贝 + + + + + + 相机句柄 + + + + + 图像类 + + + + + 提供取流相关接口 + + + + + 设置SDK内部图像缓存节点个数,大于等于1 + + 缓存节点个数 + 成功,返回MV_OK;失败,返回错误码 + + 调用该接口可以设置SDK内部图像缓存节点个数,在 IStreamGrabber.StartGrabbing() 前调用。 + 不同相机因为取流方式不同,不调用SetImageNodeNum方法的情况下,不同相机默认缓存节点的个数不同:比如 双U内部分配默认3个节点。 + SDK实际分配的节点个数 = SDK内部预分配的个数 + 用户分配的节点(SetImageNodeNum); + + + + + 获取当前图像缓存区的有效图像个数 + + 有效图像个数 + 成功,返回MV_OK;失败,返回错误码 + + + + 开始取流 + + 成功,返回MV_OK;失败,返回错误码 + + + + 开始取流,支持设置取流策略 + + 策略枚举值 + 成功,返回MV_OK;失败,返回错误码 + + + + 设置输出缓存个数(只有在 StreamGrabStrategy.LatestImages 策略下才有效,范围:1-ImageNodeNum) + + 输出缓存个数 + 成功,返回MV_OK;失败,返回错误码 + + + + 停止取流 + + 成功,返回MV_OK;失败,返回错误码 + + + + 获取一帧图像 + + 等待超时时间 + 图像数据和图像信息 + 成功,返回MV_OK;失败,返回错误码 + + + + 释放图像缓存(此接口用于释放不再使用的图像缓存,与 IStreamGrabber.FreeImageBuffer() 配套使用) + + 图像数据和图像数据 + 成功,返回MV_OK;失败,返回错误码 + + + + 清除取流数据缓存 + + 成功,返回MV_OK;失败,返回错误码 + + 该接口允许用户在不停止取流的时候,就能清除缓存中不需要的图像。 + 该接口在连续模式切触发模式后,可以清除历史数据。 + + + + + 设备流异常事件,只有USB设备支持 + + + 在StartGrabbing前调用 + + + + + 采集一帧图像的事件,获取图像数据 + + + 在StartGrabbing前调用 + + + + + 内部回调图像回调函数 + + + + + + + + 内部流异常回调函数 + + + + + + + 将MvCCDll中的帧结构体转为FrameOut类 + + + + + + + + USB流异常回调 + + + + + 设置U3V的传输包大小 + + 传输的包大小,单位:Byte,默认为1M,范围:Windows[0x400, 0x400000], Linux[0x400, 0x200000] + 成功,返回MV_OK;失败,返回错误码 + + 增加传输包大小可以适当降低取流时的CPU占用率。但不同的PC和不同USB扩展卡存在不同的兼容性,如果该参数设置过大可能会出现取不到图像的风险。 + + + + + 获取U3V的传输包大小 + + 传输的包大小, 单位:Byte + 成功,返回MV_OK;失败,返回错误码 + + + + 设置U3V的传输通道个数 + + 传输通道个数,范围:1-10 + 成功,返回MV_OK;失败,返回错误码 + + 可根据PC的性能、设备出图帧率、图像大小和内存使用率等因素对该参数进行调节。但不同的PC和不同的USB扩展卡存在不同的兼容性。 + + + + + 获取U3V的传输通道个数 + + 传输通道个数 + 成功,返回MV_OK;失败,返回错误码 + + 该接口用于获取当前的U3V异步取流节点个数,2000W设备的MONO8默认为3个,YUV为默认2个,RGB为默认1个,其它情况默认8个节点。 + + + + + 设置U3V的事件缓存节点个数 + + 事件缓存节点个数,范围:1-64 + 成功,返回MV_OK;失败,返回错误码 + + 该接口用于设置当前的U3V事件缓存节点个数,默认情况下为5个。 + + + + + 设置U3V相机同步读写超时时间,范围为1000~UINT,默认1000 ms + + 同步读写超时时间 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取U3V相机同步读写超时时间 + + 同步读写超时时间 + 成功,返回MV_OK;失败,返回错误码 + + + + 获取主机从USB设备接收的数据统计信息,如已接收字节数、帧数 + + USB传输信息 + 成功,返回MV_OK;失败,返回错误码 + + + + 录像功能实现类 + + + + + 录像,将图片录制成AVI格式视频 + + + + + 开始录像 + + 录像文件存放路径 + 录像参数 + 成功,返回MV_OK;失败,返回错误码 + + + + 输入录像数据 + + 图像数据 + 成功,返回MV_OK;失败,返回错误码 + + + + 停止录像 + + 成功,返回MV_OK;失败,返回错误码 + + + + 异常信息 + + + + + 错误码 + + + + + Xml节点访问模式 + + + + + 不可实现 + + + + + 不可用 + + + + + 只写 + + + + + 只读 + + + + + 读写 + + + + + 未定义 + + + + + 内部用于AccessMode循环检测 + + + + + 每个节点对应的接口类型 + + + + + Value + + + + + Base + + + + + Integer + + + + + Boolean + + + + + Command + + + + + Float + + + + + String + + + + + Register + + + + + Category + + + + + Enumeration + + + + + EnumEntry + + + + + Port + + + + + 节点错误信息的类型 + + + + + 节点不存在 + + + + + 访问条件错误,通常是节点不可读写 + + + + + 写入越界,超出该节点支持的范围 + + + + + 校验失败,通常是写入的值与文件中的值不匹配 + + + + + 其它错误,可查阅日志 + + + + + 图像插值算法类型 + + + + + 快速 + + + + + 均衡 + + + + + 最优 + + + + + 最优+ + + + + + Gamma类型 + + + + + 不启用 + + + + + Gamma值 + + + + + Gamma曲线 + 8位,长度:256*sizeof(unsigned char) + 10位,长度:1024*sizeof(unsigned short) + 12位,长度:4096*sizeof(unsigned short) + 16位,长度:65536*sizeof(unsigned short) + + + + + linear RGB to sRGB + + + + + sRGB to linear RGB(仅色彩插值时支持,色彩校正时无效) + + + + + Gamma参数 + + + + + Gamma类型 + + + + + Gamma值[0.1, 4.0] + + + + + Gamma曲线缓存 + + + + + Gamma曲线长度 + + + + + CCM参数 + + + + + 是否启用CCM + + + + + CCM矩阵[-65536~65536],必须是Int32[9] + + + + + 量化系数(2的整数幂,最大65536) + + + + + 流异常类型 + + + + + 异常的图像,该帧被丢弃 + + + + + 缓存列表溢出,清除最旧的一帧 + + + + + 缓存列表为空,该帧被丢弃 + + + + + 断流恢复 + + + + + 断流,恢复失败,取流被中止 + + + + + 设备异常,取流被中止 + + + + + 流异常事件 + + + + + 流异常类型 + + + + + 取流策略 + + + + + 从旧到新一帧一帧的获取图像(默认为该策略) + + + + + 获取列表中最新的一帧图像,同时清除列表中的其余图像 + + + + + 从输出缓存列表中获取最新的OutputQueueSize帧图像,其中OutputQueueSize范围为1-ImageNodeNum,可用 SetOutputQueueSize()接口设置。ImageNodeNum默认为1,可调用SetImageNodeNum()接口设置。 OutputQueueSize设置成1等同于LatestImagesOnly策略,OutputQueueSize设置成ImageNodeNum等同于OneByOne策略。 + + + + + 在调用取流接口时忽略输出缓存列表中所有图像,并等待设备即将生成的一帧图像。该策略只支持GigE设备,不支持U3V设备 + + + + + 采集一帧图像的事件,用于获取图像数据和帧信息 + + + + + 图像帧信息 + + + + + 视频格式 + + + + + AVI格式 + + + + + 录像参数 + + + + + 输入数据的像素格式 + + + + + 图像宽(指定目标参数时需为2的倍数) + + + + + 图像高(指定目标参数时需为2的倍数) + + + + + 帧率fps(大于1/16) + + + + + 码率kbps(128-16*1024) + + + + + 录像格式 + + + + + MyCamera + + + + ch GigE Vision采集卡 |en GigE Vision interface + + + ch Camera Link采集卡 |en Camera Link interface + + + ch CoaXPress采集卡 |en CoaXPress interface + + + ch XoFLink采集卡 |en XoFLink interface + + + Unknown Device Type, Reserved + + + GigE Device + + + 1394-a/b Device + + + USB3.0 Device + + + CameraLink Device + + + Virtual GigE Device + + + Virtual USB Device + + + GenTL GigE Device + + + GenTL CML Device + + + GenTL CXP Device + + + GenTL XOF Device + + + + ch:信息结构体的最大缓存 | en: Max buffer size of information structs + + + + + 最大的相机数量 + + + + + ch:最大Interface数量 | en:Max num of interfaces + + + + + ch:最大GenTL设备数量 | en:Max num of GenTL devices + + + + + XML节点描述最大长度 + + + + + XML节点最大长度 + + + + + XML节点最大数量 + + + + + XML节点显示名最大数量 + + + + + string类型节点值的最大长度 + + + + + 最大父节点数 + + + + + 最大节点描述长度 + + + + + 设备断开连接 + + + + + SDK与驱动版本不匹配 + + + + + 相机Event事件名称最大长度 + + + + 最大枚举条目对应的符号长度 + + + 分时曝光时最多将源图像拆分的个数 + + + + ch:最大支持的采集卡数量 | en:The maximum number of Frame Grabber interface supported + + + + + ch 静态 |en Static + + + + + ch DHCP |en DHCP + + + + + ch LLA |en LLA + + + + + 9600 + + + + + 19200 + + + + + 38400 + + + + + 57600 + + + + + 115200 + + + + + 230400 + + + + + 460800 + + + + + 921600 + + + + + ch 最大值 |en Auto Max + + + + + ch 网络流量和丢包信息 |en Network traffic and packet loss information + + + + + ch host接收到来自U3V设备的字节总数 |en The total number of bytes host received from U3V device + + + + + ch独占权限,其他APP只允许读CCP寄存器 |en Exclusive authority, other APP is only allowed to read the CCP register + + + + + ch 可以从5模式下抢占权限,然后以独占权限打开 |en You can seize the authority from the 5 mode, and then open with exclusive authority + + + + + ch 控制权限,其他APP允许读所有寄存器 |en Control authority, allows other APP reading all registers + + + + + ch 可以从5的模式下抢占权限,然后以控制权限打开 |en You can seize the authority from the 5 mode, and then open with control authority + + + + + ch 以可被抢占的控制权限打开 |en Open with seized control authority + + + + + ch 可以从5的模式下抢占权限,然后以可被抢占的控制权限打开 |en You can seize the authority from the 5 mode, and then open with seized control authority + + + + + ch 读模式打开设备,适用于控制权限下 |en Open with read mode and is available under control authority + + + + 成功,无错误 + + + 错误或无效的句柄 + + + 不支持的功能 + + + 缓存已满 + + + 函数调用顺序错误 + + + 错误的参数 + + + 资源申请失败 + + + 无数据 + + + 前置条件有误,或运行环境已发生变化 + + + 版本不匹配 + + + 传入的内存空间不足 + + + 异常图像,可能是丢包导致图像不完整 + + + 动态导入DLL失败 + + + 没有可输出的缓存 + + + 加密错误 + + + 打开文件出现错误 + + + 未知的错误 + + + 通用错误 + + + 参数非法 + + + 值超出范围 + + + 属性 + + + 运行环境有问题 + + + 逻辑错误 + + + 节点访问条件有误 + + + 超时 + + + 转换异常 + + + GenICam未知错误 + + + 命令不被设备支持 + + + 访问的目标地址不存在 + + + 目标地址不可写 + + + 设备无访问权限 + + + 设备忙,或网络断开 + + + 网络包数据错误 + + + 网络相关错误 + + + 设备IP冲突 + + + 读usb出错 + + + 写usb出错 + + + 设备异常 + + + GenICam相关错误 + + + 带宽不足 + + + 驱动不匹配或者未装驱动 + + + USB未知的错误 + + + 升级固件不匹配 + + + 升级固件语言不匹配 + + + 升级冲突(设备已经在升级了再次请求升级即返回此错误) + + + 升级时设备内部出现错误 + + + 升级时未知错误 + + + 处理正确 + + + 不确定类型错误 + + + 能力集中存在无效参数 + + + 内存地址为空 + + + 内存对齐不满足要求 + + + 内存空间大小不够 + + + 内存空间大小不满足对齐要求 + + + 内存地址不满足对齐要求 + + + 图像格式不正确或者不支持 + + + 图像宽高不正确或者超出范围 + + + 图像宽高与step参数不匹配 + + + 图像数据存储地址为空 + + + 设置或者获取参数类型不正确 + + + 设置或者获取参数的输入、输出结构体大小不正确 + + + 处理类型不正确 + + + 处理时输入、输出参数大小不正确 + + + 子处理类型不正确 + + + 子处理时输入、输出参数大小不正确 + + + index参数不正确 + + + value参数不正确或者超出范围 + + + param_num参数不正确 + + + 函数参数指针为空 + + + 超过限定的最大内存 + + + 回调函数出错 + + + 加密错误 + + + 算法库使用期限错误 + + + 参数范围不正确 + + + 数据大小不正确 + + + 数据step不正确 + + + cpu不支持优化代码中的指令集 + + + 警告 + + + 算法库超时 + + + 算法版本号出错 + + + 模型版本号出错 + + + GPU内存分配错误 + + + 文件不存在 + + + 字符串为空 + + + 图像解码器错误 + + + 打开文件错误 + + + 文件读取错误 + + + 文件写错误 + + + 文件读取大小错误 + + + 文件类型错误 + + + 模型类型错误 + + + 分配内存错误 + + + 线程绑核失败 + + + 噪声特性图像格式错误 + + + 噪声特性类型错误 + + + 噪声特性个数错误 + + + 噪声特性增益个数错误 + + + 噪声曲线增益值输入错误 + + + 噪声曲线柱数错误 + + + 噪声估计初始化增益设置错误 + + + 噪声估计未初始化 + + + 颜色空间模式错误 + + + 图像ROI个数错误 + + + 图像ROI原点错误 + + + 图像ROI大小错误 + + + 输入的相机增益不存在(增益个数已达上限) + + + 输入的相机增益不在范围内 + + + 输入的噪声特性内存大小错误 + + + + Constructor + + + + + Destructor + + + + + 设备句柄 + + + + + Initialize + + Success, return MV_OK. Failure, return error code + + + + Finalize + + Success, return MV_OK. Failure, return error code + + + + 枚举采集卡设备信息 + + 采集卡类型 + 设备信息 + Success, return MV_OK. Failure, return error code + + + + 创建采集卡设备句柄 + + 采集卡设备信息 + Success, return MV_OK. Failure, return error code + + + + 通过采集卡ID创建设备句柄 + + 采集卡ID + Success, return MV_OK. Failure, return error code + + + + 打开采集卡设备 + + 采集卡信息配置文件(目前不支持传配置文件) + + + + + 关闭采集卡 + + Success, return MV_OK. Failure, return error code + + + + 销毁采集卡句柄 + + Success, return MV_OK. Failure, return error code + + + + Get Camera Handle + + + + + + Get SDK Version + + Always return 4 Bytes of version number |Main |Sub |Rev |Test| + 8bits 8bits 8bits 8bits + + + + + Get supported Transport Layer + + Supported Transport Layer number + + + + Enumerate Device + + Enumerate TLs + Device List + Success, return MV_OK. Failure, return error code + + + + Enumerate device according to manufacture name + + Enumerate TLs + Device List + Manufacture Name + Success, return MV_OK. Failure, return error code + + + + Enumerate device according to the specified ordering + + Transmission layer of enumeration(All layer protocol type can input) + Device list + Manufacture Name + Sorting Method + Success, return MV_OK. Failure, return error code + + + + Is the device accessible + + Device Information + Access Right + Access, return true. Not access, return false + + + + Set SDK log path (Interfaces not recommended) + If the logging service MvLogServer is enabled, the interface is invalid and The logging service is enabled by default + + + + + + + Create Device + + Device Information + Success, return MV_OK. Failure, return error code + + + + Create Device without log + + Device Information + Success, return MV_OK. Failure, return error code + + + + Destroy Device + + Success, return MV_OK. Failure, return error code + + + + Open Device + + Success, return MV_OK. Failure, return error code + + + + Open Device + + Access Right + Switch key of access right + Success, return MV_OK. Failure, return error code + + + + Close Device + + Success, return MV_OK. Failure, return error code + + + + Is the device connected + + Connected, return true. Not Connected or DIsconnected, return false + + + + Register the image callback function + + Callback function pointer + User defined variable + Success, return MV_OK. Failure, return error code + + + + Register the RGB image callback function + + Callback function pointer + User defined variable + Success, return MV_OK. Failure, return error code + + + + Register the BGR image callback function + + Callback function pointer + User defined variable + Success, return MV_OK. Failure, return error code + + + + Start Grabbing + + Success, return MV_OK. Failure, return error code + + + + Stop Grabbing + + Success, return MV_OK. Failure, return error code + + + + Get one frame of RGB image, this function is using query to get data + query whether the internal cache has data, get data if there has, return error code if no data + + Image data receiving buffer + Buffer size + Image information + Waiting timeout + Success, return MV_OK. Failure, return error code + + + + Get one frame of BGR image, this function is using query to get data + query whether the internal cache has data, get data if there has, return error code if no data + + Image data receiving buffer + Buffer size + Image information + Waiting timeout + Success, return MV_OK. Failure, return error cod + + + + Get a frame of an image using an internal cache + + Image data and image information + Waiting timeout + Success, return MV_OK. Failure, return error code + + + + Free image buffer(used with MV_CC_GetImageBuffer) + + Image data and image information + Success, return MV_OK. Failure, return error code + + + + Get a frame of an image + + Image data receiving buffer + Buffer size + Image information + Waiting timeout + Success, return MV_OK. Failure, return error code + + + + Clear image Buffers to clear old data + + Success, return MV_OK. Failure, return error code + + + + Get the number of valid images in the current image buffer + + The number of valid images in the current image buffer + Success, return MV_OK. Failure, return error code + + + + Display one frame image + + Image information + Success, return MV_OK. Failure, return error code + + + + Display one frame image Ex + + dispaly Handle + Image information + Success, return MV_OK. Failure, return error code + + + + Set the number of the internal image cache nodes in SDK(Greater than or equal to 1, to be called before the capture) + + Number of cache nodes + Success, return MV_OK. Failure, return error code + + + + Set Grab Strategy + + The value of grab strategy + Success, return MV_OK. Failure, return error code + + + + Set The Size of Output Queue(Only work under the strategy of MV_GrabStrategy_LatestImages,rang:1-ImageNodeNum) + + The Size of Output Queue + Success, return MV_OK. Failure, return error code + + + + Get device information(Called before start grabbing) + + device information + Success, return MV_OK. Failure, return error code + + + + Get various type of information + + Various type of information + Success, return MV_OK. Failure, return error code + + + + Get Integer value + + Key value, for example, using "Width" to get width + Value of device features + Success, return MV_OK. Failure, return error code + + + + Set Integer value + + Key value, for example, using "Width" to set width + Feature value to set + Success, return MV_OK. Failure, return error code + + + + Get Enum value + + Key value, for example, using "PixelFormat" to get pixel format + Value of device features + Success, return MV_OK. Failure, return error code + + + + Set Enum value + + Key value, for example, using "PixelFormat" to set pixel format + Feature value to set + Success, return MV_OK. Failure, return error code + + + + Get the symbolic of the specified value of the Enum type node + + Key value, for example, using "PixelFormat" to set pixel format + Symbolic to get + Success, return MV_OK. Failure, return error code + + + + Set Enum value + + Key value, for example, using "PixelFormat" to set pixel format + Feature String to set + Success, return MV_OK. Failure, return error code + + + + Get Float value + + Key value + Value of device features + Success, return MV_OK. Failure, return error code + + + + Set float value + + Key value + Feature value to set + Success, return MV_OK. Failure, return error code + + + + Get Boolean value + + Key value + Value of device features + Success, return MV_OK. Failure, return error code + + + + Set Boolean value + + Key value + Feature value to set + Success, return MV_OK. Failure, return error code + + + + Get String value + + Key value + Value of device features + Success, return MV_OK. Failure, return error code + + + + Set String value + + Key value + Feature value to set + Success, return MV_OK. Failure, return error code + + + + Send Command + + Key value + Success, return MV_OK. Failure, return error code + + + + Read Memory + + Used as a return value, save the read-in memory value(Memory value is stored in accordance with the big end model) + Memory address to be read, which can be obtained from the Camera.xml file of the device, the form xml node value of xxx_RegAddr + Length of the memory to be read + Success, return MV_OK. Failure, return error code + + + + Write Memory + + Memory value to be written ( Note the memory value to be stored in accordance with the big end model) + Memory address to be written, which can be obtained from the Camera.xml file of the device, the form xml node value of xxx_RegAddr + Length of the memory to be written + Success, return MV_OK. Failure, return error code + + + + Invalidate GenICam Nodes + + Success, return MV_OK. Failure, return error code + + + + Get camera feature tree XML + + XML data receiving buffer + Buffer size + Actual data length + Success, return MV_OK. Failure, return error code + + + + Get Access mode of cur node + + Name of node + Access mode of the node + Success, return MV_OK. Failure, return error code + + + + Get Interface Type of cur node + + Name of node + Interface Type of the node + Success, return MV_OK. Failure, return error code + + + + Save camera feature + + File name + Success, return MV_OK. Failure, return error code + + + + Load camera feature + + File name + Success, return MV_OK. Failure, return error code + + + + Read the file from the camera + + File access structure + Success, return MV_OK. Failure, return error code + + + + Read the file from the camera + + File access structure + Success, return MV_OK. Failure, return error code + + + + Write the file to camera + + File access structure + Success, return MV_OK. Failure, return error code + + + + Write the file to camera + + File access structure + Success, return MV_OK. Failure, return error code + + + + Get File Access Progress + + File access Progress + Success, return MV_OK. Failure, return error code + + + + Device Local Upgrade + + File path and name + Success, return MV_OK. Failure, return error code + + + + Get Upgrade Progress + + Value of Progress + Success, return MV_OK. Failure, return error code + + + + Register Exception Message CallBack, call after open device + + Exception Message CallBack Function + User defined variable + Success, return MV_OK. Failure, return error code + + + + Register event callback, which is called after the device is opened + + Event CallBack Function + User defined variable + Success, return MV_OK. Failure, return error code + + + + Register single event callback, which is called after the device is opened + + Event name + Event CallBack Function + User defined variable + Success, return MV_OK. Failure, return error code + + + + Set enumerate device timeout + + time out,default 100ms + Success, return MV_OK. Failure, return error code + + + + Force IP + + IP to set + Subnet mask + Default gateway + Success, return MV_OK. Failure, return error code + + + + IP configuration method + + IP type, refer to MV_IP_CFG_x + Success, return MV_OK. Failure, return error code + + + + Set to use only one mode,type: MV_NET_TRANS_x. When do not set, priority is to use driver by default + + Net transmission mode, refer to MV_NET_TRANS_x + Success, return MV_OK. Failure, return error code + + + + Get net transmission information + + Transmission information + Success, return MV_OK. Failure, return error code + + + + Setting the ACK mode of devices Discovery + + ACK mode(Default-Broadcast),0-Unicast,1-Broadcast + Success, return MV_OK. Failure, return error code + + + + Set GVSP streaming timeout + + Timeout, default 300ms, range: >10ms + Success, return MV_OK. Failure, return error code + + + + Get GVSP streaming timeout + + Timeout, ms as unit + Success, return MV_OK. Failure, return error code + + + + Set GVCP cammand timeout + + Timeout, ms as unit, range: 0-10000 + Success, return MV_OK. Failure, return error code + + + + Get GVCP cammand timeout + + Timeout, ms as unit + Success, return MV_OK. Failure, return error code + + + + Set the number of retry GVCP cammand + + The number of retries,rang:0-100 + Success, return MV_OK. Failure, return error code + + + + Get the number of retry GVCP cammand + + The number of retries + Success, return MV_OK. Failure, return error code + + + + Get the optimal Packet Size, Only support GigE Camera + + Optimal packet size + + + + Set whethe to enable resend, and set resend + + Enable resend + Max resend persent + Resend timeout + Success, return MV_OK. Failure, return error code + + + + Set the max resend retry times + + The max times to retry resending lost packets,default 20 + Success, return MV_OK. Failure, return error code + + + + Get the max resend retry times + + the max times to retry resending lost packets + Success, return MV_OK. Failure, return error code + + + + Set time interval between same resend requests + + The time interval between same resend requests,default 10ms + Success, return MV_OK. Failure, return error code + + + + Get time interval between same resend requests + + The time interval between same resend requests + Success, return MV_OK. Failure, return error code + + + + Set transmission type,Unicast or Multicast + + Struct of transmission type + Success, return MV_OK. Failure, return error code + + + + Issue Action Command + + Action Command info + Action Command Result List + Success, return MV_OK. Failure, return error code + + + + Get Multicast Status + + Device Information + Status of Multicast + Success, return MV_OK. Failure, return error code + + + + Set device baudrate using one of the CL_BAUDRATE_XXXX value + + Baudrate to set. Refer to the 'CameraParams.h' for parameter definitions, for example, #define MV_CAML_BAUDRATE_9600 0x00000001 + Success, return MV_OK. Failure, return error code + + + + Get device baudrate, using one of the CL_BAUDRATE_XXXX value + + Return pointer of baud rate to user. + Refer to the 'CameraParams.h' for parameter definitions, for example, #define MV_CAML_BAUDRATE_9600 0x00000001 + Success, return MV_OK. Failure, return error code + + + + Get supported baudrates of the combined device and host interface + + Return pointer of the supported baudrates to user. 'OR' operation results of the supported baudrates. + Refer to the 'CameraParams.h' for single value definitions, for example, #define MV_CAML_BAUDRATE_9600 0x00000001 + Success, return MV_OK. Failure, return error code + + + + Sets the timeout for operations on the serial port + + Timeout in [ms] for operations on the serial port. + Success, return MV_OK. Failure, return error code + + + + Set transfer size of U3V device + + Transfer size,Byte,default:1M,rang:>=0x10000 + Success, return MV_OK. Failure, return error code + + + + Get transfer size of U3V device + + Transfer size,Byte + Success, return MV_OK. Failure, return error code + + + + Set transfer ways of U3V device + + Transfer ways,rang:1-10 + Success, return MV_OK. Failure, return error code + + + + Get transfer ways of U3V device + + Transfer ways + Success, return MV_OK. Failure, return error code + + + + Register Stream Exception Message CallBack + + Stream Exception Message CallBack Function + User defined variable + Success, return MV_OK. Failure, return error code + + + + Set the number of U3V device event cache nodes + + Event Node Number + Success, return MV_OK. Failure, return error code + + + + Set U3V Camera Synchronisation timeout + + Synchronisation time(ms), default 1000ms + Success, return MV_OK. Failure, return error code + + + + Get U3V Camera Synchronisation timeout + + Synchronisation time(ms), default 1000ms + Success, return MV_OK. Failure, return error code + + + + Enumerate interfaces by GenTL + + Interface information list + Path of GenTL's cti file + + + + + Unload cti library + + GenTL cti file path + Success, return MV_OK. Failure, return error code + + + + Enumerate Device Based On GenTL + + Interface information + Device List + Success, return MV_OK. Failure, return error code + + + + Create Device Handle Based On GenTL Device Info + + Device Information Structure + Success, return MV_OK. Failure, return error code + + + + Save image, support Bmp and Jpeg. + + Save image parameters structure + Success, return MV_OK. Failure, return error code + + + + Save the image file, support Bmp、 Jpeg、Png and Tiff. Encoding quality(50-99] + + Save the image file parameter structure + Success, return MV_OK. Failure, return error code + + + + Save 3D point data, support PLY、CSV and OBJ + + Save 3D point data parameters structure + Success, return MV_OK. Failure, return error code + + + + Rotate Image + + Rotate image parameter structure + Success, return MV_OK. Failure, return error code + + + + Flip Image + + Flip image parameter structure + Success, return MV_OK. Failure, return error code + + + + Pixel format conversion + + Convert Pixel Type parameter structure + Success, return MV_OK. Failure, return error code + + + + Interpolation algorithm type setting + + Bayer interpolation method 0-Fast 1-Equilibrium 2-Optimal + Success, return MV_OK. Failure, return error code + + + + Filter type of the bell interpolation quality algorithm setting + + Filter type enable + Success, return MV_OK. Failure, return error code + + + + Set Bayer Gamma value + + Gamma value[0.1,4.0] + Success, return MV_OK. Failure, return error code + + + + Set Mono8/Bayer Gamma value + + PixelType + Gamma value[0.1,4.0] + Success, return MV_OK. Failure, return error code + + + + Set Gamma param + + Gamma parameter structure + Success, return MV_OK. Failure, return error code + + + + Set CCM param + + CCM parameter structure + Success, return MV_OK. Failure, return error code + + + + Set CCM param + + CCM parameter structure + Success, return MV_OK. Failure, return error code + + + + Adjust image contrast + + Contrast parameter structure + Success, return MV_OK. Failure, return error code + + + + High Bandwidth Decode + + High Bandwidth Decode parameter structure + Success, return MV_OK. Failure, return error code + + + + Draw Rect Auxiliary Line + + Rect Auxiliary Line Info + Success, return MV_OK. Failure, return error code + + + + Draw Circle Auxiliary Line + + Circle Auxiliary Line Info + Success, return MV_OK. Failure, return error code + + + + Draw Line Auxiliary Line + + Linear Auxiliary Line Info + Success, return MV_OK. Failure, return error code + + + + Start Record + + Record param structure + Success, return MV_OK. Failure, return error code + + + + Input RAW data to Record + + Record data structure + Success, return MV_OK. Failure, return error code + + + + Stop Record + + Success, return MV_OK. Failure, return error code + + + + Open the GUI interface for getting or setting camera parameters + + Success, return MV_OK. Failure, return error code + + + + Reconstruct Image(For time-division exposure function) + + Reconstruct image parameters + Success, return MV_OK. Failure, return error code + + + + Byte array to struct + + Byte array + Struct type + Struct object + + + + 判断字符数组是否为utf-8 + + 字符数组 + + + + + Write Error Message + + Message + ErrorNum + + + + Save image, support Bmp and Jpeg. + + Save image parameters structure + Success, return MV_OK. Failure, return error code + + + + Save the image file, support Bmp、 Jpeg、Png and Tiff. Encoding quality(50-99] + + Save the image file parameter structure + Success, return MV_OK. Failure, return error code + + + + Pixel format conversion + + Convert Pixel Type parameter structure + Success, return MV_OK. Failure, return error code + + + + Get basic information of image (Interfaces not recommended) + + + + + + + Get GenICam proxy (Interfaces not recommended) + + + + + + Get root node (Interfaces not recommended) + + + + + + + Get all children node of specific node from xml, root node is Root (Interfaces not recommended) + + + + + + + + Get all children node of specific node from xml, root node is Root (Interfaces not recommended) + + + + + + + + Get current node feature (Interfaces not recommended) + + + + + + + + Update node (Interfaces not recommended) + + + + + + + + Register update callback (Interfaces not recommended) + + + + + + + + Noise estimate of Bayer format + + Noise estimate parameter structure + Success, return MV_OK. Failure, return error code + + + + Spatial Denoise of Bayer format + + Spatial Denoise parameter structure + Success, return MV_OK. Failure, return error code + + + + This interface is abandoned, it is recommended to use the MV_CC_DisplayOneFrame + + + + + + + This interface is abandoned, it is recommended to use the MV_CC_GetOneFrameTimeOut + + + + + + + + + This interface is abandoned, it is recommended to use the MV_CC_GetOneFrameTimeOut + + + + + + + + + This interface is abandoned, it is recommended to use the MV_CC_SaveImageEx + + + + + + + This interface is abandoned, it is recommended to use the MV_GIGE_ForceIpEx + + + + + + + This interface is abandoned, it is recommended to use the MV_CC_RegisterEventCallBackEx + + + + + + + + This interface is abandoned, it is recommended to use the MV_CC_GetIntValueEx + + + + + + + + This interface is abandoned, it is recommended to use the MV_CC_SetIntValueEx + + + + + + + + Set CLUT param + + CLUT parameter structure + Success, return MV_OK. Failure, return error code + + + + Image sharpen + + Sharpen parameter structure + Success, return MV_OK. Failure, return error code + + + + Color Correct(include CCM and CLUT) + + Color Correct parameter structure + Success, return MV_OK. Failure, return error code + + + + Noise Estimate + + Noise Estimate parameter structure + Success, return MV_OK. Failure, return error code + + + + Spatial Denoise + + Spatial Denoise parameter structure + Success, return MV_OK. Failure, return error code + + + + LSC Calib + + LSC Calib parameter structure + Success, return MV_OK. Failure, return error code + + + + LSC Correct + + LSC Correct parameter structure + Success, return MV_OK. Failure, return error code + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + Set PixelFormat + + PixelFormat + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + Get Trigger Source + + Trigger Source + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is replaced by general interface + + + + + + + This interface is abandoned, it is recommended to use the MV_CC_RegisterImageCallBackEx + + + + + + + + Grab callback + + Image data + Frame info + User defined variable + + + + Grab callback + + Image data + Frame info + User defined variable + + + + Xml Update callback(Interfaces not recommended) + + Node type + Current node feature structure + Nodes list + User defined variable + + + + Exception callback + + Msg type + User defined variable + + + + Event callback (Interfaces not recommended) + + User defined ID + User defined variable + + + + Event callback + + Event Info + User defined variable + + + + Stream Exception callback + + Msg type + User defined variable + + + + ch:采集卡信息列表 | en: Interface Information List + + + + + ch:在线设备数量 | en:Online Interface Number + + + + + ch:支持最多64个设备 | en:Support up to 64 Interfaces + + + + + ch:采集卡信息 | en: Interface information + + + + + ch: 采集卡类型; 低16位有效: bits(0~2)代表功能, bits(3~7)代表相机, bits(8-15)代表总线| en: Interface type + + + + + ch: 采集卡的PCIE插槽信息 | en: PCIe slot information of interface + + + + + ch: 采集卡ID | en: Interface ID + + + + + ch 显示名称 | en: Display name + + + + + ch 序列号 |en: Serial number + + + + + ch 型号 | en: model name + + + + + ch: 厂商 |en: manufacturer name + + + + + ch: 版本号| en: device version + + + + + ch: 自定义名称 |en: user defined name + + + + + ch 保留字段 | en Reserved + + + + + 排序方式 + + + + + 按序列号排序 + + + + + 按用户自定义名字排序 + + + + + 按当前IP地址排序(升序) + + + + + 按当前IP地址排序(降序) + + + + + ch: GigE设备信息 | en: GigE device information + + + + + IP 配置选项 + + + + + IP configuration:bit31-static bit30-dhcp bit29-lla + + + + + curtent ip + + + + + curtent subnet mask + + + + + current gateway + + + + + 制造商名 + + + + + 型号名 + + + + + 设备版本信息 + + + + + 制造商特殊信息 + + + + + 序列号 + + + + + 用户自定义名 + + + + + 网口IP地址 + + + + + 预留 + + + + + ch: GigE设备信息 | en: GigE device information + + + + + IP 配置选项 + + + + + IP configuration:bit31-static bit30-dhcp bit29-lla + + + + + curtent ip + + + + + curtent subnet mask + + + + + current gateway + + + + + 制造商名 + + + + + 型号名 + + + + + 设备版本信息 + + + + + 制造商特殊信息 + + + + + 序列号 + + + + + 用户自定义名 + + + + + 网口IP地址 + + + + + 预留 + + + + + ch:USB3 设备信息 | en:USB3 device information + + + + + 控制输入端点 + + + + + 控制输出端点 + + + + + 流端点 + + + + + 事件端点 + + + + + 供应商ID号 + + + + + 产品ID号 + + + + + 设备索引号 + + + + + 设备GUID号 + + + + + 供应商名字 + + + + + 型号名字 + + + + + 家族名字 + + + + + 设备版本号 + + + + + 制造商名字 + + + + + 序列号 + + + + + 用户自定义名字 + + + + + 支持的USB协议 + + + + + 保留字节 + + + + + ch:USB3 设备信息 | en:USB3 device information + + + + + 控制输入端点 + + + + + 控制输出端点 + + + + + 流端点 + + + + + 事件端点 + + + + + 供应商ID号 + + + + + 产品ID号 + + + + + 设备索引号 + + + + + 设备GUID号 + + + + + 供应商名字 + + + + + 型号名字 + + + + + 家族名字 + + + + + 设备版本号 + + + + + 制造商名字 + + + + + 序列号 + + + + + 用户自定义名字 + + + + + 支持的USB协议 + + + + + 保留字节 + + + + + ch:CamLink设备信息 | en:CamLink device information + + + + + 端口号ID + + + + + 模型名 + + + + + 家族名 + + + + + 设备版本信息 + + + + + 制造商名字 + + + + + 序列号 + + + + + 保留字节 + + + + + ch:采集卡Camera Link相机信息 | en:Camera Link device information on frame grabber + + + + + ch 采集卡ID |en Interface ID of Frame Grabber + + + + + ch 供应商名字 |en Vendor name + + + + + ch 型号名字 |en Model name + + + + + ch 厂商信息 |en Manufacturer information + + + + + ch 相机版本 |en Device version + + + + + ch 序列号 |en Serial number + + + + + ch 用户自定义名字 |en User defined name + + + + + ch 相机ID |en Device ID + + + + + ch 保留字段 |en Reserved + + + + + ch:CoaXPress相机信息 | en:CoaXPress device information + + + + + ch 采集卡ID |en Interface ID of Frame Grabber + + + + + ch 供应商名字 |en Vendor name + + + + + ch 型号名字 |en Model name + + + + + ch 厂商信息 |en Manufacturer information + + + + + ch 相机版本 |en Device version + + + + + ch 序列号 |en Serial number + + + + + ch 用户自定义名字 |en User defined name + + + + + ch 相机ID |en Device ID + + + + + ch 保留字段 |en Reserved + + + + + ch:XoFLink相机信息 | en:XoFLink device information + + + + + ch 采集卡ID |en Interface ID of Frame Grabber + + + + + ch 供应商名字 |en Vendor name + + + + + ch 型号名字 |en Model name + + + + + ch 厂商信息 |en Manufacturer information + + + + + ch 相机版本 |en Device version + + + + + ch 序列号 |en Serial number + + + + + ch 用户自定义名字 |en User defined name + + + + + ch 相机ID |en Device ID + + + + + ch 保留字段 |en Reserved + + + + + ch:设备信息 | en:Device information + + + + + 主版本号 + + + + + 次版本号 + + + + + MAC高地址 + + + + + MAC低地址 + + + + + 设备传输层协议类型,e.g. MV_GIGE_DEVICE + + + + + ch 设备类型信息 | en Device Type Info + + + + + 保留字节 + + + + + 设备类型 + + + + + 构造函数 + + 输入任意数,因为不接受无参构造函数 + + + + ch:特定类型的设备信息 | en:Special devcie information + + + + + GigE + + + + + Camera Link + + + + + Usb + + + + + CML + + + + + CXP + + + + + XOF + + + + + 相机列表 + + + + + 在线设备数量 + + + + + 支持最多256个设备 + + + + + ch:通过GenTL枚举到的Interface信息 | en:Interface Information with GenTL + + + + + GenTL接口ID + + + + + 传输层类型 + + + + + 设备显示名称 + + + + + GenTL的cti文件索引 + + + + + 保留字节 + + + + + ch:通过GenTL枚举到的设备信息列表 | en:Interface Information List with GenTL + + + + + ch:在线设备数量 | en:Online Interface Number + + + + + ch:支持最多256个设备 | en:Support up to 256 Interfaces + + + + + ch:通过GenTL枚举到的设备信息 | en:Device Information discovered by with GenTL + + + + + 采集卡ID + + + + + 设备ID + + + + + 供应商名字 + + + + + 模型名 + + + + + 传输类型 + + + + + 显示名 + + + + + 用户自定义名 + + + + + 序列号 + + + + + 设备版本信息 + + + + + cti文件序号 + + + + + 保留字节 + + + + + ch:通过GenTL枚举到的设备信息 | en:Device Information discovered by with GenTL + + + + + 采集卡ID + + + + + 设备ID + + + + + 供应商名字 + + + + + 模型名 + + + + + 传输类型 + + + + + 显示名 + + + + + 用户自定义名 + + + + + 序列号 + + + + + 设备版本信息 + + + + + cti文件序号 + + + + + 保留字节 + + + + + ch:GenTL设备列表 | en:GenTL devices list + + + + + 在线设备数量 + + + + + 支持最多256个设备 + + + + + Net Trans Info + + + + + 已接收数据大小 [统计StartGrabbing和StopGrabbing之间的数据量] + + + + + 丢帧数量 + + + + + 接收帧数 + + + + + 请求重发包数 + + + + + 重发包数 + + + + + Frame Out Info + + + + + 图像宽 + + + + + 图像高 + + + + + 像素格式 + + + + + 帧号 + + + + + 时间戳高32位 + + + + + 时间戳低32位 + + + + + 保留,8字节对齐 + + + + + 主机生成的时间戳 + + + + + 帧数据大小 + + + + + 丢包数量 + + + + + 保留字节 + + + + + Chunk数据信息 + + + + + Chunk数据 + + + + + ChunkID + + + + + Chunk大小 + + + + + 保留字节 + + + + + Frame Out Info Ex + + + + + 图像宽 + + + + + 图像高 + + + + + 像素格式 + + + + + 帧号 + + + + + 时间戳高32位 + + + + + 时间戳低32位 + + + + + 保留,8字节对齐 + + + + + 主机生成的时间戳 + + + + + Frame大小 + + + + + 秒数 + + + + + 周期数 + + + + + 周期偏移量 + + + + + 增益 + + + + + 曝光时间 + + + + + 平均亮度 + + + + + Red + + + + + Green + + + + + Blue + + + + + 帧计数器 + + + + + 触发计数 + + + + + 输入 + + + + + 输出 + + + + + 水平偏移量 + + + + + 垂直偏移量 + + + + + Chunk宽度 + + + + + Chunk高度 + + + + + 丢包数 + + + + + 为解析的Chunk数量 + + + + + 为解析的Chunk列表 + + + + + 图像宽扩展 + + + + + 图像高扩展 + + + + + 保留字节 + + + + + 为解析的Chunk列表 + + + + + 为解析的Chunk内容 + + + + + 对齐结构体,无实际用途 + + + + + 输出帧信息 + + + + + 帧数据地址 + + + + + 帧信息 + + + + + 保留字节 + + + + + 取流策略 + + + + + 从旧到新一帧一帧的获取图像(默认为该策略) + + + + + 获取列表中最新的一帧图像(同时清除列表中的其余图像) + + + + + 获取列表中最新的图像,个数由OutputQueueSize决定,范围为1-ImageNodeNum,设置成1等同于LatestImagesOnly,设置成ImageNodeNum等同于OneByOne + + + + + 等待下一帧图像 + + + + + 显示帧信息 + + + + + 显示窗口的句柄 + + + + + 显示的帧数据 + + + + + 显示的帧数据大小 + + + + + 图像宽 + + + + + 图像高 + + + + + 像素格式 + + + + + 保留字节 + + + + + 显示帧信息 + + + + + 图像宽 + + + + + 图像高 + + + + + 像素格式 + + + + + 显示的帧数据 + + + + + 显示的帧数据大小 + + + + + 保留字节 + + + + + ch:保存3D数据格式 | en:Save 3D file + + + + + 未定义数据格式 + + + + + PLY数据格式 + + + + + CSV数据格式 + + + + + OBJ数据格式 + + + + + 保存的点阵参数 + + + + + [IN] 每一行点的数量 + + + + + [IN] 行数 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [OUT] 输出像素数据缓存 + + + + + [IN] 提供的输出缓冲区大小(nLinePntNum * nLineNum * (16*3 + 4) + 2048) + + + + + [OUT] 输出像素数据缓存长度 + + + + + 保存的点阵文件类型 + + + + + 保留字节 + + + + + 保存的图像格式 + + + + + 未定义类型 + + + + + Bmp图像格式 + + + + + Jpeg图像格式 + + + + + Png图像格式 + + + + + Tif图像格式 + + + + + 保存的图像参数 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [OUT] 输出图片缓存 + + + + + [OUT] 输出图片大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [IN] 输出图片格式 + + + + + 保存的图像参数 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [OUT] 输出图片缓存 + + + + + [OUT] 输出图片大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [IN] 输出图片格式 + + + + + [IN] 编码质量, (50-99] + + + + + [IN] Bayer的插值方法 0-快速 1-均衡 2-最优(如果传入其它值则默认为最优) + + + + + 保留字节 + + + + + 保存的图像信息扩展 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [OUT] 输出图片缓存 + + + + + [OUT] 输出图片大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [IN] 输出图片格式 + + + + + [IN] 编码质量, (50-99] + + + + + [IN] Bayer的插值方法 0-快速 1-均衡 2-最优(如果传入其它值则默认为最优) + + + + + 保留字节 + + + + + 保存图像到文件的参数 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [IN] 输入图片格式 + + + + + [IN] 编码质量, (0-100] + + + + + [IN] 输入文件路径 + + + + + [IN] Bayer的插值方法 0-快速 1-均衡 2-最优(如果传入其它值则默认为最优) + + + + + 保留字节 + + + + + 保存图像到文件信息扩展 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 输入图片格式 + + + + + [IN] 输入文件路径 + + + + + [IN] 编码质量, (0-100] + + + + + [IN] Bayer的插值方法 0-快速 1-均衡 2-最优(如果传入其它值则默认为最优) + + + + + 保留字节 + + + + + 旋转角度 + + + + + 旋转90度 + + + + + 旋转180度 + + + + + 旋转270度 + + + + + 旋转图像参数 + + + + + [IN] 像素格式(仅支持Mono8/RGB24/BGR24) + + + + + [IN][OUT] 图像宽 + + + + + [IN][OUT] 图像高 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [OUT] 输出图片缓存 + + + + + [OUT] 输出图片大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [IN] 旋转角度 + + + + + 保留字节 + + + + + 图像翻转类型 + + + + + 垂直方向翻转 + + + + + 水平方向翻转 + + + + + 翻转图像参数 + + + + + [IN] 像素格式(仅支持Mono8/RGB24/BGR24) + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [OUT] 输出图片缓存 + + + + + [OUT] 输出图片大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [IN] 翻转类型 + + + + + 保留字节 + + + + + 像素转换参数 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [IN] 源像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 目标像素格式 + + + + + [OUT] 输出数据缓存 + + + + + [OUT] 输出数据大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + 保留字节 + + + + + 图像像素转换信息扩展 + + + + + [IN] 图像宽 + + + + + [IN] 图像高 + + + + + [IN] 源像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 目标像素格式 + + + + + [OUT] 输出数据缓存 + + + + + [OUT] 输出数据大小 + + + + + [IN] 提供的输出缓冲区大小 + + + + + 保留字节 + + + + + Gamma类型 + + + + + 不启用 + + + + + GAMMA值 + + + + + GAMMA曲线,8位需要的长度:256*sizeof(unsigned char) + 10位需要的长度:1024*sizeof(unsigned short) + 12位需要的长度:4096*sizeof(unsigned short) + 16位需要的长度:65536*sizeof(unsigned short) + + + + + 线性RGB转非线性RGB + + + + + 非线性RGB转线性RGB + + + + + Gamma参数 + + + + + [IN] Gamma类型 + + + + + [IN] Gamma值 + + + + + [IN] Gamma曲线缓存 + + + + + [IN] Gamma曲线长度 + + + + + 保留字节 + + + + + CCM参数 + + + + + [IN] 是否启用CCM + + + + + [IN] CCM矩阵(-8192~8192) + + + + + 保留字节 + + + + + CCM参数 + + + + + [IN] 是否启用CCM + + + + + [IN] 量化3x3矩阵 + + + + + [IN] 量化系数(2的整数幂) + + + + + 保留字节 + + + + + CLUT参数 + + + + + [IN] 是否启用CLUT + + + + + [IN] 量化系数(2的整数幂) + + + + + [IN] CLUT大小,建议值17 + + + + + [OUT] 量化CLUT + + + + + [IN] 量化CLUT缓存大小(nCLUTSize*nCLUTSize*nCLUTSize*sizeof(int)*3) + + + + + 保留字节 + + + + + 对比度调节参数 + + + + + [IN] 图像宽度(最小8) + + + + + [IN] 图像高度(最小8) + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [IN] 输入的像素格式 + + + + + [OUT] 输出像素数据缓存 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出像素数据缓存长度 + + + + + [IN] 对比度值,范围:[1, 10000] + + + + + 保留字节 + + + + + 锐化参数 + + + + + [IN] 图像宽度(最小8) + + + + + [IN] 图像高度(最小8) + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [IN] 输入的像素格式 + + + + + [OUT] 输出像素数据缓存 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出像素数据缓存长度 + + + + + [IN] 锐度调节强度,范围:[0, 500] + + + + + [IN] 锐度调节半径(半径越大,耗时越长),范围:[1, 21] + + + + + [IN] 锐度调节阈值,范围:[0, 255] + + + + + 保留字节 + + + + + 色彩校正参数(包括CCM和CLUT) + + + + + [IN] 图像宽度 + + + + + [IN] 图像高度 + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [IN] 输入的像素格式 + + + + + [OUT] 输出像素数据缓存 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出像素数据缓存长度 + + + + + [IN] 输入有效图像位数,8 or 10 or 12 or 16 + + + + + [IN] 输入Gamma信息 + + + + + [IN] 输入CCM信息 + + + + + [IN] 输入CLUT信息 + + + + + 保留字节 + + + + + 矩形ROI参数 + + + + + [IN] 矩形左上角X轴坐标 + + + + + [IN] 矩形左上角Y轴坐标 + + + + + [IN] 矩形宽度 + + + + + [IN] 矩形高度 + + + + + 噪声估计参数 + + + + + [IN] 图像宽度 + + + + + [IN] 图像高度 + + + + + [IN] 输入的像素格式 + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [IN] 图像ROI + + + + + [IN] ROI个数 + + + + + [IN] 噪声阈值[0-4095] + + + + + [OUT] 输出噪声特性 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出噪声特性长度 + + + + + 保留字节 + + + + + 空域降噪参数 + + + + + [IN] 图像宽度 + + + + + [IN] 图像高度 + + + + + [IN] 输入的像素格式 + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [OUT] 输出降噪后的数据 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出降噪后的数据长度 + + + + + [IN] 输入噪声特性 + + + + + [IN] 输入噪声特性长度 + + + + + [IN] 降噪强度(0-100) + + + + + [IN] 锐化强度(0-32) + + + + + [IN] 噪声校正系数(0-1280) + + + + + [IN] 亮度校正系数(1-2000) + + + + + [IN] 色调校正系数(1-2000) + + + + + [IN] 亮度降噪强度(0-100) + + + + + [IN] 色调降噪强度(0-100) + + + + + [IN] 锐化强度(1-1000) + + + + + 保留字节 + + + + + LSC标定参数 + + + + + [IN] 图像宽度(16~65536) + + + + + [IN] 图像高度(16~65536) + + + + + [IN] 输入的像素格式 + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [OUT] 输出标定表缓存 + + + + + [IN] 提供的标定表缓冲大小(nWidth*nHeight*sizeof(unsigned short)) + + + + + [OUT] 输出标定表缓存长度 + + + + + [IN] 宽度分块数 + + + + + [IN] 高度分块数 + + + + + [IN] 边缘填充系数,范围1~5 + + + + + [IN] 标定方式,0-中心为基准 + 1-最亮区域为基准 + 2-目标亮度 + + + + + [IN] 目标亮度(8bits,[0,255]) + (10bits,[0,1023]) + (12bits,[0,4095]) + (16bits,[0,65535]) + + + + + 保留字节 + + + + + LSC校正参数 + + + + + [IN] 图像宽度(16~65536) + + + + + [IN] 图像高度(16~65536) + + + + + [IN] 输入的像素格式 + + + + + [IN] 输入图像缓存 + + + + + [IN] 输入图像缓存长度 + + + + + [OUT] 输出像素数据缓存 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出像素数据缓存长度 + + + + + [IN] 输入校正表缓存 + + + + + [IN] 输入校正表缓存长度 + + + + + 保留字节 + + + + + 噪声特性类型 + + + + + 无效 + + + + + 噪声曲线 + + + + + 噪声水平 + + + + + 默认值 + + + + + 噪声基本信息 + + + + + 版本 + + + + + 噪声特性类型 + + + + + 图像格式 + + + + + 平均噪声水平 + + + + + 曲线点数 + + + + + 噪声曲线 + + + + + 亮度曲线 + + + + + 保留字节 + + + + + 噪声估计参数 + + + + + [IN] 图像宽(大于等于8) + + + + + [IN] 图像高(大于等于8) + + + + + [IN] 像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [IN] 噪声阈值(0-4095) + + + + + [IN] 用于存储噪声曲线和亮度曲线(需要外部分配,缓存大小:4096 * sizeof(int) * 2) + + + + + [OUT] 降噪特性信息 + + + + + [IN] 线程数量,0表示算法库根据硬件自适应;1表示单线程(默认);大于1表示线程数目 + + + + + 保留字节 + + + + + 降噪参数 + + + + + [IN] 图像宽(大于等于8) + + + + + [IN] 图像高(大于等于8) + + + + + [IN] 像素格式 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [OUT] 输出降噪后的数据 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出降噪后的数据长度 + + + + + [IN] 降噪特性信息(来源于噪声估计) + + + + + [IN] 降噪强度(0-100) + + + + + [IN] 锐化强度(0-32) + + + + + [IN] 噪声校正系数(0-1280) + + + + + [IN] 线程数量,0表示算法库根据硬件自适应;1表示单线程(默认);大于1表示线程数目 + + + + + 保留字节 + + + + + 帧特殊信息 + + + + + [OUT] 秒数 + + + + + [OUT] 周期数 + + + + + [OUT] 周期偏移量 + + + + + [OUT] 增益 + + + + + [OUT] 曝光时间 + + + + + [OUT] 平均亮度 + + + + + [OUT] 红色 + + + + + [OUT] 绿色 + + + + + [OUT] 蓝色 + + + + + [OUT] 总帧数 + + + + + [OUT] 触发计数 + + + + + [OUT] 输入 + + + + + [OUT] 输出 + + + + + [OUT] 水平偏移量 + + + + + [OUT] 垂直偏移量 + + + + + [OUT] 水印宽 + + + + + [OUT] 水印高 + + + + + 保留字节 + + + + + HB解码参数 + + + + + [IN] 输入数据缓存 + + + + + [IN] 输入数据大小 + + + + + [OUT] 图像宽 + + + + + [OUT] 图像高 + + + + + [OUT] 输出数据缓存 + + + + + [IN] 提供的输出缓冲区大小 + + + + + [OUT] 输出数据大小 + + + + + [OUT] 输出的像素格式 + + + + + [OUT] 水印信息 + + + + + 保留字节 + + + + + 录像格式定义 + + + + + 未定义格式 + + + + + AVI格式 + + + + + 录像参数 + + + + + [IN] 输入数据的像素格式 + + + + + [IN] 图像宽(指定目标参数时需为8的倍数) + + + + + [IN] 图像高(指定目标参数时需为8的倍数) + + + + + [IN] 帧率fps(大于1/16) + + + + + [IN] 码率kbps(128kbps-16Mbps) + + + + + [IN] 录像格式 + + + + + [IN] 录像文件存放路径 + + + + + 保留字节 + + + + + 输入帧信息 + + + + + [IN] 图像数据指针 + + + + + [IN] 图像大小 + + + + + 保留字节 + + + + + 采集模式 + + + + + 单帧模式 + + + + + 多帧模式 + + + + + 持续采集模式 + + + + + 增益模式 + + + + + 关闭 + + + + + 一次 + + + + + 连续 + + + + + 曝光模式 + + + + + Timed + + + + + TriggerWidth + + + + + 自动曝光模式 + + + + + 关闭 + + + + + 一次 + + + + + 连续 + + + + + 相机触发模式 + + + + + 关闭 + + + + + 打开 + + + + + Gamma选择器 + + + + + USER + + + + + SRGB + + + + + 自动白平衡 + + + + + 关闭自动白平衡 + + + + + 一次自动白平衡 + + + + + 连续自动白平衡 + + + + + 触发源 + + + + + LINE0 + + + + + LINE1 + + + + + LINE2 + + + + + LINE3 + + + + + COUNTER0 + + + + + SOFTWARE + + + + + FrequencyConverter + + + + + ALL MATHCH INFO + + + + + 需要输出的信息类型,e.g. MV_MATCH_TYPE_NET_DETECT + + + + + 输出的信息缓存,由调用者分配 + + + + + 信息缓存的大小 + + + + + + + + + + 已接收数据大小 [统计StartGrabbing和StopGrabbing之间的数据量] + + + + + 丢失的包数量 + + + + + 丢帧数量 + + + + + 帧数 + + + + + 请求重发包数 + + + + + 重发包数 + + + + + USB + + + + + 已接收数据大小 [统计OpenDevicce和CloseDevice之间的数据量] + + + + + 已收到的帧数 + + + + + 错误帧数 + + + + + 保留字节 + + + + + 图像的基本信息 + + + + + 宽度值 + + + + + 宽度最小值 + + + + + 宽度最大值 + + + + + Width Inc + + + + + 高度值 + + + + + 高度最小值 + + + + + 高度最大值 + + + + + Height Inc + + + + + 帧率 + + + + + 最小帧率 + + + + + 最大帧率 + + + + + 当前的像素格式 + + + + + 支持的像素格式种类 + + + + + 像素列表 + + + + + 保留字节 + + + + + 节点是否可见的权限等级 + + + + + Always visible + + + + + Visible for experts or Gurus + + + + + Visible for Gurus + + + + + Not Visible + + + + + Object is not yet initialized + + + + + 事件信息 + + + + + 事件名 + + + + + Event号 + + + + + 流通到序号 + + + + + 帧号高位 + + + + + 帧号低位 + + + + + 时间戳高位 + + + + + 时间戳低位 + + + + + Event数据 + + + + + Event数据长度 + + + + + 保留字节 + + + + + 文件存取 + + + + + 用户文件名 + + + + + 设备文件名 + + + + + 保留字节 + + + + + 文件存取 + + + + + 用户文件数据缓存空间 + + + + + 用户数据缓存大小 + + + + + 文件实际缓存大小 + + + + + 设备文件名 + + + + + 保留字节 + + + + + 文件存取进度 + + + + + 已完成的长度 + + + + + 总长度 + + + + + 保留字节 + + + + + GigE传输类型 + + + + + 表示单播(默认) + + + + + 表示组播 + + + + + 表示局域网内广播,暂不支持 + + + + + 表示子网内广播,暂不支持 + + + + + 表示从相机获取,暂不支持 + + + + + 表示用户自定义应用端接收图像数据Port号 + + + + + 表示设置了单播,但本实例不接收图像数据 + + + + + 表示组播模式,但本实例不接收图像数据 + + + + + 传输模式,可以为单播模式、组播模式等 + + + + + 传输模式 + + + + + 目标IP,组播模式下有意义 + + + + + 目标Port,组播模式下有意义 + + + + + 保留字节 + + + + + 动作命令信息 + + + + + 设备密钥 + + + + + 组键 + + + + + 组掩码 + + + + + 只有设置成1时Action Time才有效,非1时无效 + + + + + 预定的时间,和主频有关 + + + + + 广播包地址 + + + + + 等待ACK的超时时间,如果为0表示不需要ACK + + + + + 保留字节 + + + + + 动作命令结果 + + + + + IP address of the device + + + + + status code returned by the device + + + + + 保留字节 + + + + + 动作命令结果列表 + + + + + 返回值个数 + + + + + 返回的结果 + + + + + 每个节点对应的接口类型 + + + + + IValue接口类型 + + + + + IBase接口类型 + + + + + IInteger接口类型 + + + + + IBoolean接口类型 + + + + + ICommand接口类型 + + + + + IFloat接口类型 + + + + + IString接口类型 + + + + + IRegister接口类型 + + + + + ICategory接口类型 + + + + + IEnumeration接口类型 + + + + + IEnumEntry接口类型 + + + + + IPort接口类型 + + + + + XML节点特点 + + + + + 节点类型 + + + + + 是否可见 + + + + + 节点描述 + + + + + 显示名称 + + + + + 节点名 + + + + + 提示 + + + + + 保留字节 + + + + + XML节点列表 + + + + + 节点个数 + + + + + 节点列表 + + + + + 整型节点值 + + + + + 当前值 + + + + + 最大值 + + + + + 最小值 + + + + + Inc + + + + + 保留字节 + + + + + 整型节点值 + + + + + 当前值 + + + + + 最大值 + + + + + 最小值 + + + + + Inc + + + + + 保留字节 + + + + + 浮点型节点值 + + + + + 当前值 + + + + + 最大值 + + + + + 最小值 + + + + + 保留字节 + + + + + 枚举型节点值 + + + + + 当前值 + + + + + 有效数据个数 + + + + + 保留字节 + + + + + 保留字节 + + + + + 字符串型节点值 + + + + + 当前值 + + + + + 节点值的最大长度 + + + + + 保留字节 + + + + + 节点的读写性 + + + + + 未实现 + + + + + 不可获取 + + + + + 只写 + + + + + 只读 + + + + + 可读可写 + + + + + 未定义 + + + + + 内部用于AccessMode循环检测 + + + + + 整型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 最小值 + + + + + 最大值 + + + + + 增量 + + + + + 保留字节 + + + + + 布尔型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 保留字节 + + + + + 命令型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 保留字节 + + + + + 浮点型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 最小值 + + + + + 最大值 + + + + + 增量 + + + + + 保留字节 + + + + + 字符串类型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 保留字节 + + + + + 寄存器型节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + 是否可见 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 保留字节 + + + + + 类别属性 + + + + + 节点描述 + + + + + 显示名称 + + + + + 节点名 + + + + + 提示 + + + + + 是否可见 + + + + + 保留字节 + + + + + EnumEntry属性节点 + + + + + 节点名 + + + + + 显示名称 + + + + + 节点描述 + + + + + 提示 + + + + + + + + + + 父节点数 + + + + + 父节点列表 + + + + + 是否可见 + + + + + 当前值 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 保留字节 + + + + + 节点描述 + + + + + 节点描述 + + + + + Enumeration属性节点 + + + + + 是否可见 + + + + + 节点描述 + + + + + 显示名称 + + + + + 节点名 + + + + + 提示 + + + + + Symbolic数 + + + + + 当前Symbolic索引 + + + + + Symbolic索引 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 当前值 + + + + + 保留字节 + + + + + Port属性节点 + + + + + 是否可见 + + + + + 节点描述 + + + + + 显示名称 + + + + + 节点名 + + + + + 提示 + + + + + 访问模式 + + + + + 是否锁定。0-否;1-是 + + + + + 保留字节 + + + + 辅助线颜色 + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + 预留字节 + + + 自定义点坐标 + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + 预留字节 + + + 矩形框区域信息 + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + [0.0 , 1.0] + + + 辅助线颜色 + + + 辅助线宽度 + + + 预留字节 + + + 圆形框区域信息 + + + 圆心信息 + + + 宽向半径,根据图像的相对位置[0, 1.0] + + + 高向半径,根据图像的相对位置[0, 1.0] + + + 辅助线颜色信息 + + + 辅助线宽度 + + + 预留字节 + + + 线条辅助线信息 + + + 线条辅助线的起始点坐标 + + + 线条辅助线的终点坐标 + + + 辅助线颜色信息 + + + 辅助线宽度 + + + 预留字节 + + + 枚举类型指定条目信息 + + + 指定值 + + + 指定值对应的符号 + + + 预留字节 + + + U3V流异常类型 + + + 异常的图像,该帧被丢弃 + + + 缓存列表溢出,清除最旧的一帧 + + + 缓存列表为空,该帧被丢弃 + + + 断流恢复 + + + 断流,恢复失败,取流被中止 + + + 设备异常,取流被中止 + + + 重构后的图像列表 + + + 源图像宽 + + + 源图像高 + + + 像素格式 + + + 输出数据缓存 + + + 输出数据长度 + + + 提供的输出缓冲区大小 + + + 预留字节 + + + + 分时曝光的图像处理方式 + + + + + 源图像按行拆分成多张图像 + + + + 重构图像参数信息 + + + 源图像宽 + + + 源图像高 + + + 像素格式 + + + 输入数据缓存 + + + 输入数据长度 + + + 曝光个数(1-8] + + + 图像重构方式 + + + + 输出数据缓存信息 + + + + 预留字节 + + + + 像素格式定义 + + + + + 未定义像素格式 + + + + + Mono1p + + + + + Mono2p + + + + + Mono4p + + + + + Mono8 + + + + + Mono8_Signed + + + + + Mono10 + + + + + Mono10_Packed + + + + + Mono12 + + + + + Mono12_Packed + + + + + Mono14 + + + + + Mono16 + + + + + BayerGR8 + + + + + BayerRG8 + + + + + BayerGB8 + + + + + BayerBG8 + + + + + BayerRBGG8 + + + + + BayerGR10 + + + + + BayerRG10 + + + + + BayerGB10 + + + + + BayerBG10 + + + + + BayerGR12 + + + + + BayerRG12 + + + + + BayerGB12 + + + + + BayerBG12 + + + + + BayerGR10_Packed + + + + + BayerRG10_Packed + + + + + BayerGB10_Packed + + + + + BayerBG10_Packed + + + + + BayerGR12_Packed + + + + BayerRG12_Packed + + + BayerGB12_Packed + + + BayerBG12_Packed + + + BayerGR16 + + + BayerRG16 + + + BayerGB16 + + + BayerBG16 + + + RGB8_Packed + + + BGR8_Packed + + + RGBA8_Packed + + + BGRA8_Packed + + + RGB10_Packed + + + BGR10_Packed + + + RGB12_Packed + + + BGR12_Packed + + + RGB16_Packed + + + BGR16_Packed/// + + + RGBA16_Packed + + + BGRA16_Packed + + + RGB10V1_Packe + + + RGB10V2_Packed + + + RGB12V1_Packed + + + RGB565_Packed + + + BGR565_Packed + + + YUV411_Packed + + + YUV422_Packed + + + YUV422_YUYV_Packed + + + YUV444_Packed + + + YCBCR8_CBYCR + + + YCBCR422_8 + + + YCBCR422_8_CBYCRY + + + YCBCR411_8_CBYYCRYY + + + YCBCR601_8_CBYCR + + + YCBCR601_422_8 + + + YCBCR601_422_8_CBYCRY + + + YCBCR601_411_8_CBYYCRYY + + + YCBCR709_8_CBYCR + + + YCBCR709_422_8 + + + YCBCR709_422_8_CBYCRY + + + YCBCR709_411_8_CBYYCRYY + + + YUV420SP_NV12 + + + YUV420SP_NV21 + + + RGB8_Planar + + + RGB10_Planar + + + RGB12_Planar + + + RGB16_Planar + + + Jpeg + + + Coord3D_ABC32f + + + Coord3D_ABC32f_Planar + + + Coord3D_AC32f + + + COORD3D_DEPTH_PLUS_MASK + + + Coord3D_ABC32 + + + Coord3D_AB32f + + + Coord3D_AB32 + + + Coord3D_AC32f_64 + + + Coord3D_AC32f_Planar + + + Coord3D_AC32 + + + Coord3D_A32f + + + Coord3D_A32 + + + Coord3D_C32f + + + Coord3D_C32 + + + Coord3D_ABC16 + + + Coord3D_C16 + + + Float32 + + + HB_Mono8 + + + HB_Mono10 + + + HB_Mono10_Packed + + + HB_Mono12 + + + HB_Mono12_Packed + + + HB_Mono16 + + + HB_BayerGR8 + + + HB_BayerRG8 + + + HB_BayerGB8 + + + HB_BayerBG8 + + + HB_BayerRBGG8 + + + HB_BayerGR10 + + + HB_BayerRG10 + + + HB_BayerGB10 + + + HB_BayerBG10 + + + HB_BayerGR12 + + + HB_BayerRG12 + + + HB_BayerGB12 + + + HB_BayerBG12 + + + HB_BayerGR10_Packed + + + HB_BayerRG10_Packed + + + HB_BayerGB10_Packed + + + HB_BayerBG10_Packed + + + HB_BayerGR12_Packed + + + HB_BayerRG12_Packed + + + HB_BayerGB12_Packed + + + HB_BayerBG12_Packed + + + HB_YUV422_Packed + + + HB_YUV422_YUYV_Packed + + + HB_RGB8_Packed + + + HB_BGR8_Packed + + + HB_RGBA8_Packed + + + HB_BGRA8_Packed + + + HB_RGB16_Packed + + + HB_BGR16_Packed + + + HB_RGBA16_Packed + + + HB_BGRA16_Packed + + + + 像素格式 + + + + + 未定义像素格式 + + + + + Mono1p + + + + + Mono2p + + + + + Mono4p + + + + + Mono8 + + + + + Mono8_Signed + + + + + Mono10 + + + + + Mono10_Packed + + + + + Mono12 + + + + + Mono12_Packed + + + + + Mono14 + + + + + Mono16 + + + + + BayerGR8 + + + + + BayerRG8 + + + + + BayerGB8 + + + + + BayerBG8 + + + + + BayerRBGG8 + + + + + BayerGR10 + + + + + BayerRG10 + + + + + BayerGB10 + + + + + BayerBG10 + + + + + BayerGR12 + + + + + BayerRG12 + + + + + BayerGB12 + + + + + BayerBG12 + + + + + BayerGR10_Packed + + + + + BayerRG10_Packed + + + + + BayerGB10_Packed + + + + + BayerBG10_Packed + + + + + BayerGR12_Packed + + + + BayerRG12_Packed + + + BayerGB12_Packed + + + BayerBG12_Packed + + + BayerGR16 + + + BayerRG16 + + + BayerGB16 + + + BayerBG16 + + + RGB8_Packed + + + BGR8_Packed + + + RGBA8_Packed + + + BGRA8_Packed + + + RGB10_Packed + + + BGR10_Packed + + + RGB12_Packed + + + BGR12_Packed + + + RGB16_Packed + + + BGR16_Packed/// + + + RGBA16_Packed + + + BGRA16_Packed + + + RGB10V1_Packe + + + RGB10V2_Packed + + + RGB12V1_Packed + + + RGB565_Packed + + + BGR565_Packed + + + YUV411_Packed + + + YUV422_Packed + + + YUV422_YUYV_Packed + + + YUV444_Packed + + + YCBCR8_CBYCR + + + YCBCR422_8 + + + YCBCR422_8_CBYCRY + + + YCBCR411_8_CBYYCRYY + + + YCBCR601_8_CBYCR + + + YCBCR601_422_8 + + + YCBCR601_422_8_CBYCRY + + + YCBCR601_411_8_CBYYCRYY + + + YCBCR709_8_CBYCR + + + YCBCR709_422_8 + + + YCBCR709_422_8_CBYCRY + + + YCBCR709_411_8_CBYYCRYY + + + YUV420SP_NV12 + + + YUV420SP_NV21 + + + RGB8_Planar + + + RGB10_Planar + + + RGB12_Planar + + + RGB16_Planar + + + Jpeg + + + Coord3D_ABC32f + + + Coord3D_ABC32f_Planar + + + Coord3D_AC32f + + + COORD3D_DEPTH_PLUS_MASK + + + Coord3D_ABC32 + + + Coord3D_AB32f + + + Coord3D_AB32 + + + Coord3D_AC32f_64 + + + Coord3D_AC32f_Planar + + + Coord3D_AC32 + + + Coord3D_A32f + + + Coord3D_A32 + + + Coord3D_C32f + + + Coord3D_C32 + + + Coord3D_ABC16 + + + Coord3D_C16 + + + Float32 + + + HB_Mono8 + + + HB_Mono10 + + + HB_Mono10_Packed + + + HB_Mono12 + + + HB_Mono12_Packed + + + HB_Mono16 + + + HB_BayerGR8 + + + HB_BayerRG8 + + + HB_BayerGB8 + + + HB_BayerBG8 + + + HB_BayerRBGG8 + + + HB_BayerGR10 + + + HB_BayerRG10 + + + HB_BayerGB10 + + + HB_BayerBG10 + + + HB_BayerGR12 + + + HB_BayerRG12 + + + HB_BayerGB12 + + + HB_BayerBG12 + + + HB_BayerGR10_Packed + + + HB_BayerRG10_Packed + + + HB_BayerGB10_Packed + + + HB_BayerBG10_Packed + + + HB_BayerGR12_Packed + + + HB_BayerRG12_Packed + + + HB_BayerGB12_Packed + + + HB_BayerBG12_Packed + + + HB_YUV422_Packed + + + HB_YUV422_YUYV_Packed + + + HB_RGB8_Packed + + + HB_BGR8_Packed + + + HB_RGBA8_Packed + + + HB_BGRA8_Packed + + + HB_RGB16_Packed + + + HB_BGR16_Packed + + + HB_RGBA16_Packed + + + HB_BGRA16_Packed + + + diff --git a/HitBotCSharpDemo/bin/x64/Debug/SDK_LOG/id_74_2025-06-09.hilog b/HitBotCSharpDemo/bin/x64/Debug/SDK_LOG/id_74_2025-06-09.hilog index cc24fd3..570e11c 100644 --- a/HitBotCSharpDemo/bin/x64/Debug/SDK_LOG/id_74_2025-06-09.hilog +++ b/HitBotCSharpDemo/bin/x64/Debug/SDK_LOG/id_74_2025-06-09.hilog @@ -430,3 +430,422 @@ 2025-06-09 10:54:09.427 trail_number5.774747 2025-06-09 10:54:09.427 tcp_distance 288.737366 2025-06-09 10:54:09.427 angle1_1 = -11.002804 angle2_1 = 84.112190 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -87.199585 angle2_2 = 152.604431 z2 = -4.457100 r2 = -1027.920044 +2025-06-09 11:19:44.727 SDK_VERSION_V2.0.0.29_Release +2025-06-09 11:19:44.727 robot connected +2025-06-09 11:19:44.727 26 +2025-06-09 11:19:44.727 current generation=26 +2025-06-09 11:19:45.230 0x1a +2025-06-09 11:19:46.060 initial joint2 4444931 +2025-06-09 11:19:46.060 C:\Users\fusy_\source\repos\HitBotCSharpDemo_x64\HitBotCSharpDemo\HitBotCSharpDemo\bin\x64\Debug\\j4_pid.txt do not exist +2025-06-09 11:19:46.060 robot WritePID +2025-06-09 11:19:46.362 initial joint1 -1269935 +2025-06-09 11:19:46.409 initial joint2 4444931 +2025-06-09 11:19:46.472 initial joint3 -12991 +2025-06-09 11:19:46.519 initial joint4 -25056187 +2025-06-09 11:19:46.549 initial joint1 -1269935 +2025-06-09 11:19:46.598 initial joint2 4444934 +2025-06-09 11:19:46.643 initial joint3 -12991 +2025-06-09 11:19:46.692 initial joint4 -25056188 +2025-06-09 11:19:46.703 initial joint1 -1269934 +2025-06-09 11:19:46.752 initial joint2 4444935 +2025-06-09 11:19:46.806 initial joint3 -12991 +2025-06-09 11:19:46.847 initial joint4 -25056188 +2025-06-09 11:19:49.050 initial_thread initialized +2025-06-09 11:19:49.050 servo enable +2025-06-09 11:19:49.050 brake open +2025-06-09 11:19:49.050 set_brake_state 0 1 +2025-06-09 11:19:49.270 robot initialized +2025-06-09 11:19:49.842 get_scara_param -87.199402 152.604797 -4.460400 -1027.919678 +2025-06-09 11:19:49.842 get_scara_real_coor -87.199402 152.604797 -4.460100 -1027.919800 +2025-06-09 11:19:49.842 λɢ +2025-06-09 11:19:49.842 position -1269933.375000 4444937.000000 -12991.857422 -25056186.000000 -1141049.125000 4213217.000000 -37004.613281 -25092562.000000 +2025-06-09 11:19:49.842 speed 8849.779297 7955.474609 8244.125000 1498.645020 +2025-06-09 11:19:49.842 set_first_position_after_initial +2025-06-09 11:19:49.842 movej_old start_pos: -87.199402 152.604797 -4.460400 -1027.919678 end_pos: -87.199402 152.604797 -4.460400 -1027.919678 org_sp 10.000000 end_sp 10.000000 +2025-06-09 11:19:50.124 J3 Belt Meilage=40.888039km +2025-06-09 11:19:51.611 30 30 30 30 +2025-06-09 11:19:51.611 new_movej_xyz_lr 274.065002 -302.743805 -75.466103 -1005.721008 50.000000 0.000000 1 +2025-06-09 11:19:51.611 goal_angle -60.720737 27.061800 +2025-06-09 11:19:51.611 new_movej_angle -60.720737 27.061800 -75.466103 -1005.721008 0.000000 50.000000 +2025-06-09 11:19:51.611 z1 -4.460400 z2 -75.466103 +2025-06-09 11:19:51.611 angle1_1 -87.199402 angle2_1 152.604797 z1 -4.460400 r1 -1027.919678 +2025-06-09 11:19:51.611 angle1_2 -60.720737 angle2_2 27.061800 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:19:51.611 speed 50.000000 +2025-06-09 11:19:51.611 tcp_distance 361.527405 +2025-06-09 11:19:51.617 new_end_speed 50.000000 j1_acc_t 3.615274 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 8.010745 +2025-06-09 11:19:51.617 new_end_speed 50.000000 j2_acc_t 3.615274 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 37.981258 +2025-06-09 11:19:51.617 new_end_speed 50.000000 j3_acc_t 3.615274 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 21.481770 +2025-06-09 11:19:51.617 new_end_speed 50.000000 j4_acc_t 3.615274 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 6.715893 +2025-06-09 11:19:51.617 end_speed 50.000000 +2025-06-09 11:19:51.617 trail_number7.230548 +2025-06-09 11:19:51.618 tcp_distance 361.527405 +2025-06-09 11:19:51.618 angle1_1 = -87.199402 angle2_1 = 152.604797 z1 = -4.460400 r1 = -1027.919678 angle1_2 = -60.720737 angle2_2 = 27.061800 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:19:58.470 30 30 30 30 +2025-06-09 11:19:58.470 new_movej_xyz_lr 274.065002 -137.158203 -75.466103 -1005.721008 50.000000 0.000000 1 +2025-06-09 11:19:58.470 goal_angle -67.226128 86.401024 +2025-06-09 11:19:58.470 new_movej_angle -67.226128 86.401024 -75.466103 -1005.721008 0.000000 50.000000 +2025-06-09 11:19:58.470 z1 -75.466103 z2 -75.466103 +2025-06-09 11:19:58.471 angle1_1 -60.720737 angle2_1 27.061800 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:19:58.471 angle1_2 -67.226128 angle2_2 86.401024 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:19:58.471 speed 50.000000 +2025-06-09 11:19:58.471 tcp_distance 171.494293 +2025-06-09 11:19:58.471 new_end_speed 50.000000 j1_acc_t 1.714943 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 4.148982 +2025-06-09 11:19:58.471 new_end_speed 50.000000 j2_acc_t 1.714943 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 37.845131 +2025-06-09 11:19:58.471 new_end_speed 50.000000 j3_acc_t 1.714943 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:19:58.472 new_end_speed 50.000000 j4_acc_t 1.714943 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:19:58.472 end_speed 50.000000 +2025-06-09 11:19:58.472 trail_number3.429886 +2025-06-09 11:19:58.472 tcp_distance 171.494293 +2025-06-09 11:19:58.877 angle1_1 = -60.720737 angle2_1 = 27.061800 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -67.226128 angle2_2 = 86.401024 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:20:02.678 30 30 30 30 +2025-06-09 11:20:02.678 new_movej_xyz_lr 274.065002 5.965300 -75.466103 -1005.721008 50.000000 0.000000 1 +2025-06-09 11:20:02.678 goal_angle -44.911705 98.661697 +2025-06-09 11:20:02.679 new_movej_angle -44.911705 98.661697 -75.466103 -1005.721008 0.000000 50.000000 +2025-06-09 11:20:02.679 z1 -75.466103 z2 -75.466103 +2025-06-09 11:20:02.679 angle1_1 -67.226128 angle2_1 86.401024 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:20:02.679 angle1_2 -44.911705 angle2_2 98.661697 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:20:02.679 speed 50.000000 +2025-06-09 11:20:02.679 tcp_distance 144.069748 +2025-06-09 11:20:02.679 new_end_speed 50.000000 j1_acc_t 1.440697 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 16.940685 +2025-06-09 11:20:02.679 new_end_speed 50.000000 j2_acc_t 1.440697 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 9.308070 +2025-06-09 11:20:02.680 new_end_speed 50.000000 j3_acc_t 1.440697 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:20:02.680 new_end_speed 50.000000 j4_acc_t 1.440697 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:20:02.680 end_speed 50.000000 +2025-06-09 11:20:02.680 trail_number2.881395 +2025-06-09 11:20:02.680 tcp_distance 144.069748 +2025-06-09 11:20:02.680 angle1_1 = -67.226128 angle2_1 = 86.401024 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -44.911705 angle2_2 = 98.661697 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:20:05.929 30 30 30 30 +2025-06-09 11:20:05.929 new_movej_xyz_lr 274.065002 149.383698 -75.466103 -1005.721008 50.000000 0.000000 1 +2025-06-09 11:20:05.929 goal_angle -11.002804 84.112190 +2025-06-09 11:20:05.929 new_movej_angle -11.002804 84.112190 -75.466103 -1005.721008 0.000000 50.000000 +2025-06-09 11:20:05.929 z1 -75.466103 z2 -75.466103 +2025-06-09 11:20:05.929 angle1_1 -44.911705 angle2_1 98.661697 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:20:05.929 angle1_2 -11.002804 angle2_2 84.112190 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:20:05.929 speed 50.000000 +2025-06-09 11:20:05.929 tcp_distance 144.322098 +2025-06-09 11:20:05.929 new_end_speed 50.000000 j1_acc_t 1.443221 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 25.697960 +2025-06-09 11:20:05.929 new_end_speed 50.000000 j2_acc_t 1.443221 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 11.026386 +2025-06-09 11:20:05.929 new_end_speed 50.000000 j3_acc_t 1.443221 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:20:05.929 new_end_speed 50.000000 j4_acc_t 1.443221 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:20:05.933 end_speed 50.000000 +2025-06-09 11:20:05.933 trail_number2.886442 +2025-06-09 11:20:05.933 tcp_distance 144.322098 +2025-06-09 11:20:05.933 angle1_1 = -44.911705 angle2_1 = 98.661697 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -11.002804 angle2_2 = 84.112190 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:20:09.239 30 30 30 30 +2025-06-09 11:20:09.239 new_movej_xyz_lr 93.989304 -37.882999 -4.457100 -1027.920044 50.000000 0.000000 1 +2025-06-09 11:20:09.239 goal_angle -87.199585 152.604431 +2025-06-09 11:20:09.239 new_movej_angle -87.199585 152.604431 -4.457100 -1027.920044 0.000000 50.000000 +2025-06-09 11:20:09.239 z1 -75.466103 z2 -4.457100 +2025-06-09 11:20:09.239 angle1_1 -11.002804 angle2_1 84.112190 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:20:09.239 angle1_2 -87.199585 angle2_2 152.604431 z2 -4.457100 r2 -1027.920044 +2025-06-09 11:20:09.239 speed 50.000000 +2025-06-09 11:20:09.241 tcp_distance 288.737366 +2025-06-09 11:20:09.241 new_end_speed 50.000000 j1_acc_t 2.887374 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 28.863682 +2025-06-09 11:20:09.241 new_end_speed 50.000000 j2_acc_t 2.887374 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 25.945168 +2025-06-09 11:20:09.241 new_end_speed 50.000000 j3_acc_t 2.887374 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 26.898527 +2025-06-09 11:20:09.241 new_end_speed 50.000000 j4_acc_t 2.887374 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 8.409093 +2025-06-09 11:20:09.241 end_speed 50.000000 +2025-06-09 11:20:09.241 trail_number5.774747 +2025-06-09 11:20:09.241 tcp_distance 288.737366 +2025-06-09 11:20:09.241 angle1_1 = -11.002804 angle2_1 = 84.112190 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -87.199585 angle2_2 = 152.604431 z2 = -4.457100 r2 = -1027.920044 +2025-06-09 11:21:30.658 30 30 30 30 +2025-06-09 11:21:30.658 new_movej_xyz_lr 274.065002 -302.743805 -75.466103 -1005.721008 50.000000 0.000000 1 +2025-06-09 11:21:30.658 goal_angle -60.720737 27.061800 +2025-06-09 11:21:30.658 new_movej_angle -60.720737 27.061800 -75.466103 -1005.721008 0.000000 50.000000 +2025-06-09 11:21:30.658 z1 -4.457100 z2 -75.466103 +2025-06-09 11:21:30.658 angle1_1 -87.199585 angle2_1 152.604431 z1 -4.457100 r1 -1027.920044 +2025-06-09 11:21:30.658 angle1_2 -60.720737 angle2_2 27.061800 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:21:30.658 speed 50.000000 +2025-06-09 11:21:30.658 tcp_distance 361.526031 +2025-06-09 11:21:30.658 new_end_speed 50.000000 j1_acc_t 3.615260 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 8.010832 +2025-06-09 11:21:30.658 new_end_speed 50.000000 j2_acc_t 3.615260 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 37.981297 +2025-06-09 11:21:30.658 new_end_speed 50.000000 j3_acc_t 3.615260 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 21.482853 +2025-06-09 11:21:30.658 new_end_speed 50.000000 j4_acc_t 3.615260 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 6.716029 +2025-06-09 11:21:30.658 end_speed 50.000000 +2025-06-09 11:21:30.658 trail_number7.230521 +2025-06-09 11:21:30.658 tcp_distance 361.526031 +2025-06-09 11:21:30.658 angle1_1 = -87.199585 angle2_1 = 152.604431 z1 = -4.457100 r1 = -1027.920044 angle1_2 = -60.720737 angle2_2 = 27.061800 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:21:38.313 30 30 30 30 +2025-06-09 11:21:38.313 new_movej_xyz_lr 274.065002 -137.158203 -75.466103 -1005.721008 50.000000 0.000000 1 +2025-06-09 11:21:38.313 goal_angle -67.226128 86.401024 +2025-06-09 11:21:38.313 new_movej_angle -67.226128 86.401024 -75.466103 -1005.721008 0.000000 50.000000 +2025-06-09 11:21:38.314 z1 -75.466103 z2 -75.466103 +2025-06-09 11:21:38.314 angle1_1 -60.720737 angle2_1 27.061800 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:21:38.314 angle1_2 -67.226128 angle2_2 86.401024 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:21:38.314 speed 50.000000 +2025-06-09 11:21:38.314 tcp_distance 171.494293 +2025-06-09 11:21:38.315 new_end_speed 50.000000 j1_acc_t 1.714943 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 4.148982 +2025-06-09 11:21:38.315 new_end_speed 50.000000 j2_acc_t 1.714943 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 37.845131 +2025-06-09 11:21:38.315 new_end_speed 50.000000 j3_acc_t 1.714943 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:21:38.315 new_end_speed 50.000000 j4_acc_t 1.714943 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:21:38.315 end_speed 50.000000 +2025-06-09 11:21:38.315 trail_number3.429886 +2025-06-09 11:21:38.315 tcp_distance 171.494293 +2025-06-09 11:21:38.316 angle1_1 = -60.720737 angle2_1 = 27.061800 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -67.226128 angle2_2 = 86.401024 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:21:41.448 30 30 30 30 +2025-06-09 11:21:41.448 new_movej_xyz_lr 274.065002 5.965300 -75.466103 -1005.721008 50.000000 0.000000 1 +2025-06-09 11:21:41.448 goal_angle -44.911705 98.661697 +2025-06-09 11:21:41.448 new_movej_angle -44.911705 98.661697 -75.466103 -1005.721008 0.000000 50.000000 +2025-06-09 11:21:41.448 z1 -75.466103 z2 -75.466103 +2025-06-09 11:21:41.448 angle1_1 -67.226128 angle2_1 86.401024 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:21:41.448 angle1_2 -44.911705 angle2_2 98.661697 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:21:41.457 speed 50.000000 +2025-06-09 11:21:41.457 tcp_distance 144.069748 +2025-06-09 11:21:41.457 new_end_speed 50.000000 j1_acc_t 1.440697 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 16.940685 +2025-06-09 11:21:41.457 new_end_speed 50.000000 j2_acc_t 1.440697 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 9.308070 +2025-06-09 11:21:41.457 new_end_speed 50.000000 j3_acc_t 1.440697 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:21:41.457 new_end_speed 50.000000 j4_acc_t 1.440697 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:21:41.457 end_speed 50.000000 +2025-06-09 11:21:41.457 trail_number2.881395 +2025-06-09 11:21:41.457 tcp_distance 144.069748 +2025-06-09 11:21:41.782 angle1_1 = -67.226128 angle2_1 = 86.401024 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -44.911705 angle2_2 = 98.661697 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:21:45.755 30 30 30 30 +2025-06-09 11:21:45.755 new_movej_xyz_lr 274.065002 149.383698 -75.466103 -1005.721008 50.000000 0.000000 1 +2025-06-09 11:21:45.755 goal_angle -11.002804 84.112190 +2025-06-09 11:21:45.755 new_movej_angle -11.002804 84.112190 -75.466103 -1005.721008 0.000000 50.000000 +2025-06-09 11:21:45.755 z1 -75.466103 z2 -75.466103 +2025-06-09 11:21:45.755 angle1_1 -44.911705 angle2_1 98.661697 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:21:45.755 angle1_2 -11.002804 angle2_2 84.112190 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:21:45.755 speed 50.000000 +2025-06-09 11:21:45.755 tcp_distance 144.322098 +2025-06-09 11:21:45.755 new_end_speed 50.000000 j1_acc_t 1.443221 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 25.697960 +2025-06-09 11:21:45.755 new_end_speed 50.000000 j2_acc_t 1.443221 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 11.026386 +2025-06-09 11:21:45.755 new_end_speed 50.000000 j3_acc_t 1.443221 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:21:45.755 new_end_speed 50.000000 j4_acc_t 1.443221 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:21:45.755 end_speed 50.000000 +2025-06-09 11:21:45.755 trail_number2.886442 +2025-06-09 11:21:45.755 tcp_distance 144.322098 +2025-06-09 11:21:45.755 angle1_1 = -44.911705 angle2_1 = 98.661697 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -11.002804 angle2_2 = 84.112190 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:30:03.148 SDK_VERSION_V2.0.0.29_Release +2025-06-09 11:30:03.149 robot connected +2025-06-09 11:30:03.149 26 +2025-06-09 11:30:03.149 current generation=26 +2025-06-09 11:30:03.651 0x1a +2025-06-09 11:30:04.528 initial joint2 2449949 +2025-06-09 11:30:04.528 C:\Users\fusy_\source\repos\HitBotCSharpDemo_x64\HitBotCSharpDemo\HitBotCSharpDemo\bin\x64\Debug\\j4_pid.txt do not exist +2025-06-09 11:30:04.528 robot WritePID +2025-06-09 11:30:04.850 initial joint1 -160239 +2025-06-09 11:30:04.917 initial joint2 2449949 +2025-06-09 11:30:04.964 initial joint3 -219820 +2025-06-09 11:30:05.014 initial joint4 -25369363 +2025-06-09 11:30:05.031 initial joint1 -160239 +2025-06-09 11:30:05.080 initial joint2 2449951 +2025-06-09 11:30:05.134 initial joint3 -219823 +2025-06-09 11:30:05.178 initial joint4 -25369364 +2025-06-09 11:30:05.199 initial joint1 -160239 +2025-06-09 11:30:05.250 initial joint2 2449951 +2025-06-09 11:30:05.298 initial joint3 -219824 +2025-06-09 11:30:05.351 initial joint4 -25369365 +2025-06-09 11:30:07.412 initial_thread initialized +2025-06-09 11:30:07.412 servo enable +2025-06-09 11:30:07.412 brake open +2025-06-09 11:30:07.412 set_brake_state 0 1 +2025-06-09 11:30:07.614 robot initialized +2025-06-09 11:30:08.225 get_scara_param -11.002700 84.112396 -75.471603 -1005.720886 +2025-06-09 11:30:08.225 get_scara_real_coor -11.002800 84.112396 -75.470901 -1005.721008 +2025-06-09 11:30:08.225 λɢ +2025-06-09 11:30:08.225 position -160238.437500 2449951.000000 -219826.984375 -25369364.000000 -526431.500000 2764193.250000 -219810.953125 -24916166.000000 +2025-06-09 11:30:08.225 speed 25144.480469 10788.651367 5.503893 18671.183594 +2025-06-09 11:30:08.225 set_first_position_after_initial +2025-06-09 11:30:08.225 movej_old start_pos: -11.002701 84.112396 -75.471603 -1005.720886 end_pos: -11.002701 84.112297 -75.471603 -1005.720886 org_sp 10.000000 end_sp 0.793652 +2025-06-09 11:30:08.511 J3 Belt Meilage=40.888344km +2025-06-09 11:30:10.571 30 30 30 30 +2025-06-09 11:30:10.571 new_movej_xyz_lr 274.065002 -302.743805 -75.466103 -1005.721008 100.000000 0.000000 1 +2025-06-09 11:30:10.572 goal_angle -60.720737 27.061800 +2025-06-09 11:30:10.572 new_movej_angle -60.720737 27.061800 -75.466103 -1005.721008 0.000000 100.000000 +2025-06-09 11:30:10.572 z1 -75.471603 z2 -75.466103 +2025-06-09 11:30:10.572 angle1_1 -11.002701 angle2_1 84.112297 z1 -75.471603 r1 -1005.720886 +2025-06-09 11:30:10.572 angle1_2 -60.720737 angle2_2 27.061800 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:30:10.572 speed 100.000000 +2025-06-09 11:30:10.573 tcp_distance 498.318573 +2025-06-09 11:30:10.573 new_end_speed 100.000000 j1_acc_t 2.491593 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 21.825035 +2025-06-09 11:30:10.573 new_end_speed 100.000000 j2_acc_t 2.491593 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 25.043812 +2025-06-09 11:30:10.573 new_end_speed 100.000000 j3_acc_t 2.491593 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.002415 +2025-06-09 11:30:10.573 new_end_speed 100.000000 j4_acc_t 2.491593 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000054 +2025-06-09 11:30:10.573 end_speed 100.000000 +2025-06-09 11:30:10.573 trail_number4.983186 +2025-06-09 11:30:10.573 tcp_distance 498.318573 +2025-06-09 11:30:10.573 angle1_1 = -11.002701 angle2_1 = 84.112297 z1 = -75.471603 r1 = -1005.720886 angle1_2 = -60.720737 angle2_2 = 27.061800 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:30:15.757 30 30 30 30 +2025-06-09 11:30:15.757 new_movej_xyz_lr 274.065002 -137.158203 -75.466103 -1005.721008 100.000000 0.000000 1 +2025-06-09 11:30:15.757 goal_angle -67.226128 86.401024 +2025-06-09 11:30:15.757 new_movej_angle -67.226128 86.401024 -75.466103 -1005.721008 0.000000 100.000000 +2025-06-09 11:30:15.757 z1 -75.466103 z2 -75.466103 +2025-06-09 11:30:15.757 angle1_1 -60.720737 angle2_1 27.061800 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:30:15.757 angle1_2 -67.226128 angle2_2 86.401024 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:30:15.757 speed 100.000000 +2025-06-09 11:30:15.757 tcp_distance 171.494293 +2025-06-09 11:30:15.757 new_end_speed 100.000000 j1_acc_t 0.857471 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 8.297963 +2025-06-09 11:30:15.757 new_end_speed 100.000000 j2_acc_t 0.857471 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 75.690262 +2025-06-09 11:30:15.757 new_end_speed 100.000000 j3_acc_t 0.857471 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:30:15.757 new_end_speed 100.000000 j4_acc_t 0.857471 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:30:15.757 end_speed 100.000000 +2025-06-09 11:30:15.757 trail_number1.714943 +2025-06-09 11:30:15.757 tcp_distance 171.494293 +2025-06-09 11:30:15.757 angle1_1 = -60.720737 angle2_1 = 27.061800 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -67.226128 angle2_2 = 86.401024 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:30:17.366 30 30 30 30 +2025-06-09 11:30:17.366 new_movej_xyz_lr 274.065002 5.965300 -75.466103 -1005.721008 100.000000 0.000000 1 +2025-06-09 11:30:17.366 goal_angle -44.911705 98.661697 +2025-06-09 11:30:17.366 new_movej_angle -44.911705 98.661697 -75.466103 -1005.721008 0.000000 100.000000 +2025-06-09 11:30:17.366 z1 -75.466103 z2 -75.466103 +2025-06-09 11:30:17.366 angle1_1 -67.226128 angle2_1 86.401024 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:30:17.366 angle1_2 -44.911705 angle2_2 98.661697 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:30:17.366 speed 100.000000 +2025-06-09 11:30:17.366 tcp_distance 144.069748 +2025-06-09 11:30:17.366 new_end_speed 100.000000 j1_acc_t 0.720349 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 33.881371 +2025-06-09 11:30:17.366 new_end_speed 100.000000 j2_acc_t 0.720349 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 18.616140 +2025-06-09 11:30:17.366 new_end_speed 100.000000 j3_acc_t 0.720349 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:30:17.366 new_end_speed 100.000000 j4_acc_t 0.720349 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:30:17.366 end_speed 100.000000 +2025-06-09 11:30:17.366 trail_number1.440697 +2025-06-09 11:30:17.366 tcp_distance 144.069748 +2025-06-09 11:30:17.524 angle1_1 = -67.226128 angle2_1 = 86.401024 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -44.911705 angle2_2 = 98.661697 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:30:18.995 30 30 30 30 +2025-06-09 11:30:18.996 new_movej_xyz_lr 274.065002 149.383698 -75.466103 -1005.721008 100.000000 0.000000 1 +2025-06-09 11:30:18.996 goal_angle -11.002804 84.112190 +2025-06-09 11:30:18.996 new_movej_angle -11.002804 84.112190 -75.466103 -1005.721008 0.000000 100.000000 +2025-06-09 11:30:18.996 z1 -75.466103 z2 -75.466103 +2025-06-09 11:30:18.996 angle1_1 -44.911705 angle2_1 98.661697 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:30:18.996 angle1_2 -11.002804 angle2_2 84.112190 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:30:18.996 speed 100.000000 +2025-06-09 11:30:18.996 tcp_distance 144.322098 +2025-06-09 11:30:18.996 new_end_speed 100.000000 j1_acc_t 0.721610 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 51.395920 +2025-06-09 11:30:18.996 new_end_speed 100.000000 j2_acc_t 0.721610 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 22.052773 +2025-06-09 11:30:18.996 new_end_speed 100.000000 j3_acc_t 0.721610 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:30:18.996 new_end_speed 100.000000 j4_acc_t 0.721610 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:30:18.996 end_speed 100.000000 +2025-06-09 11:30:18.996 trail_number1.443221 +2025-06-09 11:30:18.996 tcp_distance 144.322098 +2025-06-09 11:30:19.012 angle1_1 = -44.911705 angle2_1 = 98.661697 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -11.002804 angle2_2 = 84.112190 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:30:20.541 30 30 30 30 +2025-06-09 11:30:20.541 new_movej_xyz_lr 93.989304 -37.882999 -4.457100 -1027.920044 100.000000 0.000000 1 +2025-06-09 11:30:20.541 goal_angle -87.199585 152.604431 +2025-06-09 11:30:20.541 new_movej_angle -87.199585 152.604431 -4.457100 -1027.920044 0.000000 100.000000 +2025-06-09 11:30:20.541 z1 -75.466103 z2 -4.457100 +2025-06-09 11:30:20.541 angle1_1 -11.002804 angle2_1 84.112190 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:30:20.541 angle1_2 -87.199585 angle2_2 152.604431 z2 -4.457100 r2 -1027.920044 +2025-06-09 11:30:20.541 speed 100.000000 +2025-06-09 11:30:20.541 tcp_distance 288.737366 +2025-06-09 11:30:20.543 new_end_speed 100.000000 j1_acc_t 1.443687 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 57.727364 +2025-06-09 11:30:20.543 new_end_speed 100.000000 j2_acc_t 1.443687 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 51.890335 +2025-06-09 11:30:20.543 new_end_speed 100.000000 j3_acc_t 1.443687 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 53.797054 +2025-06-09 11:30:20.543 new_end_speed 100.000000 j4_acc_t 1.443687 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 16.818187 +2025-06-09 11:30:20.543 end_speed 100.000000 +2025-06-09 11:30:20.543 trail_number2.887374 +2025-06-09 11:30:20.543 tcp_distance 288.737366 +2025-06-09 11:30:20.543 angle1_1 = -11.002804 angle2_1 = 84.112190 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -87.199585 angle2_2 = 152.604431 z2 = -4.457100 r2 = -1027.920044 +2025-06-09 11:49:42.543 SDK_VERSION_V2.0.0.29_Release +2025-06-09 11:49:42.544 robot connected +2025-06-09 11:49:42.544 26 +2025-06-09 11:49:42.544 current generation=26 +2025-06-09 11:49:43.045 0x1a +2025-06-09 11:49:43.847 initial joint2 4444930 +2025-06-09 11:49:43.847 C:\Users\fusy_\source\repos\HitBotCSharpDemo_x64\HitBotCSharpDemo\HitBotCSharpDemo\bin\x64\Debug\\j4_pid.txt do not exist +2025-06-09 11:49:43.847 robot WritePID +2025-06-09 11:49:44.164 initial joint1 -1269934 +2025-06-09 11:49:44.219 initial joint2 4444932 +2025-06-09 11:49:44.267 initial joint3 -12991 +2025-06-09 11:49:44.324 initial joint4 -25056187 +2025-06-09 11:49:44.349 initial joint1 -1269934 +2025-06-09 11:49:44.406 initial joint2 4444932 +2025-06-09 11:49:44.466 initial joint3 -12991 +2025-06-09 11:49:44.522 initial joint4 -25056188 +2025-06-09 11:49:44.534 initial joint1 -1269934 +2025-06-09 11:49:44.575 initial joint2 4444933 +2025-06-09 11:49:44.616 initial joint3 -12991 +2025-06-09 11:49:44.658 initial joint4 -25056189 +2025-06-09 11:49:46.807 initial_thread initialized +2025-06-09 11:49:46.807 servo enable +2025-06-09 11:49:46.807 brake open +2025-06-09 11:49:46.807 set_brake_state 0 1 +2025-06-09 11:49:47.019 robot initialized +2025-06-09 11:49:47.572 get_scara_param -87.199402 152.604706 -4.460400 -1027.919922 +2025-06-09 11:49:47.572 get_scara_real_coor -87.199402 152.604706 -4.460100 -1027.919922 +2025-06-09 11:49:47.572 set_first_position_after_initial +2025-06-09 11:49:47.572 movej_old start_pos: -87.199402 152.604721 -4.460400 -1027.919922 end_pos: -87.199402 152.604721 -4.460400 -1027.919922 org_sp 10.000000 end_sp 10.000000 +2025-06-09 11:49:47.889 J3 Belt Meilage=40.888519km +2025-06-09 11:49:52.254 30 30 30 30 +2025-06-09 11:49:52.254 new_movej_xyz_lr 274.065002 -302.743805 -75.466103 -1005.721008 100.000000 0.000000 1 +2025-06-09 11:49:52.254 goal_angle -60.720737 27.061800 +2025-06-09 11:49:52.254 new_movej_angle -60.720737 27.061800 -75.466103 -1005.721008 0.000000 100.000000 +2025-06-09 11:49:52.254 z1 -4.460400 z2 -75.466103 +2025-06-09 11:49:52.256 angle1_1 -87.199402 angle2_1 152.604721 z1 -4.460400 r1 -1027.919922 +2025-06-09 11:49:52.256 angle1_2 -60.720737 angle2_2 27.061800 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:49:52.256 speed 100.000000 +2025-06-09 11:49:52.256 tcp_distance 361.527069 +2025-06-09 11:49:52.256 new_end_speed 100.000000 j1_acc_t 1.807635 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 16.021500 +2025-06-09 11:49:52.256 new_end_speed 100.000000 j2_acc_t 1.807635 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 75.962517 +2025-06-09 11:49:52.256 new_end_speed 100.000000 j3_acc_t 1.807635 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 42.963566 +2025-06-09 11:49:52.256 new_end_speed 100.000000 j4_acc_t 1.807635 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 13.431947 +2025-06-09 11:49:52.256 end_speed 100.000000 +2025-06-09 11:49:52.257 trail_number3.615271 +2025-06-09 11:49:52.257 tcp_distance 361.527069 +2025-06-09 11:49:52.258 angle1_1 = -87.199402 angle2_1 = 152.604721 z1 = -4.460400 r1 = -1027.919922 angle1_2 = -60.720737 angle2_2 = 27.061800 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:49:55.806 30 30 30 30 +2025-06-09 11:49:55.806 new_movej_xyz_lr 274.065002 -137.158203 -75.466103 -1005.721008 100.000000 0.000000 1 +2025-06-09 11:49:55.806 goal_angle -67.226128 86.401024 +2025-06-09 11:49:55.806 new_movej_angle -67.226128 86.401024 -75.466103 -1005.721008 0.000000 100.000000 +2025-06-09 11:49:55.806 z1 -75.466103 z2 -75.466103 +2025-06-09 11:49:55.806 angle1_1 -60.720737 angle2_1 27.061800 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:49:55.806 angle1_2 -67.226128 angle2_2 86.401024 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:49:55.806 speed 100.000000 +2025-06-09 11:49:55.806 tcp_distance 171.494293 +2025-06-09 11:49:55.806 new_end_speed 100.000000 j1_acc_t 0.857471 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 8.297963 +2025-06-09 11:49:55.806 new_end_speed 100.000000 j2_acc_t 0.857471 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 75.690262 +2025-06-09 11:49:55.806 new_end_speed 100.000000 j3_acc_t 0.857471 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:49:55.806 new_end_speed 100.000000 j4_acc_t 0.857471 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:49:55.811 end_speed 100.000000 +2025-06-09 11:49:55.811 trail_number1.714943 +2025-06-09 11:49:55.811 tcp_distance 171.494293 +2025-06-09 11:49:55.911 angle1_1 = -60.720737 angle2_1 = 27.061800 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -67.226128 angle2_2 = 86.401024 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:49:58.725 30 30 30 30 +2025-06-09 11:49:58.725 new_movej_xyz_lr 274.065002 5.965300 -75.466103 -1005.721008 100.000000 0.000000 1 +2025-06-09 11:49:58.725 goal_angle -44.911705 98.661697 +2025-06-09 11:49:58.725 new_movej_angle -44.911705 98.661697 -75.466103 -1005.721008 0.000000 100.000000 +2025-06-09 11:49:58.725 z1 -75.466103 z2 -75.466103 +2025-06-09 11:49:58.726 angle1_1 -67.226128 angle2_1 86.401024 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:49:58.726 angle1_2 -44.911705 angle2_2 98.661697 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:49:58.726 speed 100.000000 +2025-06-09 11:49:58.726 tcp_distance 144.069748 +2025-06-09 11:49:58.726 new_end_speed 100.000000 j1_acc_t 0.720349 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 33.881371 +2025-06-09 11:49:58.726 new_end_speed 100.000000 j2_acc_t 0.720349 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 18.616140 +2025-06-09 11:49:58.726 new_end_speed 100.000000 j3_acc_t 0.720349 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:49:58.727 new_end_speed 100.000000 j4_acc_t 0.720349 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:49:58.727 end_speed 100.000000 +2025-06-09 11:49:58.727 trail_number1.440697 +2025-06-09 11:49:58.727 tcp_distance 144.069748 +2025-06-09 11:49:58.728 angle1_1 = -67.226128 angle2_1 = 86.401024 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -44.911705 angle2_2 = 98.661697 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:50:00.432 30 30 30 30 +2025-06-09 11:50:00.432 new_movej_xyz_lr 274.065002 149.383698 -75.466103 -1005.721008 100.000000 0.000000 1 +2025-06-09 11:50:00.433 goal_angle -11.002804 84.112190 +2025-06-09 11:50:00.433 new_movej_angle -11.002804 84.112190 -75.466103 -1005.721008 0.000000 100.000000 +2025-06-09 11:50:00.433 z1 -75.466103 z2 -75.466103 +2025-06-09 11:50:00.433 angle1_1 -44.911705 angle2_1 98.661697 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:50:00.433 angle1_2 -11.002804 angle2_2 84.112190 z2 -75.466103 r2 -1005.721008 +2025-06-09 11:50:00.433 speed 100.000000 +2025-06-09 11:50:00.433 tcp_distance 144.322098 +2025-06-09 11:50:00.433 new_end_speed 100.000000 j1_acc_t 0.721610 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 51.395920 +2025-06-09 11:50:00.433 new_end_speed 100.000000 j2_acc_t 0.721610 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 22.052773 +2025-06-09 11:50:00.433 new_end_speed 100.000000 j3_acc_t 0.721610 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 0.000000 +2025-06-09 11:50:00.433 new_end_speed 100.000000 j4_acc_t 0.721610 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 0.000000 +2025-06-09 11:50:00.433 end_speed 100.000000 +2025-06-09 11:50:00.435 trail_number1.443221 +2025-06-09 11:50:00.435 tcp_distance 144.322098 +2025-06-09 11:50:00.435 angle1_1 = -44.911705 angle2_1 = 98.661697 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -11.002804 angle2_2 = 84.112190 z2 = -75.466103 r2 = -1005.721008 +2025-06-09 11:50:02.233 30 30 30 30 +2025-06-09 11:50:02.233 new_movej_xyz_lr 93.989304 -37.882999 -4.457100 -1027.920044 100.000000 0.000000 1 +2025-06-09 11:50:02.233 goal_angle -87.199585 152.604431 +2025-06-09 11:50:02.233 new_movej_angle -87.199585 152.604431 -4.457100 -1027.920044 0.000000 100.000000 +2025-06-09 11:50:02.233 z1 -75.466103 z2 -4.457100 +2025-06-09 11:50:02.233 angle1_1 -11.002804 angle2_1 84.112190 z1 -75.466103 r1 -1005.721008 +2025-06-09 11:50:02.233 angle1_2 -87.199585 angle2_2 152.604431 z2 -4.457100 r2 -1027.920044 +2025-06-09 11:50:02.233 speed 100.000000 +2025-06-09 11:50:02.233 tcp_distance 288.737366 +2025-06-09 11:50:02.233 new_end_speed 100.000000 j1_acc_t 1.443687 j1_avg_time 0.000000 j1_max_acc 237.000000 j1_max_sp 57.727364 +2025-06-09 11:50:02.236 new_end_speed 100.000000 j2_acc_t 1.443687 j2_avg_time 0.000000 j2_max_acc 2566.500000 j2_max_sp 51.890335 +2025-06-09 11:50:02.236 new_end_speed 100.000000 j3_acc_t 1.443687 j3_avg_time 0.000000 j3_max_acc 3869.100098 j3_max_sp 53.797054 +2025-06-09 11:50:02.236 new_end_speed 100.000000 j4_acc_t 1.443687 j4_avg_time 0.000000 j4_max_acc 1572.900024 j4_max_sp 16.818187 +2025-06-09 11:50:02.236 end_speed 100.000000 +2025-06-09 11:50:02.236 trail_number2.887374 +2025-06-09 11:50:02.236 tcp_distance 288.737366 +2025-06-09 11:50:02.236 angle1_1 = -11.002804 angle2_1 = 84.112190 z1 = -75.466103 r1 = -1005.721008 angle1_2 = -87.199585 angle2_2 = 152.604431 z2 = -4.457100 r2 = -1027.920044 diff --git a/HitBotCSharpDemo/bin/x64/Release/Cam_pos_path.txt b/HitBotCSharpDemo/bin/x64/Release/Cam_pos_path.txt deleted file mode 100644 index ad6e7c2..0000000 --- a/HitBotCSharpDemo/bin/x64/Release/Cam_pos_path.txt +++ /dev/null @@ -1,6 +0,0 @@ -# X,Y,Z,R -274.065,-302.7438,-75.4661,-1005.721 -274.065,-137.1582,-75.4661,-1005.721 -274.065,5.9653,-75.4661,-1005.721 -274.065,149.3837,-75.4661,-1005.721 -93.9893,-37.883,-4.4571,-1027.92 \ No newline at end of file diff --git a/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.AssemblyReference.cache b/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.AssemblyReference.cache index 376c9ed9603e18767aae84e36248d709d05699e3..7efc0251fd171fe7d2adffac7e0d37e10a5b9e4c 100644 GIT binary patch delta 494 zcmca*^3;lhjggOmfq^k`@|Xb%M^xqJ8O4P)_gh2LoJ2Z;yLWRN zPYB<*lcjTRQgZ#Im-Q8YcD7$ze_>MXX6@{QpJpDb*vWX~p!oI3eRdBc-mA~ZpHh6{ z>m%Eggf6kU=e+E8*i8C<=tqD5U-cuE8;^NZU#Ryu5q5b}q~_E!?bEq=CT!rW&HT)} zD(b}A4U8N>M=d^n^zm|ovqFqvSp1?Rpb(Z?RGgWgXKSKoqGzaQJUO08Ni5Mg**w`a p)i}}I*dRH@&n}4$9hyeg%<_FRM diff --git a/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.CoreCompileInputs.cache b/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.CoreCompileInputs.cache index 2e66003..840b874 100644 --- a/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.CoreCompileInputs.cache +++ b/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -0d727208eca3c47038b3513931488e27610437c08abe9796c9d6e14b694471f2 +601c0e3a021487c440b2658da2c2fff70bd90fc5e9e4b9164ca2c498d1fcad6a diff --git a/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.FileListAbsolute.txt b/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.FileListAbsolute.txt index a08b2a8..24978c1 100644 --- a/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.FileListAbsolute.txt +++ b/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.FileListAbsolute.txt @@ -35,3 +35,5 @@ C:\Users\fusy_\source\repos\HitBotCSharpDemo_x64\HitBotCSharpDemo\HitBotCSharpDe C:\Users\fusy_\source\repos\HitBotCSharpDemo_x64\HitBotCSharpDemo\HitBotCSharpDemo\obj\x64\Debug\CSharpDemo.csproj.Up2Date C:\Users\fusy_\source\repos\HitBotCSharpDemo_x64\HitBotCSharpDemo\HitBotCSharpDemo\obj\x64\Debug\HitBotCSharpDemo.exe C:\Users\fusy_\source\repos\HitBotCSharpDemo_x64\HitBotCSharpDemo\HitBotCSharpDemo\obj\x64\Debug\HitBotCSharpDemo.pdb +C:\Users\fusy_\source\repos\HitBotCSharpDemo_x64\HitBotCSharpDemo\HitBotCSharpDemo\bin\x64\Debug\MvCameraControl.Net.dll +C:\Users\fusy_\source\repos\HitBotCSharpDemo_x64\HitBotCSharpDemo\HitBotCSharpDemo\bin\x64\Debug\MvCameraControl.Net.xml diff --git a/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.GenerateResource.cache b/HitBotCSharpDemo/obj/x64/Debug/CSharpDemo.csproj.GenerateResource.cache index 4e981e942394ecc6653d6b68d8d3e55ff50ae787..725aa7b8f5ce99f1189702329d967f1f4bcf321f 100644 GIT binary patch delta 15 WcmZo+Y+;^blCK}rqWusBnIeI=l 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 delta 20544 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

--hXayta6JQ1$3FpEYa30KrnXnL^3NM25;ngq;-VSr&4GUoP`raORGq?zSN4OXcflJ_ta4F1%XTme#S@05gHoO_KSaP?)Lih|^ z2498C;lJQHuu=nWZ@v*c4}AxCK0FRy07t_M;Y_$1X23P@EO-&T9Il0Tz;*C(co}>h zUJgHo>)}xiz5U{2;1%dQ!zFcIDf$HTi|I=mbH2L29S0$D4$x4^Bi2;K`{hWEku z;r*~mV{hNKIoyuE7yLa;f)BuC$bG(>4R^q^;UD0|@FBPb7QyZCVYm}M0$+wZ;Xe2T z{11E*>YkA`o7(~Y5%z)Fha3l=hO^)^Fb_Tt&xS9+^>7#50(Zk5@J09nd%%Xg_MK`p;|v0fh1z%O2DR@r2x|XmBGmrTY^eRCB~bfEtD*LfehYct=iUQj z;lq$MxBC~UeV@Is1N;Ua3mY`|_JP_#?F03L+W#2|wf{2%YM*BwjE761_IuVq?ekm@ zwZF3!YJcY`sQsOnq4sq?fZDJ53TmIGUJLf^U(mr@|yy2(=fo z0gi-s!clN1)Sky1a18teYVV^)OXdOC29AUMp!PT>!3l6K)LzF~a1y)}PKGx^?P=Tx zwWskU)Skva;WT&vPKRGZ?OW7t#XJC8!DJW@wFfa8Y7gRMm;$rmY`7ez!i!-9UI#Pa zJ#a4k6V#r;9+(L~gr~xoSmpuP5az)4Fc&7m)8GV{2h(6aEP&b{I1es_>!I%RH^bB6 zcK93kJUj#Lg=fOgpziBywq_oHP2qCb1+IVt;7T|Zu7a8H9C$iB7hVLZ?eGiudswv{<2pPBJ_I|!A~*;>45z?HU^;vhE`^W5bKv7} z1AGeJ2>%Fw5B~)J44;O3;4|=3_$;i{o^?NL2zS9Qa5o$VUxYK^OE4F{49|hDz^mY2 z;O+2L_y_nJd=9=2{{`QGpTobxY8@EYVPp7D7zf{kL*QF*GTaL@;oERA+y~Ev`{6b4 zJ$N5{A3g&=fN#PB@GJNstbHuwI&1|$hCSdXa2)&;&Vv7jbKz%j3H%bShF`&J;Medj z_zipF^} z7Q7nrf**G)tPgiW_7L2cVMDkdHiBQk#;`^w*8Q*vYy#sU=N{bAumzk2*?Vy3!&cCR zv2YD+4X=T1;1<{xJ_e74ufvY;eaN1L`z`DYkM7L44%@-5us7@mhru{F3-*L_VJ}z! z+3Q$w8|;VvQOG$A_eFRd+zSW5Z{R>!qYLYI*aQxP-QaLI3?{)Ta0HwWN5Um=6g&@( zg`40wct0EupM{+FaNmLx;a8AzA8v!LjN7m?JOK`cQ{ahkD$IfG#ki~Bbhr_6KE%Bn za&FUo6mo9U-3@2Kz3?O$>c)5uYr~UaD|ia*3R7SbOoQn#9i9y%@M4$&uY+^p{cs+9 z9A?6oAn)dI{|V>AFJTUB5XX29+r!gfBFuvmU_MNS1#ki6Oq9D4E`{si>2Ndr4J?9Z zz-Qr^@NcjXeg>DpYTX&nVN@G6)JuYuWc6I=zag;&Ar;1+m2d<@dYznu)?(lXv0Nw$|!#m+Dco)orTj4qIUU&t(58evzhY!JR z@M*Xmz5#y^--Qpra8Jf_*ajBC{_tTq4n6`;hL6HL_!vAJJ`UHyop2+30^SS%1Yd+t z!vpXc81BV*4jaHf!;bJd*c(0%N5U826u1k{hcCkm;4AQY_!oFDd=>75uff;g>u?`@ z1O5m86~-hmp2L>#pRhN46OMy#!8EuRo(|uJ7sGvUGkga=1mA@(!GFPb;ePlfd=J*@ z%{UJ`!Vh3?cmR%sAHpf{Q8Y=U^SU4>o|6`Y@iuhOiOr z3LC?I@Mw5EYyxM%V_*(!0ndRg;Re_W-UVaf4%iw#3){fgU|aYxJQh~(%XkithMiy+ z*clFlUEl=R6=uS2a1rbQm&2a$D%cC&4%rKK{{VZ#U69|4xO-q9_&Mwg>-J+@hb`bh z*b@$dqu^k8A{+u2z@hMTI1F9@N5Tzo6ub+Lg-=5EoZVO9c=#_k0aohIxDM;WNw77X z4Ew=pa4MV*BX9;h6P^gqhcn?-a2DJQPl81-1-=Gn!~HN7Rz8k>8CVad!8R}*c83u- z3TDC-cq+_=^WgcgxDvhtSHXY7b6|KN z>vUKLo(G%3^I=DL0Zf1w!l7_AoB-FrS&+SdcP?BD^Wnu%56Uiq7s5;76>uHA30?+& z2QP;Y!S(QIxBQTZL!C&>6$Yi0Y>w zqIBq5=Eoz-(>SCzqH|2rD<0LO&V*Z$dtIws6qn+WTje7dm(D{?L{3B$kK%|&lxKTZ zN|Zl|&eJGNm2(F~VYNkMCQ%+`CwJ|UzKFulL{bsCSDC6lLk| zg zGn6i+TkUKVqP`=4(kpJ;N0e9f59L99PyVJNGSgU~{Qgj?KPp^_{Hy$w28F9~RopUD zAClWyh}yNxRF=tz%6L4Y{;$3(|MDyOCHYl*In*?l_B)BN$}20i(_mRyzjk~sO^sb; z$!N^SAS!>=pW1`!OW~={$ZQ6pw9G`*E^Iyjf7xlgES(nhVU>y6u==j@p*%?bKkU?I z%Swy-lGv=zZ6MWIUp+2JgslKESit0$BI#NGVd8j|iz51Eruytqq zz2eXus&uL#eA4-$@y2hRel7=WP4G^W@=0#;0k0>89vvqIHHJ979fc#t0 zc&PHTdX14910^bBwSDzfm5a(l?OknO;VJ%$5XDitOyovotp2C^kSJ`0r?#dtD{ZcL zWIn;Sv+k{VS?*=0aq=WYZA79v(U^WL(hgCWY744sJ08fL+P(59bA=s@FBtCk*{{a0 z@@30PajTpZzsgqSv<6WbsT`FS)u+lx?o{?u5V?{4cezo0sq7W5s5A#fb)@_&Es8^F zP#mgz9M&O#MKe>oM=|3VBYPBA>Asd?h>B5gCW1 zBP$Tj0O>53#F>Bt$#I%EsN^AJ6Q(7wHSC-`VM8*vf#Dzz`Dy*TYp zIaMp0eHAAO&O^8dcQzs0kmrznNYyIr;UGhh6OkpzT14MhdlJ$6;wzI$y>ERSl7*~5 zHX(Zd`fg-DqBCZ(h~8H|6s3&8L8&W4m#ue1Ku@=x4H<;+9=v&xF%PP2~h8* zv+tJM<5}zcbyV?qB&M5<+kdy*k9ohK(yll@B1E>N94{Ybf5VG-UFESctOk#U-tU4m zR(an6Ylpd)o=`NM^3w#7s&D*WYQ_?Eiv&N@%KvT*4j@$tJXR4LA?jOH(`wy68mk*h^u{nt;xIeRs8VS z|1|pNF_Zawq(gki_or*g*FHmjIQ1};c`ZM_YyEJp^}}uLyZg}RG(WtVe!9B(@vv`g z!nxZwzuR}GcBt@Q^!@kq8S(wS=ewWmyW=^NasQO>|6-qaU z@!#8)n;-s4Kiutpx>x%4+kL+0ljr-!{{mnCl%LMlKDYbfoawt8;fKfbCgZP~ug~<; zTg!Ks>HFJg>8EpqZ_l|g<3EJ|Fn)ni7zb6|sC_Ams3XE_L%+5D%|gLg4l#dA`^R~) zQd)}R=Sn@jq*Aody~Sno~3mw?pC)jrXIG zsmN?33t57!K-MBxBb$+}ND=Zh@(OYQ`3k8@H8n(Hk*)~miFFoO=XlL~&E~-Z#6>Pd zHXt`3oYT}sHzdg~KF&ELgk@HPv?YIeQ z{rDL29P&ECnHKL|U-TiZCz~Mcka&c15sucD8p~%RS;!J(1+o^o8rh6!y;+24&G`z# zb62zW{0dg6|D6)3@3c3!NE#X{`5*Xg>~sp4#V5w2dh!gKH)7*ML(!y7LvsuxV3&fJKs;=Vn1&hKP5j-YyEh3z8{|N2J;hkybo4dx5{JK z@!j?=={8hG-b23I_#VZ1?@C%iPT3#$v+;Otym;a{ThY?bdoq11rsJbT|C zXC!QyeNMtdr9MPv{dji1pM>IcrknY<#7p?S7o7*>*uc}%X0fGHT&*mU(J_wk(2i5uGYUESHbUUzedN`SIi9^g<}fc< zf0fO>gZu?Pk{9sj+57&O6B_&DVoge!H?c)ODre*I%zgLF2OWI(`lg$gzPV+7_|5wF z-1+{Q8*DnyFzs0BEcsD2>(8_I{iPOo53W7VFQm_x$w?^uHCxUs}lztOU~O+57$i{qKPB zSNyRQ8;@u1yQlxzdk1~PB;=I+krV6JbL0D^58A%2Z;EK0Zay*+NSkNwyQlBjde*w8 za;Z&g8;57-`=LGAI9%iB;5a;U-#zW3rBj=p#_!wMW9HWe6UTQ+8No-%m-5X#J|rre zUxv~eZ*jFAA#Q8f^KQAOiF07_F4Ia;^OYtEg_?_bBy#kpX|c{noouSh})$ z&$N*<&hy~x9^>sNdFI~V(U}Fqatek|nU|WEn-p1)6KB7-?DS1c=s9%gNa|C{hFNwT zrlT2mS^QOAg6g0+CgtVK%}ZV2B=k+{lQ^_DLzhwC9Y=lrcF!p7{rr$PawB;KnUVZB zdzYN=^c^vDXrDeK=nqog9baSTP0yL*!XFdglt@8AX7=2Cr+0jOuO11BL;Y~RJHBep zY~Nj3=p3uh5oKmY^2TImeeqlExud7^o-OV@jWtnr1tAQ$muh3 zSklm*Nh;26zmMZ5xt>~AGI*ntoy-fZqktP3H6l@o<=Bm-{jUzVx0iCRy|YuSL4dO3 zjC=HZ2mvcom!DuaE6}g3z5MB&=Gr4Htz@V7NIzHF0=?|?uH^~k*y(-8{1)gSC4YMV z>QY^lQZmweF*#m-kdmF=Q<+eXKfNEaJUhLYu{^tBbmh|zip|TP-aXj7ocQ#vzGmh4 z(|h;Iv(r2D63X$X_uf5Ij-B48Rz?+>deHCR%d^va(aN*ayU(cJgOswYcbb)Fr+1Z= zXQy|Nm1n1SipH zWNQt5%I+TQng;aNiR_-ij$1aPf@zZ7OW4`5tF&F6>HIFI9Dhx*qk9@v+FzT1zhGBW ze0px&$oCht3sYLPa~94`j+-!I>PRN>$l{#5`CX@zz092Kfr}F2 z661Qr4b9JwESQtEbZ9|AUM7oZCgH=Ara(E^I5j^WzSy*GIZUD3mDk}8{xCO_K$X~q zP>GhwZ?Zr5<^y#T(^dTbf>sMMtEvaCjn%L9&$>8o?XP06nYZLOx=#0Tnc4Hzq@C_l z#}7|Un-_7qXVdHQo$mR0Y2D{VQqv=ObFy;M=6ePiED`g&r}a-}v#RV7XI^H(oScHR ze69G?S@D|@r?g@6K?eErau#RgllWW24XX=Mt?(Sp1q1 zYjA&WX>b{OHh_)NgFLO|*orW#A+1n!GD@o^7Tadspp}=xIY3uu6I5^XGVdDBCO8)I zW~IR9uTig0?iCytebWm3`bt1+=Z;8I?nku`(v~J-_d}H1D``^a(iYOWmb-c1A+OWo zVzFO>`y@Pw4e>vO7Iq>FajjlwBdN$71m}8>s@|ch_owRJspeif1(F<{r!=isEnjQr z#)#JQYUygpYW-@l+`gI?tyZiS&#iN(m6>xRT3yl%prG3o)e_rMmVxrgix6OlfM%24+g{gLC40mwjP z5Hc7Uf(%85A;Xa*WCSu28HJ2S#vsQdW07&lctrR26Ol>CWaI>78Zs4`f^h4=34h8P znTdR#O8Y(s752aC68L=1z7XL1#jOo;)(os>%3C)?2n#$WcZ-V zANtR{C4b*@!@f)FZ`$~ons9|W0!!fMs{cM;ez0cHn8ux^6umoZW6{^^ozIS5eBB!< z_pjP9^1!3bM{4-4P)A@1{9N^){>l7yeR6AD`tFzY8WqL$?>6Su?Yq;j{F|G6SLEzd zzTI}g5t#LgBn3)9dyZ0;p048Wue}7C{Ubi4^}SVrOKbF<)S6!FZ~5!31v5&&LDc$L zVGljI#wEIE7>3zw-!1~J>WD|{wqWa=U2ZaoNUtT$^q&2FoR{Z{pr)yQ& zk5FNt7&?j-nu_0lsW@W2GI`EJ>AypqA*GF?`dBACB&rEsxYESx&ks`C3u=P2L*fzb zw~R)#FESg+LY5#akhRFw$Yx|KQiME>yn-A+zCx-}-wlyiM8D_gizFcxzyG3eD%7v0 z1T_Cwod5Hx^SjTm{o2p}{rDzb@%yhIUuH*|k66|)+~Sm}?7acYA9Eh5;`d)=7Spf9 zu;To0#rfZoO_}9x#rfZoMPhU+mx}Yh2N#UWrQ-arS1xP?MwQCtaG(EGWI8wT1k#=e zuRv-tw{JoY!&%&4&sovKc%U|L67|1!NIDQ_nWtY5LtC)N>V6^TvMbL2YOJtI=YLOI zdg-egqvj<&wq#)62S(nxd||3&J2>>dXH|Hk>>G~!x>EJpM!Mr-73+`@6&+UKud6SMj%E3uKXnO|*Z-fo z`VKkq-=&Z2_2f~n)?S=!Z9Msg;HoG34O#y2u2*U=?&a#MUb}Ey?MbiJez>h=eOGzV z!!=)OvuJ(ox_!^TXl9KCSKZMd(n~>d>^BSNT|H&RmeGAT-?QwMJMV0};DLu?XIz>3 ziuLu6qlSEa$O$bE;E0sK;i~_Kp09T8i*fUAU)uWCuXbFsW_PV^+biW?|MsZ(Ih($G zZEVi7MM@s{MU$bvwDo>eg3gU)^%e`#H(&F0qfQazqke z9_S&LfY$lrtRA&%!lS~WRkUVRYGj>tT4IaH=*ak(xcHdZ=uR;mJ9q5ZEheE|*Di6P zNeP`2y2ZzLitQ4Y&^0bI)TvYFxXezmlj7q-Xc2^O{U36<{#gPzT=ReV`v1>T<0aF1xaz-r{a>Z;(7CcV_?G{An>61(uc3J!SfV!k>~=n4VjhQK0ZMP57k^Q}#0`ApA*Q_(wAN zNuh$Q$vL5X<>N?ZBhwep5y;Po{M^a;X-;h%fn4Mjhkj(zo)^k5%nB8xj0(AJvmoXO z*9$o^aps5PJo0s9;!F+|7G~v4{ynobJpI#U$I6}S9q$$%)Q%}yVzS{C#{;KHp%%}z; zf1TU7Uep>|bE&ZVoL=>cDO{_SOoXxvL8H`~jN5KgpB*5#8(l&SRJj36`$$#$&+hOdwtMDEvp0{ zynWq7oLj@JB7{3i6RBl&!``SU((|xM&*V^Hs#yvQOUp@{ z93pjY`j)~d{L8O#uXJxgABlN$_^cPsu~uYlMMXPy%7IIZJmiVWhot8(<%Kq-{8Yn_ z%B*696;Qr{^#b<11_39G1TSAZ6d9_j3+Hc3{QTRWuf*xuh12t$Cer=j;|?kvL|YMw{Woz6J zm6m3(iglcIyww!}E6$K0*AK)C+Z)@C76^eda_EruNXX!!Z=AMNU%UgHtR)ok2Y z?O+US4?DnU*ac!{*S6|V;l0pVR&T41Ro}WFX^ol8qpa$*2$LVTZUW&t^XG@~oV0L` zmV7vE&I`MBi7?!94us3!A4YdCj1!^ChBEZRXyb&T19U1YQ-_gUOVvZjn>7NNf~ee9 zAnTD|qtyQtw%V%3JSmOU_80{+*;O}7P8V!SL;%2;J`1A4*aPouJu^*@l6n(?#-%Jip->d^Q z#?*z4AbpU2e>D9x2I-4LJL8!8mHMpKC{nt93E3&lA4K`uapEi@4WHc?V^Fb%89Tn@t^-Vbbc2K&m9Y2Y=IfePT*?mK4IsIlO zWoP5ZiEng99@|UYskx@VrCn(3l|Qov8K^-Tb&ppzx~Ba^DBq6J(A>1lL~dO3(?;YL zWI2soZq!E_;$Sl3wEza3k0PGo~} zGDDgZ6>c65R^o6k`WIaHlx1XXwROK=g^Q8n=V>ff;Aa#1N?h~b@uRlt_mh#Eo1aNy z6weP>EW?k=y_@H!0r6-a_WQ{~FZZ#yU5boB-_vuibZPzLcRwR7d%6;)@-Ho>+_n+U zakyy>@k{uT&e=78I4Th1f6_0lVF<^pVF<%nw=s`f!T5k}2Z{nm6}72S)Fx2WCRlVs zaBlO!+_Qpn?+(mM56t^CIPc-$ywif`j}2VV(238i?{=zFp%RopPtlAb`g>`%hULx( zjm|ag#VMnqI9P-~`7!R4=lPhA!2EW?xz+Q3JbC7lIE&j##`OIBP)^~%w46+*Oz>91 z-fbh1&br<2Z#M2!hVFP+9Nt-;xjMh!y%yN2JGY+{yJvTd1*_afIQdb!=acT1xF5r{ zibC;dedG_%Usq!ezOE{?R(Q37_N9TMZv%6?2IkHP%v~3lyC*R3+Tgq|1M{^OQkqQN zj8H~Vm$-2LlFW#6yfj*7!#Y(RTXW;DxQ8Kg)d&ehD6a0_IzQ4GIW22~FD{~ws6vD) z4=W=#J#|zr+uo^zl2Q}1vofYSWj7i}+Y$LQZq*hRW3~+$f_Y;v43(*ZBKhHQL;cRQ z|AV=2QTok&OQ3JiULWjMqU^r#^7Duy^b|%BlTCio3v*HjI68Xm zbiM|AR1+oEQy4|e;g3@eXXH+H$^pAk2cM>36#jztv%#XDf^#nm&TA2zw>CI`Kyd!n z;DV_^Zp4(|zUH1^0|ZLzB%?5jxQ59kTql!RhYrro$|+1POe-|ChydL*9o^pO(&+f%=fb_S>6w*Z()?;EHu3)XGqT_-^Oj!PLVW*eJ z;YyUJ$X>)$Cd63?$}fyV`?q~(4sZe z#9f#*Ep^bzY^zLSNS~5AT7wcwZTutBy#jagYuwAcHHptddg5*o;VTcOOz{#f^DN9& z4#rPK!a4!RPx|~QS*88ReIeoN=DRBHH+$|?uZ$HX+*5B1L3z`eikx*5{i}q1c6v5j z9L`)xHr@32)3l5@IupldY$lj|XkVeMG*!m!Qlvf(zwz8FO*KlnSDH?qUg#uBYdP(1 z`@=g>nv|}y4!+*4p@bhy2o&`Q7Ig{~{o9!qLs4_D4f20pLU4ZN;QZ~u1$P9CJ_{_g z0}CGyEc`O+{I)^;eNTDol} z5=ToB`7>@!f22yoZ6ntypHzCJTPK4LKHq^Rq$>~`%ncT$1?MIQ=k*KD?-E?l#%XhA z{!dY5qS$8%D~uvmaFgfc!yWVKcca(`8M sc;Ymk~c%kLbls^nUSoJbdw+wb)p7I+WJ6M$z~p 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 Nb2|RZ)&Fh@{6Fyt^IZS{ diff --git a/README.md b/README.md index e69de29..f7cc65c 100644 --- a/README.md +++ b/README.md @@ -0,0 +1 @@ +Cam_pos_path.txt位置:HitBotCSharpDemo\HitBotCSharpDemo\bin\x64\Debug \ No newline at end of file