Commit feade7a8 by zxw

init

parents
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
build/
bld/
[Bb]in/
[Oo]bj/
# Roslyn cache directories
*.ide/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
#NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
## TODO: Comment the next line if you want to checkin your
## web deploy settings but do note that will include unencrypted
## passwords
*.pubxml
# NuGet Packages
packages/*
*.nupkg
## TODO: If the tool you use requires repositories.config
## uncomment the next line
#!packages/repositories.config
# Enable "build/" folder in the NuGet Packages folder since
# NuGet packages use it for MSBuild targets.
# This line needs to be after the ignore of the build folder
# (and the packages folder if the line above has been uncommented)
!packages/build/
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
/.vs
/JmpModel/CodeTemplates
/JunmpPoliceStation/appsettings.json
/JunmpPoliceStation/internal-nlog.txt
/JunmpPoliceStation/JunmpPoliceStation.xml
GuasuoDLL-JP/DLLMain/.vs/
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
</configuration>

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.168
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GuasuoDLLMain-JP", "GuasuoDLLMain-JP.csproj", "{3422FB90-FEEA-42D9-B2DC-B53F2AA4C68C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3422FB90-FEEA-42D9-B2DC-B53F2AA4C68C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3422FB90-FEEA-42D9-B2DC-B53F2AA4C68C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3422FB90-FEEA-42D9-B2DC-B53F2AA4C68C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3422FB90-FEEA-42D9-B2DC-B53F2AA4C68C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8DF08941-B39D-4A9B-B340-994D43D665BF}
EndGlobalSection
EndGlobal
namespace DLLMain
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label35 = new System.Windows.Forms.Label();
this.textBox_UII = new System.Windows.Forms.TextBox();
this.textBox_key = new System.Windows.Forms.TextBox();
this.textBox_cmd = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.textBox_3des = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.button_3des = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.button_lock_cmd = new System.Windows.Forms.Button();
this.button_cmd_close = new System.Windows.Forms.Button();
this.button_cmd_open = new System.Windows.Forms.Button();
this.button_cmd_recover = new System.Windows.Forms.Button();
this.button_close = new System.Windows.Forms.Button();
this.button_open = new System.Windows.Forms.Button();
this.button_rev = new System.Windows.Forms.Button();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.cb_SerialPort = new System.Windows.Forms.ComboBox();
this.rb_Net = new System.Windows.Forms.RadioButton();
this.rb_Serial = new System.Windows.Forms.RadioButton();
this.tb_IP = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.nud_NetPort = new System.Windows.Forms.NumericUpDown();
this.label2 = new System.Windows.Forms.Label();
this.btn_Open = new System.Windows.Forms.Button();
this.lb_status = new System.Windows.Forms.Label();
this.lb_lockStatus = new System.Windows.Forms.Label();
this.button_read = new System.Windows.Forms.Button();
this.nud_Power = new System.Windows.Forms.NumericUpDown();
this.label6 = new System.Windows.Forms.Label();
this.btn_PowerSet = new System.Windows.Forms.Button();
this.btn_PALevelSet = new System.Windows.Forms.Button();
this.cb_PALevel = new System.Windows.Forms.ComboBox();
this.label13 = new System.Windows.Forms.Label();
this.tb_PortEnable = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.groupBox2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nud_NetPort)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nud_Power)).BeginInit();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// label35
//
this.label35.AutoSize = true;
this.label35.Location = new System.Drawing.Point(20, 39);
this.label35.Name = "label35";
this.label35.Size = new System.Drawing.Size(23, 12);
this.label35.TabIndex = 143;
this.label35.Text = "UII";
//
// textBox_UII
//
this.textBox_UII.Location = new System.Drawing.Point(65, 32);
this.textBox_UII.Name = "textBox_UII";
this.textBox_UII.Size = new System.Drawing.Size(348, 21);
this.textBox_UII.TabIndex = 142;
this.textBox_UII.Text = "3C00E28011405F002820003063000100";
//
// textBox_key
//
this.textBox_key.Location = new System.Drawing.Point(65, 71);
this.textBox_key.Name = "textBox_key";
this.textBox_key.Size = new System.Drawing.Size(318, 21);
this.textBox_key.TabIndex = 144;
this.textBox_key.Text = "E28011402000240728861800";
//
// textBox_cmd
//
this.textBox_cmd.Location = new System.Drawing.Point(65, 113);
this.textBox_cmd.Name = "textBox_cmd";
this.textBox_cmd.Size = new System.Drawing.Size(348, 21);
this.textBox_cmd.TabIndex = 146;
this.textBox_cmd.Text = "B20001000003E9000003EA27218045000030000000010063";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(14, 113);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(29, 12);
this.label3.TabIndex = 145;
this.label3.Text = "明文";
//
// textBox_3des
//
this.textBox_3des.Location = new System.Drawing.Point(65, 141);
this.textBox_3des.Multiline = true;
this.textBox_3des.Name = "textBox_3des";
this.textBox_3des.Size = new System.Drawing.Size(348, 51);
this.textBox_3des.TabIndex = 148;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(14, 155);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(29, 12);
this.label4.TabIndex = 147;
this.label4.Text = "密文";
//
// button_3des
//
this.button_3des.Location = new System.Drawing.Point(461, 153);
this.button_3des.Name = "button_3des";
this.button_3des.Size = new System.Drawing.Size(75, 23);
this.button_3des.TabIndex = 149;
this.button_3des.Text = "指令加密";
this.button_3des.UseVisualStyleBackColor = true;
this.button_3des.Click += new System.EventHandler(this.button_3des_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(20, 71);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(23, 12);
this.label1.TabIndex = 150;
this.label1.Text = "TID";
//
// button_lock_cmd
//
this.button_lock_cmd.Location = new System.Drawing.Point(461, 30);
this.button_lock_cmd.Name = "button_lock_cmd";
this.button_lock_cmd.Size = new System.Drawing.Size(92, 23);
this.button_lock_cmd.TabIndex = 151;
this.button_lock_cmd.Text = "UII指令生成";
this.button_lock_cmd.UseVisualStyleBackColor = true;
this.button_lock_cmd.Click += new System.EventHandler(this.button_lock_cmd_Click);
//
// button_cmd_close
//
this.button_cmd_close.Location = new System.Drawing.Point(461, 71);
this.button_cmd_close.Name = "button_cmd_close";
this.button_cmd_close.Size = new System.Drawing.Size(92, 23);
this.button_cmd_close.TabIndex = 152;
this.button_cmd_close.Text = "关锁指令生成";
this.button_cmd_close.UseVisualStyleBackColor = true;
this.button_cmd_close.Click += new System.EventHandler(this.button_cmd_close_Click);
//
// button_cmd_open
//
this.button_cmd_open.Location = new System.Drawing.Point(569, 71);
this.button_cmd_open.Name = "button_cmd_open";
this.button_cmd_open.Size = new System.Drawing.Size(92, 23);
this.button_cmd_open.TabIndex = 153;
this.button_cmd_open.Text = "开锁指令生成";
this.button_cmd_open.UseVisualStyleBackColor = true;
this.button_cmd_open.Click += new System.EventHandler(this.button_cmd_open_Click);
//
// button_cmd_recover
//
this.button_cmd_recover.Location = new System.Drawing.Point(678, 71);
this.button_cmd_recover.Name = "button_cmd_recover";
this.button_cmd_recover.Size = new System.Drawing.Size(92, 23);
this.button_cmd_recover.TabIndex = 154;
this.button_cmd_recover.Text = "恢复指令生成";
this.button_cmd_recover.UseVisualStyleBackColor = true;
this.button_cmd_recover.Click += new System.EventHandler(this.button_cmd_recover_Click);
//
// button_close
//
this.button_close.Font = new System.Drawing.Font("宋体", 18F);
this.button_close.Location = new System.Drawing.Point(41, 343);
this.button_close.Name = "button_close";
this.button_close.Size = new System.Drawing.Size(152, 100);
this.button_close.TabIndex = 155;
this.button_close.Text = "关锁(F1)";
this.button_close.UseVisualStyleBackColor = true;
this.button_close.Click += new System.EventHandler(this.button_close_Click);
//
// button_open
//
this.button_open.Font = new System.Drawing.Font("宋体", 18F);
this.button_open.Location = new System.Drawing.Point(324, 343);
this.button_open.Name = "button_open";
this.button_open.Size = new System.Drawing.Size(152, 100);
this.button_open.TabIndex = 156;
this.button_open.Text = "开锁(F2)";
this.button_open.UseVisualStyleBackColor = true;
this.button_open.Click += new System.EventHandler(this.button_open_Click);
//
// button_rev
//
this.button_rev.Font = new System.Drawing.Font("宋体", 18F);
this.button_rev.Location = new System.Drawing.Point(604, 343);
this.button_rev.Name = "button_rev";
this.button_rev.Size = new System.Drawing.Size(152, 100);
this.button_rev.TabIndex = 157;
this.button_rev.Text = "恢复(F3)";
this.button_rev.UseVisualStyleBackColor = true;
this.button_rev.Click += new System.EventHandler(this.button_rev_Click);
//
// groupBox2
//
this.groupBox2.Controls.Add(this.cb_SerialPort);
this.groupBox2.Controls.Add(this.rb_Net);
this.groupBox2.Controls.Add(this.rb_Serial);
this.groupBox2.Controls.Add(this.tb_IP);
this.groupBox2.Controls.Add(this.label8);
this.groupBox2.Controls.Add(this.label7);
this.groupBox2.Controls.Add(this.nud_NetPort);
this.groupBox2.Controls.Add(this.label2);
this.groupBox2.Controls.Add(this.btn_Open);
this.groupBox2.Location = new System.Drawing.Point(16, 195);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(410, 69);
this.groupBox2.TabIndex = 158;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "设备连接";
//
// cb_SerialPort
//
this.cb_SerialPort.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_SerialPort.FormattingEnabled = true;
this.cb_SerialPort.Location = new System.Drawing.Point(112, 48);
this.cb_SerialPort.Name = "cb_SerialPort";
this.cb_SerialPort.Size = new System.Drawing.Size(99, 20);
this.cb_SerialPort.TabIndex = 14;
//
// rb_Net
//
this.rb_Net.AutoSize = true;
this.rb_Net.Location = new System.Drawing.Point(14, 22);
this.rb_Net.Name = "rb_Net";
this.rb_Net.Size = new System.Drawing.Size(47, 16);
this.rb_Net.TabIndex = 13;
this.rb_Net.Text = "网络";
this.rb_Net.UseVisualStyleBackColor = true;
//
// rb_Serial
//
this.rb_Serial.AutoSize = true;
this.rb_Serial.Checked = true;
this.rb_Serial.Location = new System.Drawing.Point(14, 49);
this.rb_Serial.Name = "rb_Serial";
this.rb_Serial.Size = new System.Drawing.Size(47, 16);
this.rb_Serial.TabIndex = 12;
this.rb_Serial.TabStop = true;
this.rb_Serial.Text = "串口";
this.rb_Serial.UseVisualStyleBackColor = true;
//
// tb_IP
//
this.tb_IP.Enabled = false;
this.tb_IP.Location = new System.Drawing.Point(111, 20);
this.tb_IP.Name = "tb_IP";
this.tb_IP.Size = new System.Drawing.Size(100, 21);
this.tb_IP.TabIndex = 11;
this.tb_IP.Text = "192.168.10.101";
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(84, 24);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(17, 12);
this.label8.TabIndex = 10;
this.label8.Text = "IP";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(226, 24);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(29, 12);
this.label7.TabIndex = 8;
this.label7.Text = "端口";
//
// nud_NetPort
//
this.nud_NetPort.Enabled = false;
this.nud_NetPort.Location = new System.Drawing.Point(261, 22);
this.nud_NetPort.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.nud_NetPort.Minimum = new decimal(new int[] {
100,
0,
0,
0});
this.nud_NetPort.Name = "nud_NetPort";
this.nud_NetPort.Size = new System.Drawing.Size(47, 21);
this.nud_NetPort.TabIndex = 7;
this.nud_NetPort.Value = new decimal(new int[] {
9701,
0,
0,
0});
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(78, 52);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(23, 12);
this.label2.TabIndex = 1;
this.label2.Text = "COM";
//
// btn_Open
//
this.btn_Open.Location = new System.Drawing.Point(324, 18);
this.btn_Open.Name = "btn_Open";
this.btn_Open.Size = new System.Drawing.Size(75, 23);
this.btn_Open.TabIndex = 2;
this.btn_Open.Text = "打开";
this.btn_Open.UseVisualStyleBackColor = true;
this.btn_Open.Click += new System.EventHandler(this.btn_Open_Click);
//
// lb_status
//
this.lb_status.AutoSize = true;
this.lb_status.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lb_status.Location = new System.Drawing.Point(457, 221);
this.lb_status.Name = "lb_status";
this.lb_status.Size = new System.Drawing.Size(130, 24);
this.lb_status.TabIndex = 159;
this.lb_status.Text = "执行状态:";
//
// lb_lockStatus
//
this.lb_lockStatus.AutoSize = true;
this.lb_lockStatus.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lb_lockStatus.Location = new System.Drawing.Point(457, 254);
this.lb_lockStatus.Name = "lb_lockStatus";
this.lb_lockStatus.Size = new System.Drawing.Size(154, 24);
this.lb_lockStatus.TabIndex = 160;
this.lb_lockStatus.Text = "锁状态:未知";
//
// button_read
//
this.button_read.Location = new System.Drawing.Point(662, 256);
this.button_read.Name = "button_read";
this.button_read.Size = new System.Drawing.Size(75, 23);
this.button_read.TabIndex = 15;
this.button_read.Text = "读取锁状态";
this.button_read.UseVisualStyleBackColor = true;
this.button_read.Click += new System.EventHandler(this.button_read_Click);
//
// nud_Power
//
this.nud_Power.Location = new System.Drawing.Point(261, 14);
this.nud_Power.Maximum = new decimal(new int[] {
30,
0,
0,
0});
this.nud_Power.Minimum = new decimal(new int[] {
5,
0,
0,
0});
this.nud_Power.Name = "nud_Power";
this.nud_Power.Size = new System.Drawing.Size(47, 21);
this.nud_Power.TabIndex = 17;
this.nud_Power.Value = new decimal(new int[] {
20,
0,
0,
0});
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(226, 18);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(29, 12);
this.label6.TabIndex = 16;
this.label6.Text = "功率";
//
// btn_PowerSet
//
this.btn_PowerSet.Location = new System.Drawing.Point(323, 14);
this.btn_PowerSet.Name = "btn_PowerSet";
this.btn_PowerSet.Size = new System.Drawing.Size(74, 23);
this.btn_PowerSet.TabIndex = 15;
this.btn_PowerSet.Text = "设置";
this.btn_PowerSet.UseVisualStyleBackColor = true;
this.btn_PowerSet.Click += new System.EventHandler(this.btn_PowerSet_Click);
//
// btn_PALevelSet
//
this.btn_PALevelSet.Location = new System.Drawing.Point(138, 40);
this.btn_PALevelSet.Name = "btn_PALevelSet";
this.btn_PALevelSet.Size = new System.Drawing.Size(74, 23);
this.btn_PALevelSet.TabIndex = 104;
this.btn_PALevelSet.Text = "设置";
this.btn_PALevelSet.UseVisualStyleBackColor = true;
this.btn_PALevelSet.Click += new System.EventHandler(this.btn_PALevelSet_Click);
//
// cb_PALevel
//
this.cb_PALevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_PALevel.FormattingEnabled = true;
this.cb_PALevel.Items.AddRange(new object[] {
"微功率",
"小功率",
"中功率",
"大功率"});
this.cb_PALevel.Location = new System.Drawing.Point(71, 42);
this.cb_PALevel.Name = "cb_PALevel";
this.cb_PALevel.Size = new System.Drawing.Size(59, 20);
this.cb_PALevel.TabIndex = 103;
//
// label13
//
this.label13.AutoSize = true;
this.label13.Location = new System.Drawing.Point(12, 47);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(53, 12);
this.label13.TabIndex = 102;
this.label13.Text = "功放等级";
//
// tb_PortEnable
//
this.tb_PortEnable.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper;
this.tb_PortEnable.Font = new System.Drawing.Font("Arial", 9F);
this.tb_PortEnable.Location = new System.Drawing.Point(71, 13);
this.tb_PortEnable.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.tb_PortEnable.MaxLength = 64;
this.tb_PortEnable.Name = "tb_PortEnable";
this.tb_PortEnable.Size = new System.Drawing.Size(140, 21);
this.tb_PortEnable.TabIndex = 106;
this.tb_PortEnable.Text = "1000222222222222";
this.tb_PortEnable.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(12, 17);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(53, 12);
this.label12.TabIndex = 105;
this.label12.Text = "天线使能";
//
// groupBox1
//
this.groupBox1.Controls.Add(this.label12);
this.groupBox1.Controls.Add(this.tb_PortEnable);
this.groupBox1.Controls.Add(this.btn_PowerSet);
this.groupBox1.Controls.Add(this.label6);
this.groupBox1.Controls.Add(this.nud_Power);
this.groupBox1.Controls.Add(this.btn_PALevelSet);
this.groupBox1.Controls.Add(this.label13);
this.groupBox1.Controls.Add(this.cb_PALevel);
this.groupBox1.Location = new System.Drawing.Point(16, 268);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(410, 69);
this.groupBox1.TabIndex = 161;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "天线设置";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.button_read);
this.Controls.Add(this.lb_lockStatus);
this.Controls.Add(this.lb_status);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.button_rev);
this.Controls.Add(this.button_open);
this.Controls.Add(this.button_close);
this.Controls.Add(this.button_cmd_recover);
this.Controls.Add(this.button_cmd_open);
this.Controls.Add(this.button_cmd_close);
this.Controls.Add(this.button_lock_cmd);
this.Controls.Add(this.label1);
this.Controls.Add(this.button_3des);
this.Controls.Add(this.textBox_3des);
this.Controls.Add(this.label4);
this.Controls.Add(this.textBox_cmd);
this.Controls.Add(this.label3);
this.Controls.Add(this.textBox_key);
this.Controls.Add(this.label35);
this.Controls.Add(this.textBox_UII);
this.KeyPreview = true;
this.Name = "Form1";
this.Text = "Form1";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form1_FormClosed);
this.Load += new System.EventHandler(this.Form1_Load);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nud_NetPort)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.nud_Power)).EndInit();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label35;
private System.Windows.Forms.TextBox textBox_UII;
private System.Windows.Forms.TextBox textBox_key;
private System.Windows.Forms.TextBox textBox_cmd;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox textBox_3des;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button button_3des;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button button_lock_cmd;
private System.Windows.Forms.Button button_cmd_close;
private System.Windows.Forms.Button button_cmd_open;
private System.Windows.Forms.Button button_cmd_recover;
private System.Windows.Forms.Button button_close;
private System.Windows.Forms.Button button_open;
private System.Windows.Forms.Button button_rev;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.ComboBox cb_SerialPort;
private System.Windows.Forms.RadioButton rb_Net;
private System.Windows.Forms.RadioButton rb_Serial;
private System.Windows.Forms.TextBox tb_IP;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.NumericUpDown nud_NetPort;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button btn_Open;
private System.Windows.Forms.Label lb_status;
private System.Windows.Forms.Label lb_lockStatus;
private System.Windows.Forms.Button button_read;
private System.Windows.Forms.Button btn_PALevelSet;
private System.Windows.Forms.ComboBox cb_PALevel;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.NumericUpDown nud_Power;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Button btn_PowerSet;
private System.Windows.Forms.TextBox tb_PortEnable;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.GroupBox groupBox1;
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using GuasuoDLL;
using JmpRfidLp;
namespace DLLMain
{
public partial class Form1 : Form
{
GuasuoDLL.RFIDClass RfidDll = new GuasuoDLL.RFIDClass();
private Reader reader = null;
private DeviceStatus deviceStatus = DeviceStatus.未连接;
private List<string> epcList = new List<string>();
public Form1()
{
InitializeComponent();
}
private void button_3des_Click(object sender, EventArgs e)
{
string key_data = textBox_key.Text;
string cmd_data = textBox_cmd.Text;
string Uii_str = textBox_UII.Text;
string opere_time = DateTime.Now.ToString("yyyyMMddHHmmss");
try
{
string rfid_jiami = RfidDll.rfid_lock_jiami(Uii_str, key_data, cmd_data);
textBox_3des.Text = rfid_jiami;
}
catch (Exception exception)
{
MessageBox.Show($"加密异常:Uii_str={Uii_str};key_data={key_data};cmd_data={cmd_data};");
}
}
private void button_lock_cmd_Click(object sender, EventArgs e)
{
string Uii_str = textBox_UII.Text;
string rfid_cmd = RfidDll.rfid_lock_cmd(Uii_str);
textBox_cmd.Text = rfid_cmd;
}
private void button_cmd_close_Click(object sender, EventArgs e)
{
string rfid_cmd = RfidDll.rfid_lock_cmd_close();
textBox_cmd.Text = rfid_cmd;
}
private void button_cmd_open_Click(object sender, EventArgs e)
{
string rfid_cmd = RfidDll.rfid_lock_cmd_open();
textBox_cmd.Text = rfid_cmd;
}
private void button_cmd_recover_Click(object sender, EventArgs e)
{
string rfid_cmd = RfidDll.rfid_lock_cmd_recover();
textBox_cmd.Text = rfid_cmd;
}
private void Form1_Load(object sender, EventArgs e)
{
cb_SerialPort.Items.AddRange(SerialPort.GetPortNames());
if (cb_SerialPort.Items.Count > 0)
{
cb_SerialPort.SelectedIndex = cb_SerialPort.Items.Count - 1;
}
textBox_UII.Text = "";
textBox_key.Text = "";
textBox_cmd.Text = "";
button_close.Enabled = false;
button_open.Enabled = false;
button_rev.Enabled = false;
button_read.Enabled = false;
groupBox1.Enabled = false;
cb_PALevel.SelectedIndex = 3;
}
private void btn_Open_Click(object sender, EventArgs e)
{
try
{
if (rb_Serial.Checked)
{
if (cb_SerialPort.Text.Length > 0)
{
reader = new Reader(cb_SerialPort.Text);
}
else
{
MessageBox.Show("读选择串口!");
}
}
else
{
reader = new Reader(tb_IP.Text, (int)nud_NetPort.Value);
}
if (reader.Open())
{
reader.OnInventory += new Reader.InvDeleg(OnRadioInventory);
var fw = reader.GetFWVerion();
lb_status.Text = "已连接";
lb_status.ForeColor = Color.Blue;
this.Text += string.Format(" 固件:{0}", fw);
deviceStatus = DeviceStatus.已连接;
groupBox2.Enabled = false;
groupBox1.Enabled = true;
button_close.Enabled = true;
button_open.Enabled = true;
button_rev.Enabled = true;
button_read.Enabled = true;
reader.InventoryStop();
reader.SetPALevel(1);
reader.SetTxPower(0, true, 24);
MessageBox.Show("打开成功");
return;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
MessageBox.Show("打开失败");
}
private void OnRadioInventory(TagInfo args)
{
if (!epcList.Contains(args.EPC))
{
epcList.Add(args.EPC);
// todo 推送读取到的epc OnSendMsg(used_client, InitializeCmdType.InventoryInfo, args.EPC);
}
}
/// <summary>
/// 读标签
/// </summary>
private bool ReadEpc()
{
if (deviceStatus == DeviceStatus.已连接)
{
{
//先停止盘点,否则会卡死。
reader.InventoryStop();
//单次盘点,确认无其他标签
var tmpList = new List<TagInfo>();
for (int i = 0; i < 4; i++)
{
reader.InventorySingle(50).ForEach(s =>
{
if (!tmpList.Any(t => t.EPC == s.EPC))
{
tmpList.Add(s);
}
});
}
if (tmpList.Count > 1)
{
//绑定失败,存在其他标签
lb_status.Text = "操作失败,存在其他标签";
}
else if (tmpList.Count == 0)
{
//绑定失败,标签未放置
lb_status.Text = "操作失败,未读取到标签";
}
else
{
var uiiData = new OperData
{
EPC = "",
DATA = "",
Offset = 1,
Length = 8,
Bank = BankType.EPC,
Access = "00000000"
};
reader.ReadTag(ref uiiData);
textBox_UII.Text = uiiData.DATA;
var tidData = new OperData
{
EPC = "",
DATA = "",
Offset = 0,
Length = 6,
Bank = BankType.TID,
Access = "00000000"
};
reader.ReadTag(ref tidData);
textBox_key.Text = tidData.DATA;
if (string.IsNullOrEmpty(textBox_UII.Text) || string.IsNullOrEmpty(textBox_key.Text))
{
lb_status.Text = "操作失败,标签读取失败";
return false;
}
return true;
}
}
}
else
{
deviceStatus = DeviceStatus.未连接;
//设备未连接
}
return false;
}
/// <summary>
/// 写标签
/// </summary>
private bool InitializeEpc(string data)
{
if (deviceStatus == DeviceStatus.已连接)
{
{
//将EPC长度改成位字符串
//48/6400
//24/3400
//64/8000
//先停止盘点,否则会卡死。
reader.InventoryStop();
OperData _oper = new OperData
{
EPC = "",
DATA = data,
Offset = 0,
Length = 20,
Bank = BankType.USER,
Access = "00000000"
};
var res = reader.WriteTag(_oper);
if (res == OperResult.OK)
{
//成功
lb_status.Text = "指令发送成功";
return true;
}
else
{
//绑定失败,写入异常
lb_status.Text = "指令发送失败,写入异常";
}
}
}
else
{
deviceStatus = DeviceStatus.未连接;
//设备未连接
}
return false;
}
private void button_close_Click(object sender, EventArgs e)
{
if (ReadEpc())
{
//关锁指令生成
button_cmd_close_Click(null, null);
//加密指令生成
button_3des_Click(null, null);
Application.DoEvents();
//发送指令
InitializeEpc(textBox_3des.Text);
lb_lockStatus.Text = "锁状态:等待更新";
Delay(2000);
//重新读取状态
button_read_Click(null, null);
}
}
private void button_open_Click(object sender, EventArgs e)
{
if (ReadEpc())
{
//开锁指令生成
button_cmd_open_Click(null, null);
//加密指令生成
button_3des_Click(null, null);
Application.DoEvents();
//发送指令
InitializeEpc(textBox_3des.Text);
lb_lockStatus.Text = "锁状态:等待更新";
Delay(2000);
//重新读取状态
button_read_Click(null, null);
}
}
private void button_rev_Click(object sender, EventArgs e)
{
if (ReadEpc())
{
//恢复指令生成
button_cmd_recover_Click(null, null);
//加密指令生成
button_3des_Click(null, null);
Application.DoEvents();
//发送指令
InitializeEpc(textBox_3des.Text);
lb_lockStatus.Text = "锁状态:等待更新";
Delay(2000);
//重新读取状态
button_read_Click(null, null);
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (reader != null && reader.IsOpen())
{
reader.InventoryStop();
reader.Close();
}
}
private void button_read_Click(object sender, EventArgs e)
{
ReadEpc();
if (!string.IsNullOrEmpty(textBox_UII.Text) && textBox_UII.Text.Length == 32)
{
var status = textBox_UII.Text.Substring(26, 2);
switch (status)
{
case "00":
{
lb_lockStatus.Text = "锁状态:开锁";
break;
}
case "01":
{
lb_lockStatus.Text = "锁状态:闭锁";
break;
}
case "06":
{
lb_lockStatus.Text = "锁状态:异常";
break;
}
default:
{
lb_lockStatus.Text = "锁状态:错误";
break;
}
}
}
else
{
lb_lockStatus.Text = "锁状态:未知";
}
}
public static void Delay(int milliSecond)
{
int start = Environment.TickCount;
while (Math.Abs(Environment.TickCount - start) < milliSecond)
{
Application.DoEvents();
}
}
private void btn_PowerSet_Click(object sender, EventArgs e)
{
if (reader != null && reader.IsOpen())
{
string errInfo = "";
if (!(tb_PortEnable.Text.Length == 1 || tb_PortEnable.Text.Length == 4 || tb_PortEnable.Text.Length == 16))
{
MessageBox.Show("天线数量不正确!");
return;
}
for (int i = 0; i < tb_PortEnable.Text.Length; i++)
{
if (tb_PortEnable.Text[i] == '2')
continue;
bool enable = (tb_PortEnable.Text[i] == '1');
if (reader.SetTxPower((byte)i, enable, (double)nud_Power.Value) != OperResult.OK)
{
errInfo += "[" + i.ToString() + "]";
}
}
if (errInfo.Length > 0)
{
MessageBox.Show("天线" + errInfo + "功率设置失败!");
}
else
{
MessageBox.Show("功率设置成功!");
}
}
else
{
MessageBox.Show("读写器未打开!");
}
}
private void btn_PALevelSet_Click(object sender, EventArgs e)
{
if (reader != null && reader.IsOpen())
{
if (reader.SetPALevel((byte)cb_PALevel.SelectedIndex) == OperResult.OK)
{
MessageBox.Show("功放等级操作成功!");
}
else
{
MessageBox.Show("功放等级操作失败!");
}
}
else
{
MessageBox.Show("读写器未打开!");
}
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (button_close.Enabled == false)
{
//未开启,过滤
return;
}
switch (e.KeyCode)
{
case Keys.F1:
button_close_Click(this, EventArgs.Empty);
break;
case Keys.F2:
button_open_Click(this, EventArgs.Empty);
break;
case Keys.F3:
button_rev_Click(this, EventArgs.Empty);
break;
}
}
}
public enum DeviceStatus
{
未连接,
已连接
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{3422FB90-FEEA-42D9-B2DC-B53F2AA4C68C}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>DLLMain</RootNamespace>
<AssemblyName>DLLMain</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject />
</PropertyGroup>
<ItemGroup>
<Reference Include="GuasuoDLL">
<HintPath>.\GuasuoDLL.dll</HintPath>
</Reference>
<Reference Include="JmpRfidLp">
<HintPath>.\JmpRfidLp.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DLLMain
{
internal class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
Application.Run(new Form1());
}
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("DLLMain")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DLLMain")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("3422fb90-feea-42d9-b2dc-b53f2aa4c68c")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
File added
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论