Commit fee2767d LN

二维码学习功能修改

1 个父辈 12cebded
......@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CodeLibrary</RootNamespace>
<AssemblyName>CodeLibrary</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
......@@ -22,6 +22,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
......@@ -30,6 +31,7 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Basler.Pylon, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e389355f398382ab, processorArchitecture=x86">
......@@ -55,6 +57,9 @@
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="zxing">
<HintPath>..\dll\zxing.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="camera\Basler.cs" />
......@@ -84,6 +89,7 @@
<Compile Include="ImageHelper.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="CodeResourceControl.cs" />
<Compile Include="ZXingCodeHelper.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="FrmBase.resx">
......
......@@ -33,8 +33,6 @@
this.btnSelImage = new System.Windows.Forms.Button();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.txtResult = new System.Windows.Forms.TextBox();
this.btnErZhi = new System.Windows.Forms.Button();
this.btnGray = new System.Windows.Forms.Button();
this.hWindowControl1 = new HalconDotNet.HWindowControl();
this.btnbarCode = new System.Windows.Forms.Button();
this.btnLearn = new System.Windows.Forms.Button();
......@@ -49,13 +47,11 @@
this.label2 = new System.Windows.Forms.Label();
this.cmbCodeType = new System.Windows.Forms.ComboBox();
this.label3 = new System.Windows.Forms.Label();
this.btnAn = new System.Windows.Forms.Button();
this.chbUseParam = new System.Windows.Forms.CheckBox();
this.txtParamPath = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.btnLight = new System.Windows.Forms.Button();
this.button1 = new System.Windows.Forms.Button();
this.btnScanTest = new System.Windows.Forms.Button();
this.chbZxing = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
......@@ -70,7 +66,7 @@
// btnSelImage
//
this.btnSelImage.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSelImage.Location = new System.Drawing.Point(10, 12);
this.btnSelImage.Location = new System.Drawing.Point(10, 10);
this.btnSelImage.Name = "btnSelImage";
this.btnSelImage.Size = new System.Drawing.Size(141, 33);
this.btnSelImage.TabIndex = 1;
......@@ -99,30 +95,6 @@
this.txtResult.Size = new System.Drawing.Size(450, 290);
this.txtResult.TabIndex = 3;
//
// btnErZhi
//
this.btnErZhi.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnErZhi.Location = new System.Drawing.Point(557, 12);
this.btnErZhi.Name = "btnErZhi";
this.btnErZhi.Size = new System.Drawing.Size(59, 33);
this.btnErZhi.TabIndex = 5;
this.btnErZhi.Text = "二值化";
this.btnErZhi.UseVisualStyleBackColor = true;
this.btnErZhi.Visible = false;
this.btnErZhi.Click += new System.EventHandler(this.btnErZhi_Click);
//
// btnGray
//
this.btnGray.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnGray.Location = new System.Drawing.Point(557, 50);
this.btnGray.Name = "btnGray";
this.btnGray.Size = new System.Drawing.Size(59, 33);
this.btnGray.TabIndex = 6;
this.btnGray.Text = "图像转灰";
this.btnGray.UseVisualStyleBackColor = true;
this.btnGray.Visible = false;
this.btnGray.Click += new System.EventHandler(this.btnGray_Click);
//
// hWindowControl1
//
this.hWindowControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
......@@ -140,7 +112,7 @@
// btnbarCode
//
this.btnbarCode.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnbarCode.Location = new System.Drawing.Point(896, 50);
this.btnbarCode.Location = new System.Drawing.Point(896, 49);
this.btnbarCode.Name = "btnbarCode";
this.btnbarCode.Size = new System.Drawing.Size(167, 33);
this.btnbarCode.TabIndex = 9;
......@@ -152,7 +124,7 @@
//
this.btnLearn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnLearn.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnLearn.Location = new System.Drawing.Point(1249, 12);
this.btnLearn.Location = new System.Drawing.Point(1249, 10);
this.btnLearn.Name = "btnLearn";
this.btnLearn.Size = new System.Drawing.Size(109, 33);
this.btnLearn.TabIndex = 10;
......@@ -163,7 +135,7 @@
// btnDCode
//
this.btnDCode.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnDCode.Location = new System.Drawing.Point(896, 12);
this.btnDCode.Location = new System.Drawing.Point(896, 10);
this.btnDCode.Name = "btnDCode";
this.btnDCode.Size = new System.Drawing.Size(167, 33);
this.btnDCode.TabIndex = 11;
......@@ -174,7 +146,7 @@
// btnClearLog
//
this.btnClearLog.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnClearLog.Location = new System.Drawing.Point(711, 50);
this.btnClearLog.Location = new System.Drawing.Point(711, 49);
this.btnClearLog.Name = "btnClearLog";
this.btnClearLog.Size = new System.Drawing.Size(116, 33);
this.btnClearLog.TabIndex = 12;
......@@ -209,7 +181,7 @@
"18",
"19",
"20"});
this.cmbCount.Location = new System.Drawing.Point(334, 16);
this.cmbCount.Location = new System.Drawing.Point(334, 53);
this.cmbCount.Name = "cmbCount";
this.cmbCount.Size = new System.Drawing.Size(66, 25);
this.cmbCount.TabIndex = 16;
......@@ -217,7 +189,7 @@
// lblCount
//
this.lblCount.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblCount.Location = new System.Drawing.Point(157, 20);
this.lblCount.Location = new System.Drawing.Point(157, 57);
this.lblCount.Name = "lblCount";
this.lblCount.Size = new System.Drawing.Size(171, 17);
this.lblCount.TabIndex = 15;
......@@ -227,7 +199,7 @@
// btnCameraImage
//
this.btnCameraImage.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCameraImage.Location = new System.Drawing.Point(10, 50);
this.btnCameraImage.Location = new System.Drawing.Point(10, 49);
this.btnCameraImage.Name = "btnCameraImage";
this.btnCameraImage.Size = new System.Drawing.Size(141, 33);
this.btnCameraImage.TabIndex = 17;
......@@ -239,7 +211,7 @@
//
this.btnExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnExit.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnExit.Location = new System.Drawing.Point(1249, 50);
this.btnExit.Location = new System.Drawing.Point(1249, 49);
this.btnExit.Name = "btnExit";
this.btnExit.Size = new System.Drawing.Size(109, 33);
this.btnExit.TabIndex = 18;
......@@ -263,7 +235,7 @@
this.cmbCamera.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCamera.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbCamera.FormattingEnabled = true;
this.cmbCamera.Location = new System.Drawing.Point(334, 54);
this.cmbCamera.Location = new System.Drawing.Point(334, 14);
this.cmbCamera.Name = "cmbCamera";
this.cmbCamera.Size = new System.Drawing.Size(326, 25);
this.cmbCamera.TabIndex = 21;
......@@ -271,7 +243,7 @@
// label2
//
this.label2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(157, 58);
this.label2.Location = new System.Drawing.Point(157, 18);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(171, 17);
this.label2.TabIndex = 20;
......@@ -283,7 +255,7 @@
this.cmbCodeType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCodeType.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbCodeType.FormattingEnabled = true;
this.cmbCodeType.Location = new System.Drawing.Point(506, 16);
this.cmbCodeType.Location = new System.Drawing.Point(506, 53);
this.cmbCodeType.Name = "cmbCodeType";
this.cmbCodeType.Size = new System.Drawing.Size(154, 25);
this.cmbCodeType.TabIndex = 23;
......@@ -292,32 +264,20 @@
// label3
//
this.label3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.Location = new System.Drawing.Point(378, 20);
this.label3.Location = new System.Drawing.Point(378, 57);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(122, 17);
this.label3.TabIndex = 22;
this.label3.Text = "条码类型:";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnAn
//
this.btnAn.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAn.Location = new System.Drawing.Point(645, 50);
this.btnAn.Name = "btnAn";
this.btnAn.Size = new System.Drawing.Size(59, 33);
this.btnAn.TabIndex = 25;
this.btnAn.Text = "变暗";
this.btnAn.UseVisualStyleBackColor = true;
this.btnAn.Visible = false;
this.btnAn.Click += new System.EventHandler(this.btnAn_Click);
//
// chbUseParam
//
this.chbUseParam.AutoSize = true;
this.chbUseParam.Checked = true;
this.chbUseParam.CheckState = System.Windows.Forms.CheckState.Checked;
this.chbUseParam.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbUseParam.Location = new System.Drawing.Point(711, 18);
this.chbUseParam.Location = new System.Drawing.Point(711, 16);
this.chbUseParam.Name = "chbUseParam";
this.chbUseParam.Size = new System.Drawing.Size(75, 21);
this.chbUseParam.TabIndex = 26;
......@@ -344,34 +304,10 @@
this.label4.Text = "参数路径";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnLight
//
this.btnLight.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnLight.Location = new System.Drawing.Point(645, 12);
this.btnLight.Name = "btnLight";
this.btnLight.Size = new System.Drawing.Size(59, 33);
this.btnLight.TabIndex = 24;
this.btnLight.Text = "提亮";
this.btnLight.UseVisualStyleBackColor = true;
this.btnLight.Visible = false;
this.btnLight.Click += new System.EventHandler(this.btnLigth_Click);
//
// button1
//
this.button1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button1.Location = new System.Drawing.Point(723, 12);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(167, 33);
this.button1.TabIndex = 29;
this.button1.Text = "循环测试";
this.button1.UseVisualStyleBackColor = true;
this.button1.Visible = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// btnScanTest
//
this.btnScanTest.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnScanTest.Location = new System.Drawing.Point(1069, 12);
this.btnScanTest.Location = new System.Drawing.Point(1069, 10);
this.btnScanTest.Name = "btnScanTest";
this.btnScanTest.Size = new System.Drawing.Size(167, 33);
this.btnScanTest.TabIndex = 30;
......@@ -379,18 +315,27 @@
this.btnScanTest.UseVisualStyleBackColor = true;
this.btnScanTest.Click += new System.EventHandler(this.btnScanTest_Click);
//
// chbZxing
//
this.chbZxing.AutoSize = true;
this.chbZxing.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbZxing.Location = new System.Drawing.Point(820, 16);
this.chbZxing.Name = "chbZxing";
this.chbZxing.Size = new System.Drawing.Size(60, 21);
this.chbZxing.TabIndex = 31;
this.chbZxing.Text = "ZXing";
this.chbZxing.UseVisualStyleBackColor = true;
//
// FrmCodeDecode
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1375, 729);
this.Controls.Add(this.chbZxing);
this.Controls.Add(this.btnScanTest);
this.Controls.Add(this.button1);
this.Controls.Add(this.txtParamPath);
this.Controls.Add(this.label4);
this.Controls.Add(this.chbUseParam);
this.Controls.Add(this.btnAn);
this.Controls.Add(this.btnLight);
this.Controls.Add(this.cmbCodeType);
this.Controls.Add(this.cmbCamera);
this.Controls.Add(this.label2);
......@@ -403,8 +348,6 @@
this.Controls.Add(this.btnLearn);
this.Controls.Add(this.btnbarCode);
this.Controls.Add(this.hWindowControl1);
this.Controls.Add(this.btnGray);
this.Controls.Add(this.btnErZhi);
this.Controls.Add(this.txtResult);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.btnSelImage);
......@@ -430,8 +373,6 @@
private System.Windows.Forms.Button btnSelImage;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.TextBox txtResult;
private System.Windows.Forms.Button btnErZhi;
private System.Windows.Forms.Button btnGray;
private HalconDotNet.HWindowControl hWindowControl1;
private System.Windows.Forms.Button btnbarCode;
private System.Windows.Forms.Button btnLearn;
......@@ -446,13 +387,11 @@
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ComboBox cmbCodeType;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Button btnAn;
private System.Windows.Forms.CheckBox chbUseParam;
private System.Windows.Forms.TextBox txtParamPath;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button btnLight;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button btnScanTest;
private System.Windows.Forms.CheckBox chbZxing;
}
}
......@@ -71,9 +71,7 @@ namespace CodeLibrary
}
}
private void LoadCamera()
{
// string[] camerName = BaslerCamera.Instance.CameraName;
// baslerNameList.AddRange(camerName);
{
cmbCamera.Items.Clear();
Camera.Type = CameraType.HIK;
Camera._cam.Load();
......@@ -81,13 +79,7 @@ namespace CodeLibrary
{
cmbCamera.Items.Add(str);
}
//camerName = HIKCamera.Instance.CameraName;
//hikNameList.AddRange(camerName);
//foreach (string str in camerName)
//{
// cmbCamera.Items.Add(str);
//}
if (cmbCamera.Items.Count > 0)
{
cmbCamera.SelectedIndex = 0;
......@@ -115,6 +107,10 @@ namespace CodeLibrary
//读取图片内容
Image img = (Image)Image.FromFile(filename).Clone();
pictureBox1.Image = img;
Bitmap bitmap = new Bitmap(pictureBox1.Image);
HObject hoimg = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
HDCodeLearnHelper.DefaultImage = hoimg;
ShowImage(hoimg);
}
private void btnErZhi_Click(object sender, EventArgs e)
......@@ -158,8 +154,8 @@ namespace CodeLibrary
}
private void btnbarCode_Click(object sender, EventArgs e)
{
if (pictureBox1.Image == null)
{
if (HDCodeLearnHelper.DefaultImage == null)
{
MessageBox.Show(selImage, title, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
......@@ -168,14 +164,20 @@ namespace CodeLibrary
txtResult.Text = "";
stopwatch.Restart();
HDCodeHelper.HalconWindow = this.hWindowControl1.HalconWindow;
Bitmap map = new Bitmap(pictureBox1.Image);
//if (chbZxing.Checked)
//{
// zxingDecode(map, "barcode");
//}
//else
if (chbZxing.Checked)
{
if (pictureBox1.Image == null)
{
MessageBox.Show(selImage, title, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Bitmap map = new Bitmap(pictureBox1.Image);
zxingDecode(map, "barcode");
}
else
{
List<CodeInfo> result = HDCodeHelper.DecodeBarCode(map);
List<CodeInfo> result = HDCodeHelper.DecodeBarCode(HDCodeLearnHelper.DefaultImage);
ShowCode(result);
txtResult.Text += "\r\n elapsed time:" + stopwatch.Elapsed.ToString();
}
......@@ -198,66 +200,64 @@ namespace CodeLibrary
}
private void btnDCode_Click(object sender, EventArgs e)
{
if (pictureBox1.Image == null)
{
MessageBox.Show(selImage, title, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
{
int count = cmbCount.SelectedIndex;
txtResult.Text = "";
stopwatch.Restart();
Bitmap map = new Bitmap(pictureBox1.Image);
HObject ho_image = HDCodeHelper.Bitmap2HObjectBpp24(map);
// Bitmap map = new Bitmap(pictureBox1.Image);
//HObject ho_image = HDCodeHelper.Bitmap2HObjectBpp24(map);
txtResult.Text += "\r\n elapsed time:" + stopwatch.Elapsed.ToString();
hWindowControl1.HalconWindow.SetPart(0, 0, map.Height, map.Width);
HOperatorSet.DispObj(ho_image, hWindowControl1.HalconWindow);
ShowImage(ho_image);
//hWindowControl1.HalconWindow.SetPart(0, 0, map.Height, map.Width);
//HOperatorSet.DispObj(ho_image, hWindowControl1.HalconWindow);
//ShowImage(ho_image);
HDCodeHelper.HalconWindow = this.hWindowControl1.HalconWindow;
string codeParamPath = HDCodeHelper.GetCodeParamFilePath(cmbCodeType.Text);
if (chbUseParam.Checked.Equals(false))
{
codeParamPath = "";
}
//if (chbZxing.Checked)
//{
// zxingDecode(map, cmbCodeType.Text);
//}
//else
if (chbZxing.Checked)
{
if (pictureBox1.Image == null)
{
MessageBox.Show(selImage, title, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Bitmap map = new Bitmap(pictureBox1.Image);
zxingDecode(map, cmbCodeType.Text);
}
else
{
if (HDCodeLearnHelper.DefaultImage == null)
{
MessageBox.Show(selImage, title, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
List<CodeInfo> codeList = new List<CodeInfo>();
if (cmbCodeType.Text.ToLower().Equals("barcode"))
{
codeList = HDCodeHelper.DecodeBarCode(ho_image);
codeList = HDCodeHelper.DecodeBarCode(HDCodeLearnHelper.DefaultImage);
}
else
{
codeList = HDCodeHelper.DecodeCode(ho_image, count, codeParamPath, cmbCodeType.Text);
}
//if (codeList.Count <= 0)
//{
// zxingDecode(map, cmbCodeType.Text);
//}
//else
{
ShowCode(codeList);
txtResult.Text += "\r\n elapsed time:" + stopwatch.Elapsed.ToString();
codeList = HDCodeHelper.DecodeCode(HDCodeLearnHelper.DefaultImage, count, codeParamPath, cmbCodeType.Text);
}
ShowCode(codeList);
txtResult.Text += "\r\n elapsed time:" + stopwatch.Elapsed.ToString();
}
}
private void zxingDecode(Bitmap map, string type)
{
//List<string> results = ZXingCodeHelper.DeCodes(map, type);
List<string> results = ZXingCodeHelper.DeCodes(map, type);
//txtResult.Text = " zxing decode:";
//foreach (string code in results)
//{
// txtResult.Text += "\r\n" + "\r\n" + code;
//}
//txtResult.Text += "\r\n \r\n elapsed time:" + stopwatch.Elapsed.ToString();
txtResult.Text = " zxing decode:";
foreach (string code in results)
{
txtResult.Text += "\r\n" + "\r\n" + code;
}
txtResult.Text += "\r\n \r\n elapsed time:" + stopwatch.Elapsed.ToString();
}
private void btnClearLog_Click(object sender, EventArgs e)
......@@ -265,7 +265,7 @@ namespace CodeLibrary
HDLogUtil.ClearLog();
txtResult.Text = "";
}
private Bitmap GetCameraBitmap()
private HObject GetCameraBitmap()
{
try
{
......@@ -276,27 +276,11 @@ namespace CodeLibrary
MessageBox.Show(selCamera);
return null;
}
//if (baslerNameList.Contains(camerName))
//{
// BaslerCamera.Instance.Open(camerName);
// BaslerCamera.Instance.GrabOne();
// Bitmap bitmap = BaslerCamera.Instance.Image;
// BaslerCamera.Instance.Close();
// return bitmap;
//}
//else
//{
// HIKCamera.Instance.Open(camerName);
// HIKCamera.Instance.GrabOne();
// Bitmap bitmap = HIKCamera.Instance.Image;
// HIKCamera.Instance.Close();
// return bitmap;
//}
Bitmap map = Camera._cam.GrabOneImage(camerName);
HObject map = Camera._cam.CaptureOnImage(camerName);
if (map == null)
{
Camera._cam.Close(camerName);
map = Camera._cam.GrabOneImage(camerName);
map = Camera._cam.CaptureOnImage(camerName);
}
return map;
}
......@@ -310,14 +294,38 @@ namespace CodeLibrary
{
try
{
Bitmap bitmap = GetCameraBitmap();
if (bitmap != null)
if (!chbZxing.Checked)
{
HObject bitmap = GetCameraBitmap();
if (bitmap != null)
{
HDLogUtil.info("从相机【" + cmbCamera.Text + "】获取到一张图片");
ClearPicImg();
//pictureBox1.Image = (Image)bitmap.Clone();
//HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
HDCodeLearnHelper.DefaultImage = bitmap;
ShowImage(bitmap);
}
}
else
{
HDLogUtil.info("从相机【" + cmbCamera.Text + "】获取到一张图片");
ClearPicImg();
pictureBox1.Image = (Image)bitmap.Clone();
//HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
//HDCodeLearnHelper.DefaultImage = hoImage;
int index = cmbCamera.SelectedIndex;
string camerName = cmbCamera.Text;
if (index < 0)
{
MessageBox.Show(selCamera);
return;
}
Bitmap bitmap = Camera._cam.GrabOneImage(camerName);
if (bitmap != null)
{
HDLogUtil.info("从相机【" + cmbCamera.Text + "】获取到一张图片");
ClearPicImg();
pictureBox1.Image = (Image)bitmap.Clone();
////HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
//HDCodeLearnHelper.DefaultImage = bitmap;
//ShowImage(bitmap);
}
}
}
catch (Exception ex)
......@@ -432,56 +440,9 @@ namespace CodeLibrary
{
Camera._cam.CloseAll();
}
//private void btnScanTest_Click(object sender, EventArgs e)
//{
// Image img = (Image)Image.FromFile(@"E:\GigE-MV-CE200-10GC (00E06252332)\16-05-15-984.bmp").Clone();
// using (Bitmap bitmap = new Bitmap(img))
// //using (Bitmap bitmap = GetCameraBitmap())
// {
// if (bitmap != null)
// {
// System.Threading.Thread.Sleep(1);
// //转换托盘大概100-150ms,不打印日志
// HalconDotNet.HObject ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
// // LogUtil.info(" 相机【" + cameraName + "】转换图片完成,开始扫码");
// List<CodeInfo> cc = new List<CodeInfo>();
// string str = "";
// List<string> codeTypeList = new List<string>(HDCodeLearnHelper.codeTypeList);
// string r = "";
// int count = cmbCount.SelectedIndex;
// foreach (string codeType in codeTypeList)
// {
// //判断是否是一维码
// if (codeType.ToLower().Equals("barcode"))
// {
// cc = HDCodeHelper.DecodeBarCode(ho_Image);
// }
// else
// {
// string codeParamPath = HDCodeHelper.GetCodeParamFilePath(codeType);
// cc = HDCodeHelper.DecodeCode(ho_Image, count, codeParamPath, codeType);
// }
// foreach (CodeInfo c in cc)
// {
// r += (c.CodeStr) + "##";
// }
// }
// MessageBox.Show(r);
// // ShowCode(cc);
// ho_Image.Dispose();
// bitmap.Dispose();
// }
// }
//}
private void btnScanTest_Click(object sender, EventArgs e)
{
//using (Bitmap bitmap = GetCameraBitmap())
//{
// if (bitmap != null)
// { int index = cmbCamera.SelectedIndex;
{
string camerName = cmbCamera.Text;
if (cmbCamera.SelectedIndex < 0)
{
......@@ -489,10 +450,7 @@ namespace CodeLibrary
return;
}
HDLogUtil.info("获取图片完成,开始转换图片,并扫码");
//System.Threading.Thread.Sleep(1);
////转换托盘大概100-150ms,不打印日志
//Bitmap bit = new Bitmap(bitmap);
//HalconDotNet.HObject ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bit);
HObject ho_Image = Camera._cam.CaptureOnImage(camerName);
HDLogUtil.info(" 相机【" + camerName + "】转换图片完成,开始扫码");
List<CodeInfo> cc = new List<CodeInfo>();
......@@ -517,13 +475,8 @@ namespace CodeLibrary
r += (c.CodeStr) + "##";
}
}
MessageBox.Show(r);
// ShowCode(cc);
ho_Image.Dispose();
//bitmap.Dispose();
// }
//}
MessageBox.Show(r);
ho_Image.Dispose();
}
private void btnCopyN_Click(object sender, EventArgs e)
......
......@@ -66,9 +66,9 @@
//
this.btnStop.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnStop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnStop.Location = new System.Drawing.Point(949, 51);
this.btnStop.Location = new System.Drawing.Point(949, 49);
this.btnStop.Name = "btnStop";
this.btnStop.Size = new System.Drawing.Size(144, 35);
this.btnStop.Size = new System.Drawing.Size(144, 32);
this.btnStop.TabIndex = 3;
this.btnStop.Text = "结束学习";
this.btnStop.UseVisualStyleBackColor = true;
......@@ -78,9 +78,9 @@
//
this.btnOpen.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnOpen.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOpen.Location = new System.Drawing.Point(949, 13);
this.btnOpen.Location = new System.Drawing.Point(949, 12);
this.btnOpen.Name = "btnOpen";
this.btnOpen.Size = new System.Drawing.Size(144, 35);
this.btnOpen.Size = new System.Drawing.Size(144, 32);
this.btnOpen.TabIndex = 1;
this.btnOpen.Text = "开始学习";
this.btnOpen.UseVisualStyleBackColor = true;
......@@ -104,9 +104,9 @@
//
this.btnExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnExit.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnExit.Location = new System.Drawing.Point(1096, 51);
this.btnExit.Location = new System.Drawing.Point(1096, 49);
this.btnExit.Name = "btnExit";
this.btnExit.Size = new System.Drawing.Size(110, 35);
this.btnExit.Size = new System.Drawing.Size(110, 32);
this.btnExit.TabIndex = 6;
this.btnExit.Text = "退出";
this.btnExit.UseVisualStyleBackColor = true;
......@@ -115,7 +115,7 @@
// label1
//
this.label1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(3, 19);
this.label1.Location = new System.Drawing.Point(3, 18);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(110, 20);
this.label1.TabIndex = 7;
......@@ -138,16 +138,16 @@
this.cmbCodeType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCodeType.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbCodeType.FormattingEnabled = true;
this.cmbCodeType.Location = new System.Drawing.Point(131, 53);
this.cmbCodeType.Location = new System.Drawing.Point(117, 53);
this.cmbCodeType.Name = "cmbCodeType";
this.cmbCodeType.Size = new System.Drawing.Size(186, 25);
this.cmbCodeType.Size = new System.Drawing.Size(163, 25);
this.cmbCodeType.TabIndex = 10;
this.cmbCodeType.SelectedIndexChanged += new System.EventHandler(this.cmbCodeType_SelectedIndexChanged);
//
// label2
//
this.label2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(3, 57);
this.label2.Location = new System.Drawing.Point(3, 55);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(110, 20);
this.label2.TabIndex = 9;
......@@ -177,7 +177,7 @@
// lblCount
//
this.lblCount.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblCount.Location = new System.Drawing.Point(323, 58);
this.lblCount.Location = new System.Drawing.Point(286, 55);
this.lblCount.Name = "lblCount";
this.lblCount.Size = new System.Drawing.Size(112, 20);
this.lblCount.TabIndex = 13;
......@@ -210,7 +210,7 @@
"18",
"19",
"20"});
this.cmbCount.Location = new System.Drawing.Point(441, 54);
this.cmbCount.Location = new System.Drawing.Point(404, 53);
this.cmbCount.Name = "cmbCount";
this.cmbCount.Size = new System.Drawing.Size(64, 25);
this.cmbCount.TabIndex = 14;
......@@ -228,9 +228,9 @@
//
this.btnClearLog.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnClearLog.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnClearLog.Location = new System.Drawing.Point(1096, 13);
this.btnClearLog.Location = new System.Drawing.Point(1096, 12);
this.btnClearLog.Name = "btnClearLog";
this.btnClearLog.Size = new System.Drawing.Size(110, 35);
this.btnClearLog.Size = new System.Drawing.Size(110, 32);
this.btnClearLog.TabIndex = 16;
this.btnClearLog.Text = "清理日志";
this.btnClearLog.UseVisualStyleBackColor = true;
......@@ -242,7 +242,7 @@
this.chbTest.Checked = true;
this.chbTest.CheckState = System.Windows.Forms.CheckState.Checked;
this.chbTest.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbTest.Location = new System.Drawing.Point(531, 56);
this.chbTest.Location = new System.Drawing.Point(532, 55);
this.chbTest.Name = "chbTest";
this.chbTest.Size = new System.Drawing.Size(147, 21);
this.chbTest.TabIndex = 17;
......@@ -253,7 +253,7 @@
// btnSelImage
//
this.btnSelImage.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSelImage.Location = new System.Drawing.Point(783, 15);
this.btnSelImage.Location = new System.Drawing.Point(783, 12);
this.btnSelImage.Name = "btnSelImage";
this.btnSelImage.Size = new System.Drawing.Size(160, 32);
this.btnSelImage.TabIndex = 19;
......@@ -286,7 +286,7 @@
//
this.chbUseCamera.AutoSize = true;
this.chbUseCamera.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbUseCamera.Location = new System.Drawing.Point(531, 18);
this.chbUseCamera.Location = new System.Drawing.Point(532, 18);
this.chbUseCamera.Name = "chbUseCamera";
this.chbUseCamera.Size = new System.Drawing.Size(123, 21);
this.chbUseCamera.TabIndex = 21;
......@@ -297,7 +297,7 @@
// btnDelOld
//
this.btnDelOld.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnDelOld.Location = new System.Drawing.Point(783, 53);
this.btnDelOld.Location = new System.Drawing.Point(783, 49);
this.btnDelOld.Name = "btnDelOld";
this.btnDelOld.Size = new System.Drawing.Size(160, 32);
this.btnDelOld.TabIndex = 22;
......@@ -320,12 +320,13 @@
//
this.chbHalcon.AutoSize = true;
this.chbHalcon.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbHalcon.Location = new System.Drawing.Point(344, 19);
this.chbHalcon.Location = new System.Drawing.Point(374, 18);
this.chbHalcon.Name = "chbHalcon";
this.chbHalcon.Size = new System.Drawing.Size(115, 21);
this.chbHalcon.TabIndex = 24;
this.chbHalcon.Text = "Halcon获取图片";
this.chbHalcon.UseVisualStyleBackColor = true;
this.chbHalcon.Visible = false;
this.chbHalcon.CheckedChanged += new System.EventHandler(this.chbHalcon_CheckedChanged);
//
// cmbCamera
......@@ -333,9 +334,9 @@
this.cmbCamera.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCamera.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbCamera.FormattingEnabled = true;
this.cmbCamera.Location = new System.Drawing.Point(131, 17);
this.cmbCamera.Location = new System.Drawing.Point(117, 16);
this.cmbCamera.Name = "cmbCamera";
this.cmbCamera.Size = new System.Drawing.Size(186, 25);
this.cmbCamera.Size = new System.Drawing.Size(351, 25);
this.cmbCamera.TabIndex = 25;
//
// FrmCodeLearn
......
......@@ -27,32 +27,19 @@ namespace CodeLibrary
private string title = CodeResourceControl.GetString(CodeResourceControl.title, "提示");
private string imageIsNull = CodeResourceControl.GetString(CodeResourceControl.imageIsNull, "获取二维码图片为空");
private string sureDelete = CodeResourceControl.GetString(CodeResourceControl.sureDelete, "确定删除文件:");
private Bitmap GetCameraBitmap()
private HObject GetCameraImg()
{
Bitmap bitmap = null;
HObject ho_image = null;
//Bitmap bitmap = null;
int index = cmbCamera.SelectedIndex;
string camerName = cmbCamera.Text;
if (index < 0)
{
MessageBox.Show(selCamera);
return null;
}
//if (baslerNameList.Contains(camerName))
//{
// BaslerCamera.Instance.Open(camerName);
// BaslerCamera.Instance.GrabOne();
// bitmap = BaslerCamera.Instance.Image;
// BaslerCamera.Instance.Close();
//}
//else
//{
// HIKCamera.Instance.Open(camerName);
// HIKCamera.Instance.GrabOne();
// bitmap = HIKCamera.Instance.Image;
// HIKCamera.Instance.Close();
//}
bitmap = Camera._cam.GrabOneImage(camerName);
return bitmap;
}
ho_image = Camera._cam.CaptureOnImage(camerName);
return ho_image;
}
private void btnOpen_Click(object sender, EventArgs e)
{
......@@ -73,14 +60,16 @@ namespace CodeLibrary
}
else
{
Bitmap bitmap = GetCameraBitmap();
if (bitmap != null)
// Bitmap bitmap = GetCameraBitmap();
HObject ho_Image = GetCameraImg();
if (ho_Image != null)
{
HDLogUtil.info("从相机【" + cmbCamera.Text + "】获取到一张图片");
ClearPicImg();
pictureBox1.Image = (Image)bitmap.Clone();
HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
HDCodeLearnHelper.DefaultImage = hoImage;
//pictureBox1.Image = (Image)bitmap.Clone();
//HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
HDCodeLearnHelper.DefaultImage = ho_Image;
ShowImage(ho_Image);
}
else
{
......@@ -99,6 +88,7 @@ namespace CodeLibrary
Bitmap bitmap = new Bitmap( pictureBox1.Image);
HObject Image = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
HDCodeLearnHelper.DefaultImage = Image;
ShowImage(Image);
}
Task.Factory.StartNew(delegate ()
{
......@@ -107,21 +97,12 @@ namespace CodeLibrary
FormStatus(true);
}
private void LoadCamera()
{
//string[] camerName = BaslerCamera.Instance.CameraName;
//baslerNameList.AddRange(camerName);
{
cmbCamera.Items.Clear();
foreach (string str in Camera._cam.Name)
{
cmbCamera.Items.Add(str);
}
//camerName = HIKCamera.Instance.CameraName;
//hikNameList.AddRange(camerName);
//foreach (string str in camerName)
//{
// cmbCamera.Items.Add(str);
//}
}
if (cmbCamera.Items.Count > 0)
{
cmbCamera.SelectedIndex = 0;
......@@ -306,5 +287,15 @@ namespace CodeLibrary
cmbCamera.Visible = true ;
}
}
public void ShowImage(HObject ho_Image)
{
HTuple width, height;
HOperatorSet.GetImageSize(ho_Image, out width, out height);
int dWidth = (int)width.D;
int dHeight = (int)height.D;
this.hWindowControl1.HalconWindow.SetPart(0, 0, dHeight, dWidth);
HOperatorSet.DispObj(ho_Image, hWindowControl1.HalconWindow);
}
}
}
......@@ -78,9 +78,9 @@ namespace CodeLibrary
}
return codeList;
}
public static List<CodeInfo> DecodeCode(HObject ho_Image, string symbolType, string hv_model_path, int codeCount,int timeOut=2000)
public static List<CodeInfo> DecodeCode(HObject ho_Image, string symbolType, string hv_model_path, int codeCount,int timeOut=1500)
{
HDLogUtil.info(" DecodeCode[" + symbolType + "][" + hv_model_path + "][" + codeCount + "] 开始");
HDLogUtil.debug(" DecodeCode[" + symbolType + "][" + hv_model_path + "][" + codeCount + "] 开始");
List<CodeInfo> codeList = new List<CodeInfo>();
try
{
......@@ -141,13 +141,13 @@ namespace CodeLibrary
}
}
}
HDLogUtil.info(" DecodeCode[" + symbolType + "][" + hv_model_path + "][" + codeCount + "] 结束,返回数量:"+codeList.Count);
HDLogUtil.debug(" DecodeCode[" + symbolType + "][" + hv_model_path + "][" + codeCount + "] 结束,返回数量:"+codeList.Count);
return codeList;
}
catch (Exception ex)
{
HDLogUtil.error("DecodeCode出错:" + ex.ToString());
HDLogUtil.info(" DecodeCode[" + symbolType + "][" + hv_model_path + "][" + codeCount + "] 结束,返回数量:" + codeList.Count);
HDLogUtil.debug(" DecodeCode[" + symbolType + "][" + hv_model_path + "][" + codeCount + "] 结束,返回数量:" + codeList.Count);
return codeList;
}
......
......@@ -204,3 +204,4 @@ namespace CodeLibrary
}
}
......@@ -4,6 +4,7 @@ using System.Drawing;
using System.Drawing.Imaging;
using System.Collections.Generic;
using HalconDotNet;
using System.Runtime.InteropServices;
namespace CodeLibrary
{
......@@ -68,7 +69,7 @@ namespace CodeLibrary
}
}
}
public override Bitmap GrabOne(int index)
{
......@@ -168,7 +169,7 @@ namespace CodeLibrary
//cameraCur.CameraOpened += OnCameraOpened;
//cameraCur.CameraClosed += OnCameraClosed;
//cameraCur.StreamGrabber.GrabStarted += OnGrabStarted;
// cameraCurr[index].StreamGrabber.ImageGrabbed += OnImageGrabbed;
// cameraCurr[index].StreamGrabber.ImageGrabbed += OnImageGrabbed;
//cameraCur.StreamGrabber.GrabStopped += OnGrabStopped;
cameraCurr[index].Open();
_width[index] = Convert.ToInt32(cameraCurr[index].Parameters[PLCamera.Width].GetValue());
......@@ -210,7 +211,7 @@ namespace CodeLibrary
}
return rtn;
}
public override Bitmap GrabOneImage(string name)
{
......@@ -229,6 +230,61 @@ namespace CodeLibrary
}
public override HObject CaptureOnImage(string name)
{
int index = cameraName.FindIndex(s => s == name);
if (index == -1)
{
_errInfo = name + "Not find";
return null;
}
if (cameraCurr[index] != null)
{
}
else
{
Open(index);
}
try
{
if (cameraCurr[index] != null)
{
cameraCurr[index].Parameters[PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.SingleFrame);
//cameraCur.StreamGrabber.Start();
//IGrabResult grabResult = cameraCur.StreamGrabber.RetrieveResult(5000, TimeoutHandling.ThrowException);
IGrabResult grabResult = cameraCurr[index].StreamGrabber.GrabOne(5000);
if (!grabResult.IsValid || !grabResult.GrabSucceeded)
{
_errInfo = grabResult.ErrorDescription;
return null;
}
//相机像素数据
byte[] buffer = grabResult.PixelData as byte[];
//锁定像素数据
GCHandle hand = GCHandle.Alloc(buffer, GCHandleType.Pinned);
//获取像素数据的指针
IntPtr pr = hand.AddrOfPinnedObject();
HalconDotNet.HObject image;
//转成灰度图HOjbect
HalconDotNet.HOperatorSet.GenImage1(out image, new HalconDotNet.HTuple("byte"), grabResult.Width, grabResult.Height, pr);
//释放内存
if (hand.IsAllocated) hand.Free();
_errInfo = "OK";
return image;
}
}
catch (Exception ex)
{
_errInfo = ex.Message;
return null;
}
finally
{
// cameraCurr[index].MV_CC_StopGrabbing_NET();
}
return null;
}
}
......
此文件类型无法预览
此文件类型无法预览
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!