From 27963d4c2b470bfe37243702a99ff5da7b8c5331 Mon Sep 17 00:00:00 2001 From: xcd <834800634@qq.com> Date: 星期六, 27 六月 2020 15:04:00 +0800 Subject: [PATCH] merge --- src/Bro.Device.GTSCard/Bro.Device.GTSCard.csproj | 67 src/Bro.M071.Process.DBManager/Properties/AssemblyInfo.cs | 36 src/Bro.Device.GTSCard/GTSCardDriver.cs | 237 ++ src/Bro.M071.Process.Model/BaseModel.cs | 201 + src/Bro.M071.Process.Model/Properties/AssemblyInfo.cs | 36 src/Bro.Process.DBManager/ModelManager.cs | 113 + src/Bro.Process.DBManager/App.config | 36 src/Bro.Process.DBManager/Bro.Process.DataBase.csproj | 104 + src/Bro.M071.Process.Model/Bro.M071.Process.Model.csproj | 95 src/Bro.M071.Process.Model/packages.config | 10 src/Bro.Process.DBManager/Properties/AssemblyInfo.cs | 36 src/Bro.Device.GTSCard/GtsCardManager.cs | 440 ++++ src/Bro.M071.Process.DBManager/ProductionDetectionRecordsDetailManager.cs | 248 ++ src/Bro.Process.DBManager/BaseModel.cs | 200 + src/Bro.Device.GTSCard/Properties/AssemblyInfo.cs | 36 src/Bro.M071.Process.DBManager/Bro.M071.Process.DBManager.csproj | 103 + src/Bro.M071.Process.Model/Model/ManualDetectionRecords.cs | 58 src/Bro.M071.Process.Model/Migrations/Configuration.cs | 37 src/Bro.M071.Process.Model/Model/EventTimeRecords.cs | 52 src/Bro.Device.GTSCard/GtsParameter.cs | 194 + src/Bro.M071.Process.Model/Model/OperationRecords.cs | 60 src/Bro.Process.DBManager/DataBaseContext.cs | 67 src/Bro.Process.DBManager/packages.config | 10 src/Bro.M071.Process.DBManager/App.config | 36 M071.sln | 56 src/Bro.Device.GTSCard/GTSCardConfig.cs | 247 ++ src/Bro.Device.GTSCard/GtsIO.cs | 63 src/Bro.Process.DBManager/SQLiteHelper.cs | 614 ++++++ src/Bro.M071.Process.DBManager/ProductionDetectionImageRecordsManager.cs | 303 +++ src/Bro.Device.GTSCard/GtsPos.cs | 78 src/Bro.M071.Process.Model/App.config | 43 src/Bro.Device.GTSCard/GtsMotionCard.cs | 483 ++++ src/Bro.M071.Process.DBManager/packages.config | 10 src/Bro.M071.Process.Model/DBModel.cs | 67 src/Bro.M071.Process.DBManager/ProductionDetectionRecordsManager.cs | 305 +++ src/Bro.Device.GTSCard/GTSCardAPI.cs | 1264 ++++++++++++ 36 files changed, 6,045 insertions(+), 0 deletions(-) diff --git a/M071.sln b/M071.sln index b1e393f..344dc29 100644 --- a/M071.sln +++ b/M071.sln @@ -19,6 +19,14 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bro.UI.Model.Winform", "src\Bro.UI.Model.Winform\Bro.UI.Model.Winform.csproj", "{741F6491-57C7-479A-B391-09BBA9FBA9DC}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bro.Device.GTSCard", "src\Bro.Device.GTSCard\Bro.Device.GTSCard.csproj", "{B536003E-70BA-4701-B8FD-BAFA303AB4E2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bro.M071.Process.DBManager", "src\Bro.M071.Process.DBManager\Bro.M071.Process.DBManager.csproj", "{230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bro.M071.Process.Model", "src\Bro.M071.Process.Model\Bro.M071.Process.Model.csproj", "{AD645C48-5811-4B1E-B81F-D35D5E6B577F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bro.Process.DataBase", "src\Bro.Process.DBManager\Bro.Process.DataBase.csproj", "{65302D6E-9918-4E4C-92B4-75C8830C6BA7}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bro.M071.Process", "src\Bro.M071.Process\Bro.M071.Process.csproj", "{B50C1309-495C-4ADF-8A3D-6F6A06CCC4CC}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bro.Device.Gocator", "src\Bro.Device.Gocator\Bro.Device.Gocator.csproj", "{112009F0-7902-454B-9A6C-A3AFC8FA8FFF}" @@ -129,6 +137,54 @@ {741F6491-57C7-479A-B391-09BBA9FBA9DC}.Release|x64.Build.0 = Release|Any CPU {741F6491-57C7-479A-B391-09BBA9FBA9DC}.Release|x86.ActiveCfg = Release|Any CPU {741F6491-57C7-479A-B391-09BBA9FBA9DC}.Release|x86.Build.0 = Release|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Debug|x64.ActiveCfg = Debug|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Debug|x64.Build.0 = Debug|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Debug|x86.Build.0 = Debug|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Release|Any CPU.Build.0 = Release|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Release|x64.ActiveCfg = Release|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Release|x64.Build.0 = Release|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Release|x86.ActiveCfg = Release|Any CPU + {B536003E-70BA-4701-B8FD-BAFA303AB4E2}.Release|x86.Build.0 = Release|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Debug|Any CPU.Build.0 = Debug|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Debug|x64.ActiveCfg = Debug|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Debug|x64.Build.0 = Debug|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Debug|x86.ActiveCfg = Debug|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Debug|x86.Build.0 = Debug|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Release|Any CPU.ActiveCfg = Release|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Release|Any CPU.Build.0 = Release|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Release|x64.ActiveCfg = Release|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Release|x64.Build.0 = Release|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Release|x86.ActiveCfg = Release|Any CPU + {230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}.Release|x86.Build.0 = Release|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Debug|x64.ActiveCfg = Debug|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Debug|x64.Build.0 = Debug|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Debug|x86.ActiveCfg = Debug|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Debug|x86.Build.0 = Debug|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Release|Any CPU.Build.0 = Release|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Release|x64.ActiveCfg = Release|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Release|x64.Build.0 = Release|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Release|x86.ActiveCfg = Release|Any CPU + {AD645C48-5811-4B1E-B81F-D35D5E6B577F}.Release|x86.Build.0 = Release|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Debug|x64.ActiveCfg = Debug|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Debug|x64.Build.0 = Debug|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Debug|x86.ActiveCfg = Debug|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Debug|x86.Build.0 = Debug|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Release|Any CPU.Build.0 = Release|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Release|x64.ActiveCfg = Release|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Release|x64.Build.0 = Release|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Release|x86.ActiveCfg = Release|Any CPU + {65302D6E-9918-4E4C-92B4-75C8830C6BA7}.Release|x86.Build.0 = Release|Any CPU {B50C1309-495C-4ADF-8A3D-6F6A06CCC4CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B50C1309-495C-4ADF-8A3D-6F6A06CCC4CC}.Debug|Any CPU.Build.0 = Debug|Any CPU {B50C1309-495C-4ADF-8A3D-6F6A06CCC4CC}.Debug|x64.ActiveCfg = Debug|Any CPU diff --git a/src/Bro.Device.GTSCard/Bro.Device.GTSCard.csproj b/src/Bro.Device.GTSCard/Bro.Device.GTSCard.csproj new file mode 100644 index 0000000..d26bb8b --- /dev/null +++ b/src/Bro.Device.GTSCard/Bro.Device.GTSCard.csproj @@ -0,0 +1,67 @@ +锘�<?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>{B536003E-70BA-4701-B8FD-BAFA303AB4E2}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Bro.Device.GTSCard</RootNamespace> + <AssemblyName>Bro.Device.GTSCard</AssemblyName> + <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <Deterministic>true</Deterministic> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Configuration" /> + <Reference Include="System.Core" /> + <Reference Include="System.Drawing" /> + <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="GTSCardDriver.cs" /> + <Compile Include="GTSCardConfig.cs" /> + <Compile Include="GtsCardManager.cs" /> + <Compile Include="GTSCardAPI.cs" /> + <Compile Include="GtsIO.cs" /> + <Compile Include="GtsMotionCard.cs" /> + <Compile Include="GtsParameter.cs" /> + <Compile Include="GtsPos.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\Bro.Common.Device\Bro.Common.Device.csproj"> + <Project>{987308DD-8BAA-463A-94E2-77D62E01A5BF}</Project> + <Name>Bro.Common.Device</Name> + </ProjectReference> + <ProjectReference Include="..\Bro.Common.Model\Bro.Common.Model.csproj"> + <Project>{1A3CBFE7-3F78-42C3-95C5-10360450DBEA}</Project> + <Name>Bro.Common.Model</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> +</Project> \ No newline at end of file diff --git a/src/Bro.Device.GTSCard/GTSCardAPI.cs b/src/Bro.Device.GTSCard/GTSCardAPI.cs new file mode 100644 index 0000000..0ddd544 --- /dev/null +++ b/src/Bro.Device.GTSCard/GTSCardAPI.cs @@ -0,0 +1,1264 @@ +锘縰sing System.Runtime.InteropServices; + +namespace Bro.Device.GTSCard +{ + public class GTSCardAPI + { + public const short DLL_VERSION_0 = 2; + public const short DLL_VERSION_1 = 1; + public const short DLL_VERSION_2 = 0; + + public const short DLL_VERSION_3 = 1; + public const short DLL_VERSION_4 = 5; + public const short DLL_VERSION_5 = 0; + public const short DLL_VERSION_6 = 6; + public const short DLL_VERSION_7 = 0; + public const short DLL_VERSION_8 = 7; + + public const short MC_NONE = -1; + + public const short MC_LIMIT_POSITIVE = 0; + public const short MC_LIMIT_NEGATIVE = 1; + public const short MC_ALARM = 2; + public const short MC_HOME = 3; + public const short MC_GPI = 4; + public const short MC_ARRIVE = 5; + public const short MC_MPG = 6; + + public const short MC_ENABLE = 10; + public const short MC_CLEAR = 11; + public const short MC_GPO = 12; + + public const short MC_DAC = 20; + public const short MC_STEP = 21; + public const short MC_PULSE = 22; + public const short MC_ENCODER = 23; + public const short MC_ADC = 24; + + public const short MC_AXIS = 30; + public const short MC_PROFILE = 31; + public const short MC_CONTROL = 32; + + public const short CAPTURE_HOME = 1; + public const short CAPTURE_INDEX = 2; + public const short CAPTURE_PROBE = 3; + public const short CAPTURE_HSIO0 = 6; + public const short CAPTURE_HSIO1 = 7; + public const short CAPTURE_HOME_GPI = 8; + + public const short PT_MODE_STATIC = 0; + public const short PT_MODE_DYNAMIC = 1; + + public const short PT_SEGMENT_NORMAL = 0; + public const short PT_SEGMENT_EVEN = 1; + public const short PT_SEGMENT_STOP = 2; + + public const short GEAR_MASTER_ENCODER = 1; + public const short GEAR_MASTER_PROFILE = 2; + public const short GEAR_MASTER_AXIS = 3; + + public const short FOLLOW_MASTER_ENCODER = 1; + public const short FOLLOW_MASTER_PROFILE = 2; + public const short FOLLOW_MASTER_AXIS = 3; + + public const short FOLLOW_EVENT_START = 1; + public const short FOLLOW_EVENT_PASS = 2; + + public const short GEAR_EVENT_START = 1; + public const short GEAR_EVENT_PASS = 2; + public const short GEAR_EVENT_AREA = 5; + + public const short FOLLOW_SEGMENT_NORMAL = 0; + public const short FOLLOW_SEGMENT_EVEN = 1; + public const short FOLLOW_SEGMENT_STOP = 2; + public const short FOLLOW_SEGMENT_CONTINUE = 3; + + public const short INTERPOLATION_AXIS_MAX = 4; + public const short CRD_FIFO_MAX = 4096; + public const short FIFO_MAX = 2; + public const short CRD_MAX = 2; + public const short CRD_OPERATION_DATA_EXT_MAX = 2; + + public const short CRD_OPERATION_TYPE_NONE = 0; + public const short CRD_OPERATION_TYPE_BUF_IO_DELAY = 1; + public const short CRD_OPERATION_TYPE_LASER_ON = 2; + public const short CRD_OPERATION_TYPE_LASER_OFF = 3; + public const short CRD_OPERATION_TYPE_BUF_DA = 4; + public const short CRD_OPERATION_TYPE_LASER_CMD = 5; + public const short CRD_OPERATION_TYPE_LASER_FOLLOW = 6; + public const short CRD_OPERATION_TYPE_LMTS_ON = 7; + public const short CRD_OPERATION_TYPE_LMTS_OFF = 8; + public const short CRD_OPERATION_TYPE_SET_STOP_IO = 9; + public const short CRD_OPERATION_TYPE_BUF_MOVE = 10; + public const short CRD_OPERATION_TYPE_BUF_GEAR = 11; + public const short CRD_OPERATION_TYPE_SET_SEG_NUM = 12; + public const short CRD_OPERATION_TYPE_STOP_MOTION = 13; + public const short CRD_OPERATION_TYPE_SET_VAR_VALUE = 14; + public const short CRD_OPERATION_TYPE_JUMP_NEXT_SEG = 15; + public const short CRD_OPERATION_TYPE_SYNCH_PRF_POS = 16; + public const short CRD_OPERATION_TYPE_VIRTUAL_TO_ACTUAL = 17; + public const short CRD_OPERATION_TYPE_SET_USER_VAR = 18; + public const short CRD_OPERATION_TYPE_SET_DO_BIT_PULSE = 19; + public const short CRD_OPERATION_TYPE_BUF_COMPAREPULSE = 20; + public const short CRD_OPERATION_TYPE_LASER_ON_EX = 21; + public const short CRD_OPERATION_TYPE_LASER_OFF_EX = 22; + public const short CRD_OPERATION_TYPE_LASER_CMD_EX = 23; + public const short CRD_OPERATION_TYPE_LASER_FOLLOW_RATIO_EX = 24; + public const short CRD_OPERATION_TYPE_LASER_FOLLOW_MODE = 25; + public const short CRD_OPERATION_TYPE_LASER_FOLLOW_OFF = 26; + public const short CRD_OPERATION_TYPE_LASER_FOLLOW_OFF_EX = 27; + public const short CRD_OPERATION_TYPE_LASER_FOLLOW_SPLINE = 28; + public const short CRD_OPERATION_TYPE_MOTION_DATA = 29; + + public const short INTERPOLATION_MOTION_TYPE_LINE = 0; + public const short INTERPOLATION_MOTION_TYPE_CIRCLE = 1; + public const short INTERPOLATION_MOTION_TYPE_HELIX = 2; + public const short INTERPOLATION_MOTION_TYPE_CIRCLE_3D = 3; + + public const short INTERPOLATION_CIRCLE_PLAT_XY = 0; + public const short INTERPOLATION_CIRCLE_PLAT_YZ = 1; + public const short INTERPOLATION_CIRCLE_PLAT_ZX = 2; + + public const short INTERPOLATION_HELIX_CIRCLE_XY_LINE_Z = 0; + public const short INTERPOLATION_HELIX_CIRCLE_YZ_LINE_X = 1; + public const short INTERPOLATION_HELIX_CIRCLE_ZX_LINE_Y = 2; + + public const short INTERPOLATION_CIRCLE_DIR_CW = 0; + public const short INTERPOLATION_CIRCLE_DIR_CCW = 1; + + public const short COMPARE_PORT_HSIO = 0; + public const short COMPARE_PORT_GPO = 1; + + public const short COMPARE2D_MODE_2D = 1; + public const short COMPARE2D_MODE_1D = 0; + + public const short INTERFACEBOARD20 = 2; + public const short INTERFACEBOARD30 = 3; + + public const short AXIS_LASER = 7; + public const short AXIS_LASER_EX = 8; + + public const short LASER_CTRL_MODE_PWM1 = 0; + public const short LASER_CTRL_FREQUENCY = 1; + public const short LASER_CTRL_VOLTAGE = 2; + public const short LASER_CTRL_MODE_PWM2 = 3; + + public struct TTrapPrm + { + public double acc; + public double dec; + public double velStart; + public short smoothTime; + } + + public struct TJogPrm + { + public double acc; + public double dec; + public double smooth; + } + + public struct TPid + { + public double kp; + public double ki; + public double kd; + public double kvff; + public double kaff; + + public int integralLimit; + public int derivativeLimit; + public short limit; + } + + public struct TThreadSts + { + public short run; + public short error; + public double result; + public short line; + } + + public struct TVarInfo + { + public short id; + public short dataType; + public double dumb0; + public double dumb1; + public double dumb2; + public double dumb3; + } + public struct TCompileInfo + { + public string pFileName; + public short pLineNo1; + public short pLineNo2; + public string pMessage; + } + public struct TCrdPrm + { + public short dimension; + public short profile1; + public short profile2; + public short profile3; + public short profile4; + public short profile5; + public short profile6; + public short profile7; + public short profile8; + + public double synVelMax; + public double synAccMax; + public short evenTime; + public short setOriginFlag; + public int originPos1; + public int originPos2; + public int originPos3; + public int originPos4; + public int originPos5; + public int originPos6; + public int originPos7; + public int originPos8; + } + + public struct TCrdBufOperation + { + public short flag; + public ushort delay; + public short doType; + public ushort doMask; + public ushort doValue; + public ushort dataExt1; + public ushort dataExt2; + } + + public struct TCrdData + { + public short motionType; + public short circlePlat; + public int posX; + public int posY; + public int posZ; + public int posA; + public double radius; + public short circleDir; + public double lCenterX; + public double lCenterY; + public double lCenterZ; + public double vel; + public double acc; + public short velEndZero; + public TCrdBufOperation operation; + + public double cosX; + public double cosY; + public double cosZ; + public double cosA; + public double velEnd; + public double velEndAdjust; + public double r; + } + + public struct TTrigger + { + public short encoder; + public short probeType; + public short probeIndex; + public short offset; + public short windowOnly; + public int firstPosition; + public int lastPosition; + } + + public struct TTriggerStatus + { + public short execute; + public short done; + public int position; + } + + public struct T2DCompareData + { + public int px; + public int py; + } + + public struct T2DComparePrm + { + public short encx; + public short ency; + public short source; + public short outputType; + public short startLevel; + public short time; + public short maxerr; + public short threshold; + } + [DllImport("gts.dll")] + public static extern short GT_GetDllVersion(short cardNum, out string pDllVersion); + [DllImport("gts.dll")] + public static extern short GT_SetCardNo(short cardNum, short index); + [DllImport("gts.dll")] + public static extern short GT_GetCardNo(short cardNum, out short index); + + [DllImport("gts.dll")] + public static extern short GT_GetVersion(short cardNum, out string pVersion); + [DllImport("gts.dll")] + public static extern short GT_GetInterfaceBoardSts(short cardNum, out short pStatus); + [DllImport("gts.dll")] + public static extern short GT_SetInterfaceBoardSts(short cardNum, short type); + + [DllImport("gts.dll")] + public static extern short GT_Open(short cardNum, short channel, short param); + [DllImport("gts.dll")] + public static extern short GT_Close(short cardNum); + + [DllImport("gts.dll")] + public static extern short GT_LoadConfig(short cardNum, string pFile); + + [DllImport("gts.dll")] + public static extern short GT_AlarmOff(short cardNum, short axis); + [DllImport("gts.dll")] + public static extern short GT_AlarmOn(short cardNum, short axis); + [DllImport("gts.dll")] + public static extern short GT_LmtsOn(short cardNum, short axis, short limitType); + [DllImport("gts.dll")] + public static extern short GT_LmtsOff(short cardNum, short axis, short limitType); + [DllImport("gts.dll")] + public static extern short GT_ProfileScale(short cardNum, short axis, short alpha, short beta); + [DllImport("gts.dll")] + public static extern short GT_EncScale(short cardNum, short axis, short alpha, short beta); + [DllImport("gts.dll")] + public static extern short GT_StepDir(short cardNum, short step); + [DllImport("gts.dll")] + public static extern short GT_StepPulse(short cardNum, short step); + [DllImport("gts.dll")] + public static extern short GT_SetMtrBias(short cardNum, short dac, short bias); + [DllImport("gts.dll")] + public static extern short GT_GetMtrBias(short cardNum, short dac, out short pBias); + [DllImport("gts.dll")] + public static extern short GT_SetMtrLmt(short cardNum, short dac, short limit); + [DllImport("gts.dll")] + public static extern short GT_GetMtrLmt(short cardNum, short dac, out short pLimit); + [DllImport("gts.dll")] + public static extern short GT_EncSns(short cardNum, ushort sense); + [DllImport("gts.dll")] + public static extern short GT_EncOn(short cardNum, short encoder); + [DllImport("gts.dll")] + public static extern short GT_EncOff(short cardNum, short encoder); + [DllImport("gts.dll")] + public static extern short GT_SetPosErr(short cardNum, short control, int error); + [DllImport("gts.dll")] + public static extern short GT_GetPosErr(short cardNum, short control, out int pError); + [DllImport("gts.dll")] + public static extern short GT_SetStopDec(short cardNum, short profile, double decSmoothStop, double decAbruptStop); + [DllImport("gts.dll")] + public static extern short GT_GetStopDec(short cardNum, short profile, out double pDecSmoothStop, out double pDecAbruptStop); + [DllImport("gts.dll")] + public static extern short GT_LmtSns(short cardNum, ushort sense); + [DllImport("gts.dll")] + public static extern short GT_CtrlMode(short cardNum, short axis, short mode); + [DllImport("gts.dll")] + public static extern short GT_SetStopIo(short cardNum, short axis, short stopType, short inputType, short inputIndex); + [DllImport("gts.dll")] + public static extern short GT_GpiSns(short cardNum, ushort sense); + [DllImport("gts.dll")] + public static extern short GT_SetAdcFilter(short cardNum, short adc, short filterTime); + [DllImport("gts.dll")] + public static extern short GT_SetAxisPrfVelFilter(short cardNum, short axis, short filterNumExp); + [DllImport("gts.dll")] + public static extern short GT_GetAxisPrfVelFilter(short cardNum, short axis, out short pFilterNumExp); + [DllImport("gts.dll")] + public static extern short GT_SetAxisEncVelFilter(short cardNum, short axis, short filterNumExp); + [DllImport("gts.dll")] + public static extern short GT_GetAxisEncVelFilter(short cardNum, short axis, out short pFilterNumExp); + [DllImport("gts.dll")] + public static extern short GT_SetAxisInputShaping(short cardNum, short axis, short enable, short count, double k); + + [DllImport("gts.dll")] + public static extern short GT_SetDo(short cardNum, short doType, int value); + [DllImport("gts.dll")] + public static extern short GT_SetDoBit(short cardNum, short doType, short doIndex, short value); + [DllImport("gts.dll")] + public static extern short GT_GetDo(short cardNum, short doType, out int pValue); + [DllImport("gts.dll")] + public static extern short GT_SetDoBitReverse(short cardNum, short doType, short doIndex, short value, short reverseTime); + [DllImport("gts.dll")] + public static extern short GT_SetDoMask(short cardNum, short doType, ushort doMask, int value); + [DllImport("gts.dll")] + public static extern short GT_EnableDoBitPulse(short cardNum, short doType, short doIndex, ushort highLevelTime, ushort lowLevelTime, int pulseNum, short firstLevel); + [DllImport("gts.dll")] + public static extern short GT_DisableDoBitPulse(short cardNum, short doType, short doIndex); + + [DllImport("gts.dll")] + public static extern short GT_GetDi(short cardNum, short diType, out int pValue); + [DllImport("gts.dll")] + public static extern short GT_GetDiReverseCount(short cardNum, short diType, short diIndex, out uint reverseCount, short count); + [DllImport("gts.dll")] + public static extern short GT_SetDiReverseCount(short cardNum, short diType, short diIndex, ref uint reverseCount, short count); + [DllImport("gts.dll")] + public static extern short GT_GetDiRaw(short cardNum, short diType, out int pValue); + + [DllImport("gts.dll")] + public static extern short GT_SetDac(short cardNum, short dac, ref short value, short count); + [DllImport("gts.dll")] + public static extern short GT_GetDac(short cardNum, short dac, out short value, short count, out uint pClock); + + [DllImport("gts.dll")] + public static extern short GT_GetAdc(short cardNum, short adc, out double pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetAdcValue(short cardNum, short adc, out short pValue, short count, out uint pClock); + + [DllImport("gts.dll")] + public static extern short GT_SetEncPos(short cardNum, short encoder, int encPos); + [DllImport("gts.dll")] + public static extern short GT_GetEncPos(short cardNum, short encoder, out double pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetEncPosPre(short cardNum, short encoder, out double pValue, short count, uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetEncVel(short cardNum, short encoder, out double pValue, short count, out uint pClock); + + [DllImport("gts.dll")] + public static extern short GT_SetCaptureMode(short cardNum, short encoder, short mode); + [DllImport("gts.dll")] + public static extern short GT_GetCaptureMode(short cardNum, short encoder, out short pMode, short count); + [DllImport("gts.dll")] + public static extern short GT_GetCaptureStatus(short cardNum, short encoder, out short pStatus, out int pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_SetCaptureSense(short cardNum, short encoder, short mode, short sense); + [DllImport("gts.dll")] + public static extern short GT_ClearCaptureStatus(short cardNum, short encoder); + [DllImport("gts.dll")] + public static extern short GT_SetCaptureRepeat(short cardNum, short encoder, short count); + [DllImport("gts.dll")] + public static extern short GT_GetCaptureRepeatStatus(short cardNum, short encoder, out short pCount); + [DllImport("gts.dll")] + public static extern short GT_GetCaptureRepeatPos(short cardNum, short encoder, out int pValue, short startNum, short count); + [DllImport("gts.dll")] + public static extern short GT_SetCaptureEncoder(short cardNum, short trigger, short encoder); + [DllImport("gts.dll")] + public static extern short GT_GetCaptureWidth(short cardNum, short trigger, out short pWidth, short count); + [DllImport("gts.dll")] + public static extern short GT_GetCaptureHomeGpi(short cardNum, short trigger, out short pHomeSts, out short pHomePos, out short pGpiSts, out short pGpiPos, short count); + + [DllImport("gts.dll")] + public static extern short GT_Reset(short cardNum); + [DllImport("gts.dll")] + public static extern short GT_GetClock(short cardNum, out uint pClock, out uint pLoop); + [DllImport("gts.dll")] + public static extern short GT_GetClockHighPrecision(short cardNum, out uint pClock); + + [DllImport("gts.dll")] + public static extern short GT_GetSts(short cardNum, short axis, out int pSts, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_ClrSts(short cardNum, short axis, short count); + [DllImport("gts.dll")] + public static extern short GT_AxisOn(short cardNum, short axis); + [DllImport("gts.dll")] + public static extern short GT_AxisOff(short cardNum, short axis); + [DllImport("gts.dll")] + public static extern short GT_Stop(short cardNum, int mask, int option); + [DllImport("gts.dll")] + public static extern short GT_SetPrfPos(short cardNum, short profile, int prfPos); + [DllImport("gts.dll")] + public static extern short GT_SynchAxisPos(short cardNum, int mask); + [DllImport("gts.dll")] + public static extern short GT_ZeroPos(short cardNum, short axis, short count); + + [DllImport("gts.dll")] + public static extern short GT_SetSoftLimit(short cardNum, short axis, int positive, int negative); + [DllImport("gts.dll")] + public static extern short GT_GetSoftLimit(short cardNum, short axis, out int pPositive, out int pNegative); + [DllImport("gts.dll")] + public static extern short GT_SetAxisBand(short cardNum, short axis, int band, int time); + [DllImport("gts.dll")] + public static extern short GT_GetAxisBand(short cardNum, short axis, out int pBand, out int pTime); + [DllImport("gts.dll")] + public static extern short GT_SetBacklash(short cardNum, short axis, int compValue, double compChangeValue, int compDir); + [DllImport("gts.dll")] + public static extern short GT_GetBacklash(short cardNum, short axis, out int pCompValue, out double pCompChangeValue, out int pCompDir); + [DllImport("gts.dll")] + public static extern short GT_SetLeadScrewComp(short cardNum, short axis, short n, int startPos, int lenPos, out int pCompPos, out int pCompNeg); + [DllImport("gts.dll")] + public static extern short GT_EnableLeadScrewComp(short cardNum, short axis, short mode); + [DllImport("gts.dll")] + public static extern short GT_GetCompensate(short cardNum, short axis, out double pPitchError, out double pCrossError, out double pBacklashError, out double pEncPos, out double pPrfPos); + + [DllImport("gts.dll")] + public static extern short GT_EnableGantry(short cardNum, short gantryMaster, short gantrySlave, double masterKp, double slaveKp); + [DllImport("gts.dll")] + public static extern short GT_DisableGantry(short cardNum); + [DllImport("gts.dll")] + public static extern short GT_SetGantryErrLmt(short cardNum, int gantryErrLmt); + [DllImport("gts.dll")] + public static extern short GT_GetGantryErrLmt(short cardNum, out int pGantryErrLmt); + + [DllImport("gts.dll")] + public static extern short GT_GetPrfPos(short cardNum, short profile, out double pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetPrfVel(short cardNum, short profile, out double pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetPrfAcc(short cardNum, short profile, out double pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetPrfMode(short cardNum, short profile, out int pValue, short count, out uint pClock); + + [DllImport("gts.dll")] + public static extern short GT_GetAxisPrfPos(short cardNum, short axis, out double pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetAxisPrfVel(short cardNum, short axis, out double pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetAxisPrfAcc(short cardNum, short axis, out double pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetAxisEncPos(short cardNum, short axis, out double pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetAxisEncVel(short cardNum, short axis, out double pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetAxisEncAcc(short cardNum, short axis, out double pValue, short count, out uint pClock); + [DllImport("gts.dll")] + public static extern short GT_GetAxisError(short cardNum, short axis, out double pValue, short count, out uint pClock); + + [DllImport("gts.dll")] + public static extern short GT_SetLongVar(short cardNum, short index, int value); + [DllImport("gts.dll")] + public static extern short GT_GetLongVar(short cardNum, short index, out int pValue); + [DllImport("gts.dll")] + public static extern short GT_SetDoubleVar(short cardNum, short index, double pValue); + [DllImport("gts.dll")] + public static extern short GT_GetDoubleVar(short cardNum, short index, out double pValue); + + [DllImport("gts.dll")] + public static extern short GT_SetControlFilter(short cardNum, short control, short index); + [DllImport("gts.dll")] + public static extern short GT_GetControlFilter(short cardNum, short control, out short pIndex); + + [DllImport("gts.dll")] + public static extern short GT_SetPid(short cardNum, short control, short index, ref TPid pPid); + [DllImport("gts.dll")] + public static extern short GT_GetPid(short cardNum, short control, short index, out TPid pPid); + + [DllImport("gts.dll")] + public static extern short GT_SetKvffFilter(short cardNum, short control, short index, short kvffFilterExp, double accMax); + [DllImport("gts.dll")] + public static extern short GT_GetKvffFilter(short cardNum, short control, short index, out short pKvffFilterExp, out double pAccMax); + + [DllImport("gts.dll")] + public static extern short GT_Update(short cardNum, int mask); + [DllImport("gts.dll")] + public static extern short GT_SetPos(short cardNum, short profile, int pos); + [DllImport("gts.dll")] + public static extern short GT_GetPos(short cardNum, short profile, out int pPos); + [DllImport("gts.dll")] + public static extern short GT_SetVel(short cardNum, short profile, double vel); + [DllImport("gts.dll")] + public static extern short GT_GetVel(short cardNum, short profile, out double pVel); + + [DllImport("gts.dll")] + public static extern short GT_PrfTrap(short cardNum, short profile); + [DllImport("gts.dll")] + public static extern short GT_SetTrapPrm(short cardNum, short profile, ref TTrapPrm pPrm); + [DllImport("gts.dll")] + public static extern short GT_GetTrapPrm(short cardNum, short profile, out TTrapPrm pPrm); + + [DllImport("gts.dll")] + public static extern short GT_PrfJog(short cardNum, short profile); + [DllImport("gts.dll")] + public static extern short GT_SetJogPrm(short cardNum, short profile, ref TJogPrm pPrm); + [DllImport("gts.dll")] + public static extern short GT_GetJogPrm(short cardNum, short profile, out TJogPrm pPrm); + + [DllImport("gts.dll")] + public static extern short GT_PrfPt(short cardNum, short profile, short mode); + [DllImport("gts.dll")] + public static extern short GT_SetPtLoop(short cardNum, short profile, int loop); + [DllImport("gts.dll")] + public static extern short GT_GetPtLoop(short cardNum, short profile, out int pLoop); + [DllImport("gts.dll")] + public static extern short GT_PtSpace(short cardNum, short profile, out short pSpace, short fifo); + [DllImport("gts.dll")] + public static extern short GT_PtData(short cardNum, short profile, double pos, int time, short type, short fifo); + [DllImport("gts.dll")] + public static extern short GT_PtDataWN(short cardNum, short profile, double pos, int time, short type, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_PtClear(short cardNum, short profile, short fifo); + [DllImport("gts.dll")] + public static extern short GT_PtStart(short cardNum, int mask, int option); + [DllImport("gts.dll")] + public static extern short GT_SetPtMemory(short cardNum, short profile, short memory); + [DllImport("gts.dll")] + public static extern short GT_GetPtMemory(short cardNum, short profile, out short pMemory); + [DllImport("gts.dll")] + public static extern short GT_PtGetSegNum(short cardNum, short profile, out int pSegNum); + + [DllImport("gts.dll")] + public static extern short GT_PrfGear(short cardNum, short profile, short dir); + [DllImport("gts.dll")] + public static extern short GT_SetGearMaster(short cardNum, short profile, short masterIndex, short masterType, short masterItem); + [DllImport("gts.dll")] + public static extern short GT_GetGearMaster(short cardNum, short profile, out short pMasterIndex, out short pMasterType, out short pMasterItem); + [DllImport("gts.dll")] + public static extern short GT_SetGearRatio(short cardNum, short profile, int masterEven, int slaveEven, int masterSlope); + [DllImport("gts.dll")] + public static extern short GT_GetGearRatio(short cardNum, short profile, out int pMasterEven, out int pSlaveEven, out int pMasterSlope); + [DllImport("gts.dll")] + public static extern short GT_GearStart(short cardNum, int mask); + [DllImport("gts.dll")] + public static extern short GT_SetGearEvent(short cardNum, short profile, short gearEvent, int startPara0, int startPara1); + [DllImport("gts.dll")] + public static extern short GT_GetGearEvent(short cardNum, short profile, out short pEvent, out int pStartPara0, out int pStartPara1); + + [DllImport("gts.dll")] + public static extern short GT_PrfFollow(short cardNum, short profile, short dir); + [DllImport("gts.dll")] + public static extern short GT_SetFollowMaster(short cardNum, short profile, short masterIndex, short masterType, short masterItem); + [DllImport("gts.dll")] + public static extern short GT_GetFollowMaster(short cardNum, short profile, out short pMasterIndex, out short pMasterType, out short pMasterItem); + [DllImport("gts.dll")] + public static extern short GT_SetFollowLoop(short cardNum, short profile, int loop); + [DllImport("gts.dll")] + public static extern short GT_GetFollowLoop(short cardNum, short profile, out int pLoop); + [DllImport("gts.dll")] + public static extern short GT_SetFollowEvent(short cardNum, short profile, short followEvent, short masterDir, int pos); + [DllImport("gts.dll")] + public static extern short GT_GetFollowEvent(short cardNum, short profile, out short pFollowEvent, out short pMasterDir, out int pPos); + [DllImport("gts.dll")] + public static extern short GT_FollowSpace(short cardNum, short profile, out short pSpace, short fifo); + [DllImport("gts.dll")] + public static extern short GT_FollowData(short cardNum, short profile, int masterSegment, double slaveSegment, short type, short fifo); + [DllImport("gts.dll")] + public static extern short GT_FollowClear(short cardNum, short profile, short fifo); + [DllImport("gts.dll")] + public static extern short GT_FollowStart(short cardNum, int mask, int option); + [DllImport("gts.dll")] + public static extern short GT_FollowSwitch(short cardNum, int mask); + [DllImport("gts.dll")] + public static extern short GT_SetFollowMemory(short cardNum, short profile, short memory); + [DllImport("gts.dll")] + public static extern short GT_GetFollowMemory(short cardNum, short profile, out short memory); + [DllImport("gts.dll")] + public static extern short GT_GetFollowStatus(short cardNum, short profile, out short pFifoNum, out short pSwitchStatus); + [DllImport("gts.dll")] + public static extern short GT_SetFollowPhasing(short cardNum, short profile, short profilePhasing); + [DllImport("gts.dll")] + public static extern short GT_GetFollowPhasing(short cardNum, short profile, out short pProfilePhasing); + + [DllImport("gts.dll")] + public static extern short GT_Compile(short cardNum, string pFileName, out TCompileInfo pWrongInfo); + [DllImport("gts.dll")] + public static extern short GT_Download(short cardNum, string pFileName); + + [DllImport("gts.dll")] + public static extern short GT_GetFunId(short cardNum, string pFunName, out short pFunId); + [DllImport("gts.dll")] + public static extern short GT_Bind(short cardNum, short thread, short funId, short page); + + [DllImport("gts.dll")] + public static extern short GT_RunThread(short cardNum, short thread); + [DllImport("gts.dll")] + public static extern short GT_StopThread(short cardNum, short thread); + [DllImport("gts.dll")] + public static extern short GT_PauseThread(short cardNum, short thread); + + [DllImport("gts.dll")] + public static extern short GT_GetThreadSts(short cardNum, short thread, out TThreadSts pThreadSts); + + [DllImport("gts.dll")] + public static extern short GT_GetVarId(short cardNum, string pFunName, string pVarName, out TVarInfo pVarInfo); + [DllImport("gts.dll")] + public static extern short GT_SetVarValue(short cardNum, short page, ref TVarInfo pVarInfo, ref double pValue, short count); + [DllImport("gts.dll")] + public static extern short GT_GetVarValue(short cardNum, short page, ref TVarInfo pVarInfo, out double pValue, short count); + + [DllImport("gts.dll")] + public static extern short GT_SetCrdPrm(short cardNum, short crd, ref TCrdPrm pCrdPrm); + [DllImport("gts.dll")] + public static extern short GT_GetCrdPrm(short cardNum, short crd, out TCrdPrm pCrdPrm); + [DllImport("gts.dll")] + public static extern short GT_CrdSpace(short cardNum, short crd, out int pSpace, short fifo); + [DllImport("gts.dll")] + public static extern short GT_CrdData(short cardNum, short crd, System.IntPtr pCrdData, short fifo); + [DllImport("gts.dll")] + public static extern short GT_CrdDataCircle(short cardNum, short crd, ref TCrdData pCrdData, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXY(short cardNum, short crd, int x, int y, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZ(short cardNum, short crd, int x, int y, int z, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZA(short cardNum, short crd, int x, int y, int z, int a, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYG0(short cardNum, short crd, int x, int y, double synVel, double synAcc, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZG0(short cardNum, short crd, int x, int y, int z, double synVel, double synAcc, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZAG0(short cardNum, short crd, int x, int y, int z, int a, double synVel, double synAcc, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcXYR(short cardNum, short crd, int x, int y, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcXYC(short cardNum, short crd, int x, int y, double xCenter, double yCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcYZR(short cardNum, short crd, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcYZC(short cardNum, short crd, int y, int z, double yCenter, double zCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcZXR(short cardNum, short crd, int z, int x, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcZXC(short cardNum, short crd, int z, int x, double zCenter, double xCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcXYZ(short cardNum, short crd, int x, int y, int z, double interX, double interY, double interZ, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYOverride2(short cardNum, short crd, int x, int y, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZOverride2(short cardNum, short crd, int x, int y, int z, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZAOverride2(short cardNum, short crd, int x, int y, int z, int a, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYG0Override2(short cardNum, short crd, int x, int y, double synVel, double synAcc, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZG0Override2(short cardNum, short crd, int x, int y, int z, double synVel, double synAcc, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZAG0Override2(short cardNum, short crd, int x, int y, int z, int a, double synVel, double synAcc, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcXYROverride2(short cardNum, short crd, int x, int y, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcXYCOverride2(short cardNum, short crd, int x, int y, double xCenter, double yCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcYZROverride2(short cardNum, short crd, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcYZCOverride2(short cardNum, short crd, int y, int z, double yCenter, double zCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcZXROverride2(short cardNum, short crd, int z, int x, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcZXCOverride2(short cardNum, short crd, int z, int x, double zCenter, double xCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixXYRZ(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixXYCZ(short cardNum, short crd, int x, int y, int z, double xCenter, double yCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixYZRX(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixYZCX(short cardNum, short crd, int x, int y, int z, double yCenter, double zCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixZXRY(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixZXCY(short cardNum, short crd, int x, int y, int z, double zCenter, double xCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixXYRZOverride2(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixXYCZOverride2(short cardNum, short crd, int x, int y, int z, double xCenter, double yCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixYZRXOverride2(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixYZCXOverride2(short cardNum, short crd, int x, int y, int z, double yCenter, double zCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixZXRYOverride2(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixZXCYOverride2(short cardNum, short crd, int x, int y, int z, double zCenter, double xCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYWN(short cardNum, short crd, int x, int y, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZWN(short cardNum, short crd, int x, int y, int z, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZAWN(short cardNum, short crd, int x, int y, int z, int a, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYG0WN(short cardNum, short crd, int x, int y, double synVel, double synAcc, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZG0WN(short cardNum, short crd, int x, int y, int z, double synVel, double synAcc, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZAG0WN(short cardNum, short crd, int x, int y, int z, int a, double synVel, double synAcc, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcXYRWN(short cardNum, short crd, int x, int y, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcXYCWN(short cardNum, short crd, int x, int y, double xCenter, double yCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcYZRWN(short cardNum, short crd, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcYZCWN(short cardNum, short crd, int y, int z, double yCenter, double zCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcZXRWN(short cardNum, short crd, int z, int x, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcZXCWN(short cardNum, short crd, int z, int x, double zCenter, double xCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcXYZWN(short cardNum, short crd, int x, int y, int z, double interX, double interY, double interZ, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYOverride2WN(short cardNum, short crd, int x, int y, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZOverride2WN(short cardNum, short crd, int x, int y, int z, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZAOverride2WN(short cardNum, short crd, int x, int y, int z, int a, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYG0Override2WN(short cardNum, short crd, int x, int y, double synVel, double synAcc, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZG0Override2WN(short cardNum, short crd, int x, int y, int z, double synVel, double synAcc, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_LnXYZAG0Override2WN(short cardNum, short crd, int x, int y, int z, int a, double synVel, double synAcc, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcXYROverride2WN(short cardNum, short crd, int x, int y, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcXYCOverride2WN(short cardNum, short crd, int x, int y, double xCenter, double yCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcYZROverride2WN(short cardNum, short crd, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcYZCOverride2WN(short cardNum, short crd, int y, int z, double yCenter, double zCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcZXROverride2WN(short cardNum, short crd, int z, int x, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_ArcZXCOverride2WN(short cardNum, short crd, int z, int x, double zCenter, double xCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixXYRZWN(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixXYCZWN(short cardNum, short crd, int x, int y, int z, double xCenter, double yCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixYZRXWN(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixYZCXWN(short cardNum, short crd, int x, int y, int z, double yCenter, double zCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixZXRYWN(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixZXCYWN(short cardNum, short crd, int x, int y, int z, double zCenter, double xCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixXYRZOverride2WN(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixXYCZOverride2WN(short cardNum, short crd, int x, int y, int z, double xCenter, double yCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixYZRXOverride2WN(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixYZCXOverride2WN(short cardNum, short crd, int x, int y, int z, double yCenter, double zCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixZXRYOverride2WN(short cardNum, short crd, int x, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_HelixZXCYOverride2WN(short cardNum, short crd, int x, int y, int z, double zCenter, double xCenter, short circleDir, double synVel, double synAcc, double velEnd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufIO(short cardNum, short crd, ushort doType, ushort doMask, ushort doValue, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufEnableDoBitPulse(short cardNum, short crd, short doType, short doIndex, ushort highLevelTime, ushort lowLevelTime, int pulseNum, short firstLevel, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufDisableDoBitPulse(short cardNum, short crd, short doType, short doIndex, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufDelay(short cardNum, short crd, ushort delayTime, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufComparePulse(short cardNum, short crd, short level, short outputType, short time, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufDA(short cardNum, short crd, short chn, short daValue, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufLmtsOn(short cardNum, short crd, short axis, short limitType, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufLmtsOff(short cardNum, short crd, short axis, short limitType, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufSetStopIo(short cardNum, short crd, short axis, short stopType, short inputType, short inputIndex, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufMove(short cardNum, short crd, short moveAxis, int pos, double vel, double acc, short modal, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufGear(short cardNum, short crd, short gearAxis, int pos, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufGearPercent(short cardNum, short crd, short gearAxis, int pos, short accPercent, short decPercent, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufStopMotion(short cardNum, short crd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufSetVarValue(short cardNum, short crd, short pageId, out TVarInfo pVarInfo, double value, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufJumpNextSeg(short cardNum, short crd, short axis, short limitType, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufSynchPrfPos(short cardNum, short crd, short encoder, short profile, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufVirtualToActual(short cardNum, short crd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufSetLongVar(short cardNum, short crd, short index, int value, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufSetDoubleVar(short cardNum, short crd, short index, double value, short fifo); + [DllImport("gts.dll")] + public static extern short GT_CrdStart(short cardNum, short mask, short option); + [DllImport("gts.dll")] + public static extern short GT_CrdStartStep(short cardNum, short mask, short option); + [DllImport("gts.dll")] + public static extern short GT_CrdStepMode(short cardNum, short mask, short option); + [DllImport("gts.dll")] + public static extern short GT_SetOverride(short cardNum, short crd, double synVelRatio); + [DllImport("gts.dll")] + public static extern short GT_SetOverride2(short cardNum, short crd, double synVelRatio); + [DllImport("gts.dll")] + public static extern short GT_InitLookAhead(short cardNum, short crd, short fifo, double T, double accMax, short n, System.IntPtr pLookAheadBuf); + [DllImport("gts.dll")] + public static extern short GT_GetLookAheadSpace(short cardNum, short crd, out int pSpace, short fifo); + [DllImport("gts.dll")] + public static extern short GT_GetLookAheadSegCount(short cardNum, short crd, out int pSegCount, short fifo); + [DllImport("gts.dll")] + public static extern short GT_CrdClear(short cardNum, short crd, short fifo); + [DllImport("gts.dll")] + public static extern short GT_CrdStatus(short cardNum, short crd, out short pRun, out int pSegment, short fifo); + [DllImport("gts.dll")] + public static extern short GT_SetUserSegNum(short cardNum, short crd, int segNum, short fifo); + [DllImport("gts.dll")] + public static extern short GT_GetUserSegNum(short cardNum, short crd, out int pSegment, short fifo); + [DllImport("gts.dll")] + public static extern short GT_GetUserSegNumWN(short cardNum, short crd, out int pSegment, short fifo); + [DllImport("gts.dll")] + public static extern short GT_GetRemainderSegNum(short cardNum, short crd, out int pSegment, short fifo); + [DllImport("gts.dll")] + public static extern short GT_SetCrdStopDec(short cardNum, short crd, double decSmoothStop, double decAbruptStop); + [DllImport("gts.dll")] + public static extern short GT_GetCrdStopDec(short cardNum, short crd, out double pDecSmoothStop, out double pDecAbruptStop); + [DllImport("gts.dll")] + public static extern short GT_SetCrdLmtStopMode(short cardNum, short crd, short lmtStopMode); + [DllImport("gts.dll")] + public static extern short GT_GetCrdLmtStopMode(short cardNum, short crd, out short pLmtStopMode); + [DllImport("gts.dll")] + public static extern short GT_GetUserTargetVel(short cardNum, short crd, out double pTargetVel); + [DllImport("gts.dll")] + public static extern short GT_GetSegTargetPos(short cardNum, short crd, out int pTargetPos); + [DllImport("gts.dll")] + public static extern short GT_GetCrdPos(short cardNum, short crd, out double pPos); + [DllImport("gts.dll")] + public static extern short GT_GetCrdVel(short cardNum, short crd, out double pSynVel); + [DllImport("gts.dll")] + public static extern short GT_SetCrdSingleMaxVel(short cardNum, short crd, ref double pMaxVel); + [DllImport("gts.dll")] + public static extern short GT_GetCrdSingleMaxVel(short cardNum, short crd, out double pMaxVel); + [DllImport("gts.dll")] + public static extern short GT_GetCmdCount(short cardNum, short crd, out short pResult, short fifo); + [DllImport("gts.dll")] + public static extern short GT_BufLaserOn(short cardNum, short crd, short fifo, short channel); + [DllImport("gts.dll")] + public static extern short GT_BufLaserOff(short cardNum, short crd, short fifo, short channel); + [DllImport("gts.dll")] + public static extern short GT_BufLaserPrfCmd(short cardNum, short crd, double laserPower, short fifo, short channel); + [DllImport("gts.dll")] + public static extern short GT_BufLaserFollowRatio(short cardNum, short crd, double ratio, double minPower, double maxPower, short fifo, short channel); + [DllImport("gts.dll")] + public static extern short GT_BufLaserFollowMode(short cardNum, short crd, short source, short fifo, short channel, double startPower); + [DllImport("gts.dll")] + public static extern short GT_BufLaserFollowOff(short cardNum, short crd, short fifo, short channel); + [DllImport("gts.dll")] + public static extern short GT_BufLaserFollowSpline(short cardNum, short crd, short tableId, double minPower, double maxPower, short fifo, short channel); + + [DllImport("gts.dll")] + public static extern short GT_PrfPvt(short cardNum, short profile); + [DllImport("gts.dll")] + public static extern short GT_SetPvtLoop(short cardNum, short profile, int loop); + [DllImport("gts.dll")] + public static extern short GT_GetPvtLoop(short cardNum, short profile, out int pLoopCount, out int pLoop); + [DllImport("gts.dll")] + public static extern short GT_PvtStatus(short cardNum, short profile, out short pTableId, out double pTime, short count); + [DllImport("gts.dll")] + public static extern short GT_PvtStart(short cardNum, int mask); + [DllImport("gts.dll")] + public static extern short GT_PvtTableSelect(short cardNum, short profile, short tableId); + + [DllImport("gts.dll")] + public static extern short GT_PvtTable(short cardNum, short tableId, int count, ref double pTime, ref double pPos, ref double pVel); + [DllImport("gts.dll")] + public static extern short GT_PvtTableEx(short cardNum, short tableId, int count, ref double pTime, ref double pPos, ref double pVelBegin, ref double pVelEnd); + [DllImport("gts.dll")] + public static extern short GT_PvtTableComplete(short cardNum, short tableId, int count, ref double pTime, ref double pPos, ref double pA, ref double pB, ref double pC, double velBegin, double velEnd); + [DllImport("gts.dll")] + public static extern short GT_PvtTablePercent(short cardNum, short tableId, int count, ref double pTime, ref double pPos, ref double pPercent, double velBegin); + [DllImport("gts.dll")] + public static extern short GT_PvtPercentCalculate(short cardNum, int n, ref double pTime, ref double pPos, ref double pPercent, double velBegin, ref double pVel); + [DllImport("gts.dll")] + public static extern short GT_PvtTableContinuous(short cardNum, short tableId, int count, ref double pPos, ref double pVel, ref double pPercent, ref double pVelMax, ref double pAcc, ref double pDec, double timeBegin); + [DllImport("gts.dll")] + public static extern short GT_PvtContinuousCalculate(short cardNum, int n, ref double pPos, ref double pVel, ref double pPercent, ref double pVelMax, ref double pAcc, ref double pDec, ref double pTime); + [DllImport("gts.dll")] + public static extern short GT_PvtTableMovePercent(short cardNum, short tableId, long distance, double vm, double acc, double pa1, double pa2, double dec, double pd1, double pd2, out double pVel, out double pAcc, out double pDec, out double pTime); + + [DllImport("gts.dll")] + public static extern short GT_HomeInit(short cardNum); + [DllImport("gts.dll")] + public static extern short GT_Home(short cardNum, short axis, int pos, double vel, double acc, int offset); + [DllImport("gts.dll")] + public static extern short GT_Index(short cardNum, short axis, int pos, int offset); + [DllImport("gts.dll")] + public static extern short GT_HomeStop(short cardNum, short axis, int pos, double vel, double acc); + [DllImport("gts.dll")] + public static extern short GT_HomeSts(short cardNum, short axis, out ushort pStatus); + + [DllImport("gts.dll")] + public static extern short GT_HandwheelInit(short cardNum); + [DllImport("gts.dll")] + public static extern short GT_SetHandwheelStopDec(short cardNum, short slave, double decSmoothStop, double decAbruptStop); + [DllImport("gts.dll")] + public static extern short GT_StartHandwheel(short cardNum, short slave, short master, short masterEven, short slaveEven, short intervalTime, double acc, double dec, double vel, short stopWaitTime); + [DllImport("gts.dll")] + public static extern short GT_EndHandwheel(short cardNum, short slave); + + [DllImport("gts.dll")] + public static extern short GT_SetTrigger(short cardNum, short i, ref TTrigger pTrigger); + [DllImport("gts.dll")] + public static extern short GT_GetTrigger(short cardNum, short i, out TTrigger pTrigger); + [DllImport("gts.dll")] + public static extern short GT_GetTriggerStatus(short cardNum, short i, out TTriggerStatus pTriggerStatus, short count); + [DllImport("gts.dll")] + public static extern short GT_ClearTriggerStatus(short cardNum, short i); + + [DllImport("gts.dll")] + public static extern short GT_SetComparePort(short cardNum, short channel, short hsio0, short hsio1); + + [DllImport("gts.dll")] + public static extern short GT_ComparePulse(short cardNum, short level, short outputType, short time); + [DllImport("gts.dll")] + public static extern short GT_CompareStop(short cardNum); + [DllImport("gts.dll")] + public static extern short GT_CompareStatus(short cardNum, out short pStatus, out int pCount); + [DllImport("gts.dll")] + public static extern short GT_CompareData(short cardNum, short encoder, short source, short pulseType, short startLevel, short time, ref int pBuf1, short count1, ref int pBuf2, short count2); + [DllImport("gts.dll")] + public static extern short GT_CompareLinear(short cardNum, short encoder, short channel, int startPos, int repeatTimes, int interval, short time, short source); + [DllImport("gts.dll")] + public static extern short GT_CompareContinuePulseMode(short cardNum, short mode, short count, short standTime); + + [DllImport("gts.dll")] + public static extern short GT_SetEncResponseCheck(short cardNum, short control, short dacThreshold, double minEncVel, int time); + [DllImport("gts.dll")] + public static extern short GT_GetEncResponseCheck(short cardNum, short control, out short pDacThreshold, out double pMinEncVel, out int pTime); + [DllImport("gts.dll")] + public static extern short GT_EnableEncResponseCheck(short cardNum, short control); + [DllImport("gts.dll")] + public static extern short GT_DisableEncResponseCheck(short cardNum, short control); + + [DllImport("gts.dll")] + public static extern short GT_2DCompareMode(short cardNum, short chn, short mode); + [DllImport("gts.dll")] + public static extern short GT_2DComparePulse(short cardNum, short chn, short level, short outputType, short time); + [DllImport("gts.dll")] + public static extern short GT_2DCompareStop(short cardNum, short chn); + [DllImport("gts.dll")] + public static extern short GT_2DCompareClear(short cardNum, short chn); + [DllImport("gts.dll")] + public static extern short GT_2DCompareStatus(short cardNum, short chn, out short pStatus, out int pCount, out short pFifo, out short pFifoCount, out short pBufCount); + [DllImport("gts.dll")] + public static extern short GT_2DCompareSetPrm(short cardNum, short chn, ref T2DComparePrm pPrm); + [DllImport("gts.dll")] + public static extern short GT_2DCompareData(short cardNum, short chn, short count, ref T2DCompareData pBuf, short fifo); + [DllImport("gts.dll")] + public static extern short GT_2DCompareStart(short cardNum, short chn); + + [DllImport("gts.dll")] + public static extern short GT_SetAxisMode(short cardNum, short axis, short mode); + [DllImport("gts.dll")] + public static extern short GT_GetAxisMode(short cardNum, short axis, out short pMode); + [DllImport("gts.dll")] + public static extern short GT_SetHSIOOpt(short cardNum, ushort value, short channel); + [DllImport("gts.dll")] + public static extern short GT_GetHSIOOpt(short cardNum, out ushort pValue, short channel); + [DllImport("gts.dll")] + public static extern short GT_LaserPowerMode(short cardNum, short laserPowerMode, double maxValue, double minValue, short channel, short delaymode); + [DllImport("gts.dll")] + public static extern short GT_LaserPrfCmd(short cardNum, double outputCmd, short channel); + [DllImport("gts.dll")] + public static extern short GT_LaserOutFrq(short cardNum, double outFrq, short channel); + [DllImport("gts.dll")] + public static extern short GT_SetPulseWidth(short cardNum, uint width, short channel); + [DllImport("gts.dll")] + public static extern short GT_SetWaitPulse(short cardNum, ushort mode, double waitPulseFrq, double waitPulseDuty, short channel); + [DllImport("gts.dll")] + public static extern short GT_SetPreVltg(short cardNum, ushort mode, double voltageValue, short channel); + [DllImport("gts.dll")] + public static extern short GT_SetLevelDelay(short cardNum, ushort offDelay, ushort onDelay, short channel); + [DllImport("gts.dll")] + public static extern short GT_EnaFPK(short cardNum, ushort time1, ushort time2, ushort laserOffDelay, short channel); + [DllImport("gts.dll")] + public static extern short GT_DisFPK(short cardNum, short channel); + [DllImport("gts.dll")] + public static extern short GT_SetLaserDisMode(short cardNum, short mode, short source, ref int pPos, ref double pScale, short channel); + [DllImport("gts.dll")] + public static extern short GT_SetLaserDisRatio(short cardNum, ref double pRatio, double minPower, double maxPower, short channel); + [DllImport("gts.dll")] + public static extern short GT_SetWaitPulseEx(short cardNum, ushort mode, double waitPulseFrq, double waitPulseDuty); + [DllImport("gts.dll")] + public static extern short GT_SetLaserMode(short cardNum, short mode); + [DllImport("gts.dll")] + public static extern short GT_SetLaserFollowSpline(short cardNum, short tableId, long n, ref double pX, ref double pY, double beginValue, double endValue, short channel); + [DllImport("gts.dll")] + public static extern short GT_GetLaserFollowSpline(short cardNum, short tableId, long n, out double pX, out double pY, out double pA, out double pB, out double pC, out long pCount, short channel); + + //ExtMdl + [DllImport("gts.dll")] + public static extern short GT_OpenExtMdl(short cardNum, string pDllName); + [DllImport("gts.dll")] + public static extern short GT_CloseExtMdl(short cardNum); + [DllImport("gts.dll")] + public static extern short GT_SwitchtoCardNoExtMdl(short cardNum, short card); + [DllImport("gts.dll")] + public static extern short GT_ResetExtMdl(short cardNum); + [DllImport("gts.dll")] + public static extern short GT_LoadExtConfig(short cardNum, string pFileName); + [DllImport("gts.dll")] + public static extern short GT_SetExtIoValue(short cardNum, short mdl, ushort value); + [DllImport("gts.dll")] + public static extern short GT_GetExtIoValue(short cardNum, short mdl, out ushort pValue); + [DllImport("gts.dll")] + public static extern short GT_SetExtIoBit(short cardNum, short mdl, short index, ushort value); + [DllImport("gts.dll")] + public static extern short GT_GetExtIoBit(short cardNum, short mdl, short index, out ushort pValue); + [DllImport("gts.dll")] + public static extern short GT_GetExtAdValue(short cardNum, short mdl, short chn, out ushort pValue); + [DllImport("gts.dll")] + public static extern short GT_GetExtAdVoltage(short cardNum, short mdl, short chn, out double pValue); + [DllImport("gts.dll")] + public static extern short GT_SetExtDaValue(short cardNum, short mdl, short chn, ushort value); + [DllImport("gts.dll")] + public static extern short GT_SetExtDaVoltage(short cardNum, short mdl, short chn, double value); + [DllImport("gts.dll")] + public static extern short GT_GetStsExtMdl(short cardNum, short mdl, short chn, out ushort pStatus); + [DllImport("gts.dll")] + public static extern short GT_GetExtDoValue(short cardNum, short mdl, out ushort pValue); + [DllImport("gts.dll")] + public static extern short GT_GetExtMdlMode(short cardNum, out short pMode); + [DllImport("gts.dll")] + public static extern short GT_SetExtMdlMode(short cardNum, short mode); + [DllImport("gts.dll")] + public static extern short GT_UploadConfig(short cardNum); + [DllImport("gts.dll")] + public static extern short GT_DownloadConfig(short cardNum); + [DllImport("gts.dll")] + public static extern short GT_GetUuid(short cardNum, out char pCode, short count); + + //2D Compensate + public struct TCompensate2DTable + { + public short count1; + public short count2; + public int posBegin1; + public int posBegin2; + public int step1; + public int step2; + } + public struct TCompensate2D + { + public short enable; + public short tableIndex; + public short axisType1; + public short axisType2; + public short axisIndex1; + public short axisIndex2; + } + [DllImport("gts.dll")] + public static extern short GT_SetCompensate2DTable(short cardNum, short tableIndex, ref TCompensate2DTable pTable, ref int pData, short externComp); + [DllImport("gts.dll")] + public static extern short GT_GetCompensate2DTable(short cardNum, short tableIndex, out TCompensate2DTable pTable, out short pExternComp); + [DllImport("gts.dll")] + public static extern short GT_SetCompensate2D(short cardNum, short axis, ref TCompensate2D pComp2d); + [DllImport("gts.dll")] + public static extern short GT_GetCompensate2D(short cardNum, short axis, out TCompensate2D pComp2d); + [DllImport("gts.dll")] + public static extern short GT_GetCompensate2DValue(short cardNum, short axis, out double pValue); + + //Smart Home + public const short HOME_STAGE_IDLE = 0; + public const short HOME_STAGE_START = 1; + public const short HOME_STAGE_SEARCH_LIMIT = 10; + public const short HOME_STAGE_SEARCH_LIMIT_STOP = 11; + public const short HOME_STAGE_SEARCH_LIMIT_ESCAPE = 13; + public const short HOME_STAGE_SEARCH_LIMIT_RETURN = 15; + public const short HOME_STAGE_SEARCH_LIMIT_RETURN_STOP = 16; + public const short HOME_STAGE_SEARCH_HOME = 20; + public const short HOME_STAGE_SEARCH_HOME_RETURN = 25; + public const short HOME_STAGE_SEARCH_INDEX = 30; + public const short HOME_STAGE_SEARCH_GPI = 40; + public const short HOME_STAGE_SEARCH_GPI_RETURN = 45; + public const short HOME_STAGE_GO_HOME = 80; + public const short HOME_STAGE_END = 100; + public const short HOME_ERROR_NONE = 0; + public const short HOME_ERROR_NOT_TRAP_MODE = 1; + public const short HOME_ERROR_DISABLE = 2; + public const short HOME_ERROR_ALARM = 3; + public const short HOME_ERROR_STOP = 4; + public const short HOME_ERROR_STAGE = 5; + public const short HOME_ERROR_HOME_MODE = 6; + public const short HOME_ERROR_SET_CAPTURE_HOME = 7; + public const short HOME_ERROR_NO_HOME = 8; + public const short HOME_ERROR_SET_CAPTURE_INDEX = 9; + public const short HOME_ERROR_NO_INDEX = 10; + public const short HOME_MODE_LIMIT = 10; + public const short HOME_MODE_LIMIT_HOME = 11; + public const short HOME_MODE_LIMIT_INDEX = 12; + public const short HOME_MODE_LIMIT_HOME_INDEX = 13; + public const short HOME_MODE_HOME = 20; + public const short HOME_MODE_HOME_INDEX = 22; + public const short HOME_MODE_INDEX = 30; + public struct THomePrm + { + public short mode; + public short moveDir; + public short indexDir; + public short edge; + public short triggerIndex; + public short pad1_1; + public short pad1_2; + public short pad1_3; + public double velHigh; + public double velLow; + public double acc; + public double dec; + public short smoothTime; + public short pad2_1; + public short pad2_2; + public short pad2_3; + public int homeOffset; + public int searchHomeDistance; + public int searchIndexDistance; + public int escapeStep; + public int pad3_1; + public int pad3_2; + public int pad3_3; + } + public struct THomeStatus + { + public short run; + public short stage; + public short error; + public short pad1; + public int capturePos; + public int targetPos; + } + [DllImport("gts.dll")] + public static extern short GT_GoHome(short cardNum, short axis, ref THomePrm pHomePrm); + [DllImport("gts.dll")] + public static extern short GT_GetHomePrm(short cardNum, short axis, out THomePrm pHomePrm); + [DllImport("gts.dll")] + public static extern short GT_GetHomeStatus(short cardNum, short axis, out THomeStatus pHomeStatus); + + //Extern Control + public struct TControlConfigEx + { + public short refType; + public short refIndex; + public short feedbackType; + public short feedbackIndex; + public int errorLimit; + public short feedbackSmooth; + public short controlSmooth; + } + [DllImport("gts.dll")] + public static extern short GT_SetControlConfigEx(short cardNum, short control, ref TControlConfigEx pControl); + [DllImport("gts.dll")] + public static extern short GT_GetControlConfigEx(short cardNum, short control, out TControlConfigEx pControl); + + //Adc filter + public struct TAdcConfig + { + public short active; + public short reverse; + public double a; + public double b; + public short filterMode; + } + [DllImport("gts.dll")] + public static extern short GT_SetAdcConfig(short cardNum, short adc, ref TAdcConfig pAdc); + [DllImport("gts.dll")] + public static extern short GT_GetAdcConfig(short cardNum, short adc, out TAdcConfig pAdc); + [DllImport("gts.dll")] + public static extern short GT_SetAdcFilterPrm(short cardNum, short adc, double k); + [DllImport("gts.dll")] + public static extern short GT_GetAdcFilterPrm(short cardNum, short adc, out double pk); + + //Superimposed + [DllImport("gts.dll")] + public static extern short GT_SetControlSuperimposed(short cardNum, short control, short superimposedType, short superimposedIndex); + [DllImport("gts.dll")] + public static extern short GT_GetControlSuperimposed(short cardNum, short control, out short pSuperimposedType, out short pSuperimposedIndex); + + [DllImport("gts.dll")] + public static extern short GT_ZeroLaserOnTime(short cardNum, short channel); + [DllImport("gts.dll")] + public static extern short GT_GetLaserOnTime(short cardNum, short channel, out uint pTime); + } +} diff --git a/src/Bro.Device.GTSCard/GTSCardConfig.cs b/src/Bro.Device.GTSCard/GTSCardConfig.cs new file mode 100644 index 0000000..49d9c60 --- /dev/null +++ b/src/Bro.Device.GTSCard/GTSCardConfig.cs @@ -0,0 +1,247 @@ +锘縰sing Bro.Common.Base; +using Bro.Common.Helper; +using Bro.Common.Interface; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Drawing.Design; + +namespace Bro.Device.GTSCard +{ + public abstract class GTSCardOperationConfigBase : OperationConfigBase + { + ///// <summary> + ///// 闇�瑕佹搷浣滅殑PLC椤� + ///// </summary> + //public List<PLCItem> Items { get; set; } = new List<PLCItem>(); + } + + //public class GTSCardInitialConfigBase : InitialConfigBase, IMonitorConfig + //{ + // [Category("椹卞姩绫诲瀷")] + // [Description("椹卞姩绫诲瀷")] + // [DisplayName("椹卞姩绫诲瀷")] + // [TypeConverter(typeof(PLCTypeConverter))] + // public override string DriverType { get; set; } + + // [Category("璀︽姤閰嶇疆")] + // [Description("璀︽姤閰嶇疆鍒楄〃")] + // [DisplayName("璀︽姤閰嶇疆")] + // [TypeConverter(typeof(CollectionCountConvert))] + // [Editor(typeof(WarningSetsEditor), typeof(UITypeEditor))] + // public List<WarningSet> WarningSetCollection { get; set; } = new List<WarningSet>(); + + // #region IMonitorConfig + // [Category("鐩戝惉璁剧疆")] + // [Description("鐩戝惉鎿嶄綔閰嶇疆闆嗗悎")] + // [DisplayName("鐩戝惉閰嶇疆")] + // [TypeConverter(typeof(CollectionCountConvert))] + // [Editor(typeof(ComplexCollectionEditor<MonitorSet>), typeof(UITypeEditor))] + // public List<IMonitorSet> MonitorSetCollection { get; set; } = new List<IMonitorSet>(); + + // [Category("鐩戝惉璁剧疆")] + // [Description("true锛氬惎鍔ㄧ洃鍚� false锛氬叧闂洃鍚�")] + // [DisplayName("鐩戝惉鍚敤")] + // public bool IsEnableMonitor { get; set; } = true; + + // [Category("鐩戝惉璁剧疆")] + // [Description("鎵弿闂撮殧鏃堕棿锛屽崟浣嶏細ms")] + // [DisplayName("鎵弿闂撮殧")] + // public int MonitorInterval { get; set; } = 100; + + // [Category("鐩戝惉璁剧疆")] + // [Description("瓒呮椂璁剧疆锛屽崟浣嶏細ms")] + // [DisplayName("鐩戝惉瓒呮椂")] + // public int MonitorTimeout { get; set; } = 500; + + // [Category("浜嬩欢鍦板潃璁剧疆")] + // [Description("浜嬩欢寮�濮嬪湴鍧�锛孭LC鐨勫疄闄呭瘎瀛樺櫒鍦板潃銆傚崄杩涘埗锛屼笉鍖呭惈鍔熻兘鐮併��")] + // [DisplayName("鐩戝惉寮�濮嬪湴鍧�")] + // public int EventStartAddress { get; set; } = 8000; + + // [Category("浜嬩欢鍦板潃璁剧疆")] + // [Description("浜嬩欢鍦板潃闀垮害锛屾渶澶ч暱搴�128")] + // [DisplayName("鐩戝惉闀垮害")] + // public int EventLength { get; set; } = 120; + + // public List<IMonitorSet> GetAllMonitorSet() + // { + // WarningSetCollection.ForEach(m => m.Source = this.Name); + + // MonitorSetCollection.ForEach(m => m.SourceDevice = this.Id); + // return MonitorSetCollection; + // } + // #endregion + + // #region IMotion Related + // [Category("杩愬姩閰嶇疆")] + // [Description("杩愬姩杞寸姸鎬侀泦鍚�")] + // [DisplayName("杩愬姩杞寸姸鎬侀泦鍚�")] + // [TypeConverter(typeof(CollectionCountConvert))] + // [Editor(typeof(ComplexCollectionEditor<PLCMotionDefinition_State>), typeof(UITypeEditor))] + // public List<PLCMotionDefinition_State> MotionStateCollection { get; set; } = new List<PLCMotionDefinition_State>(); + // #endregion + //} + + /// <summary> + /// 鐐逛綅绫诲瀷 + /// </summary> + public enum PosType + { + /// <summary> + /// 鐩寸嚎鎻掕ˉ + /// </summary> + Line = 1, + /// <summary> + /// 鍦嗗姬鎻掕ˉ(鍗婂緞) + /// </summary> + CircleRadius, + /// <summary> + /// 鍦嗗姬鎻掕ˉ(鍦嗗績) + /// </summary> + CircleCenter + } + + public static class GTSCardParameter + { + #region 杩愬姩鍙傛暟 + public static int Dangliang = 1; + public static int AxisCount = 2;//杩愬姩杞存暟閲� + public static short CardNum = Convert.ToInt16(ConfigurationManager.AppSettings["cardNum"]); + public static short fifo = Convert.ToInt16(ConfigurationManager.AppSettings["fifo"]); + public static int FlySpeed = Convert.ToInt32(ConfigurationManager.AppSettings["flySpeed"]); + public static double FlyAcc = Convert.ToDouble(ConfigurationManager.AppSettings["flyAcc"]); + public static int P2PSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["p2pSpeed"]); + public static double P2PAcc = Convert.ToDouble(ConfigurationManager.AppSettings["p2pAcc"]); + public static double P2PDec = Convert.ToDouble(ConfigurationManager.AppSettings["p2pDec"]); + public static int FreeSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["freeSpeed"]); + public static int VelEnd = Convert.ToInt32(ConfigurationManager.AppSettings["velEnd"]);//椋炴媿缁撴潫閫熷害 + public static int HomeSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["homeSpeed"]); + public static int Loading = Convert.ToInt32(ConfigurationManager.AppSettings["loading"]); + //public const short cardn = 0;//杩愬姩鎺у埗鍣ㄥ崱鍙� 榛樿涓猴細0 + //public const short crdn = 1;//鍧愭爣绯诲彿 鍙栧�艰寖鍥达細[1, 2] + //public const short fifo = 0;//鎻掕ˉ缂撳瓨鍖哄彿 鍙栧�艰寖鍥达細[0, 1]锛岄粯璁ゅ�间负锛�0 + //public const int flySpeed = 250;//椋炴媿閫熷害 + //public const double flyAcc = 0.5;//椋炴媿鍔犻�熷害 + //public const int gocatorSpeed = 150;//3D妫�娴嬭酱杩愬姩閫熷害 + //public const int p2pSpeed = 250;//P2P閫熷害 + //public const double p2pAcc = 1;//P2P鍔犻�熷害 + //public const double p2pDec = 1;//P2P鍑忛�熷害 + //public const int calibrationSpeed = 10;//鏍囧畾閫熷害 + //public const int calibrationZ = 19336;//鏍囧畾Z杞撮珮搴� + //public const int barcodeSpeed = 250;//鏉$爜妫�娴嬭酱杩愬姩閫熷害 + //public const int freeSpeed = 250;//闈炴娴嬫椂杞磋繍鍔ㄩ�熷害 + //public const int velEnd = 0;//椋炴媿缁撴潫閫熷害 + //public const int homeSpeed = 50;//鍥為浂閫熷害 + //public const int loading = 80000;//涓婃枡浣嶇疆 + #endregion + + #region IO + /// <summary> + /// 杈撳叆IO榛樿鍊� + /// </summary> + public const int InDefaultValue = 0xFFDA; + /// <summary> + /// 澶圭揣姘旂几 + /// </summary> + public const short EXO_1 = 100;//澶圭揣姘旂几 + /// <summary> + /// 鏃ュ厜鐏� + /// </summary> + public const short EXO_2 = 101;//鏃ュ厜鐏� + /// <summary> + /// 鍏夋簮鍒囨崲 + /// </summary> + public const short EXO_3 = 102;//鍏夋簮鍒囨崲 + /// <summary> + /// 绾㈢伅 + /// </summary> + public const short EXO_4 = 103;//绾㈢伅 + /// <summary> + /// 榛勭伅 + /// </summary> + public const short EXO_5 = 104;//榛勭伅 + /// <summary> + /// 缁跨伅 + /// </summary> + public const short EXO_6 = 105;//缁跨伅 + /// <summary> + /// 铚傞福鍣� + /// </summary> + public const short EXO_7 = 106;//铚傞福鍣� + /// <summary> + /// Gocator X + /// </summary> + public const short EXO_8 = 107;//Gocator X + + /// <summary> + /// 姝i潰鍏�(宸�) + /// </summary> + public const short EXO_9 = 108;//姝i潰鍏�(宸�) + + /// <summary> + /// 姝i潰鍏�(鍚�) + /// </summary> + public const short EXO_10 = 109;//姝i潰鍏�(鍚�) + + /// <summary> + /// 姝i潰鍏�(鍙�) + /// </summary> + public const short EXO_11 = 110;//姝i潰鍏�(鍙�) + + /// <summary> + /// 姝i潰鍏�(鍓�) + /// </summary> + public const short EXO_12 = 111;//姝i潰鍏�(鍓�) + + /// <summary> + /// Gocator Y + /// </summary> + public const short EXO_16 = 115;//Gocator Y + + /// <summary> + /// 杈撳嚭IO榛樿鍊� + /// </summary> + public const int OutDefaultValue = 0xFFF; + /// <summary> + /// 宸﹀惎鍔� + /// </summary> + public const short EXI0 = 0;//宸﹁捣鍔� + /// <summary> + /// 鍙冲惎鍔� + /// </summary> + public const short EXI1 = 1;//鍙宠捣鍔� + /// <summary> + /// 鍋滄 + /// </summary> + public const short EXI2 = 2;//鍋滄 + /// <summary> + /// 澶嶄綅 + /// </summary> + public const short EXI3 = 3;//澶嶄綅 + /// <summary> + /// 鎬ュ仠 + /// </summary> + public const short EXI4 = 4;//鎬ュ仠 + /// <summary> + /// 闂ㄥ紑鍏� + /// </summary> + public const short EXI5 = 5;//闂ㄥ紑鍏� + /// <summary> + /// 瀹夊叏鍏夊箷 + /// </summary> + public const short EXI6 = 6;//瀹夊叏鍏夊箷 + + public const short EXI7 = 7;// + /// <summary> + /// 澶圭揣姘旂几鍘熶綅 + /// </summary> + public const short EXI8 = 8;//澶圭揣姘旂几鍘熶綅 + /// <summary> + /// 澶圭揣姘旂几鍒颁綅 + /// </summary> + public const short EXI9 = 9;//澶圭揣姘旂几鍒颁綅 + #endregion + } +} diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs new file mode 100644 index 0000000..7699c48 --- /dev/null +++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs @@ -0,0 +1,237 @@ +锘縰sing Bro.Common.Base; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Bro.Device.GTSCard +{ + public class GTSCardDriver : DeviceBase, IMotion + { + public List<AxisInfo> GetCurrentAxisInfo(params string[] axisName) + { + throw new NotImplementedException(); + } + + protected override void Init() + { + throw new NotImplementedException(); + } + + protected override void Pause() + { + throw new NotImplementedException(); + } + + protected override void Resume() + { + throw new NotImplementedException(); + } + + protected override void Start() + { + throw new NotImplementedException(); + } + + protected override void Stop() + { + throw new NotImplementedException(); + } + + /// <summary> + /// 鐐逛綅鍒扮偣浣� 杩愬姩 + /// </summary> + /// <param name="cardNum">鍗″彿</param> + /// <param name="axisNum">杞村彿</param> + /// <param name="prfPosition">瑙勫垝浣嶇疆,鍗曚綅姣背</param> + /// <param name="prfVelocity">瑙勫垝閫熷害,鍗曚綅绫虫瘡绉�</param> + public void P2P(short cardNum, short axisNum, int prfPosition, int prfVelocity) + { + GTSCardAPI.TTrapPrm trapprm; + GTSCardAPI.GT_PrfTrap(cardNum, axisNum); + GTSCardAPI.GT_GetTrapPrm(cardNum, axisNum, out trapprm); + trapprm.acc = GTSCardParameter.P2PAcc; + trapprm.dec = GTSCardParameter.P2PDec; + trapprm.smoothTime = 1; + GTSCardAPI.GT_SetTrapPrm(cardNum, axisNum, ref trapprm); + GTSCardAPI.GT_SetPos(cardNum, axisNum, prfPosition * GTSCardParameter.Dangliang); + GTSCardAPI.GT_SetVel(cardNum, axisNum, prfVelocity * GTSCardParameter.Dangliang); + GTSCardAPI.GT_Update(cardNum, 1 << (axisNum - 1)); + } + + /// <summary> + /// Jog杩愬姩 + /// </summary> + /// <param name="cardNum"></param> + /// <param name="axisNum"></param> + /// <param name="velocity">瑙勫垝閫熷害锛屽崟浣嶇背姣忕</param> + public void Jog(short cardNum, short axisNum, double velocity) + { + GTSCardAPI.TJogPrm jogprm = new GTSCardAPI.TJogPrm(); + short rtn = GTSCardAPI.GT_PrfJog(cardNum, axisNum); + jogprm.acc = 1; + jogprm.dec = 1; + GTSCardAPI.GT_SetJogPrm(cardNum, axisNum, ref jogprm);//璁剧疆jog杩愬姩鍙傛暟 + GTSCardAPI.GT_SetVel(cardNum, axisNum, velocity);//璁剧疆鐩爣閫熷害 + GTSCardAPI.GT_Update(cardNum, 1 << (axisNum - 1));//鏇存柊杞磋繍鍔� + } + + /// <summary> + /// 璇诲彇杈撳叆 + /// </summary> + /// <param name="cardNum">鍗″彿</param> + /// <param name="index">杈撳叆鍙�</param> + /// <returns>鏈夎緭鍏ヨ繑鍥瀟rue锛屾棤杈撳叆杩斿洖false</returns> + public bool GetDi(short cardNum, short index) + { + int value; + GTSCardAPI.GT_GetDi(cardNum, GTSCardAPI.MC_GPI, out value); + if ((value & 1 << index) == 0) return true;//鏈夎緭鍏ヨ繑鍥瀟rue + else return false; //鏃犺緭鍏ヨ繑鍥瀎alse + } + + /// <summary> + /// 杈撳嚭 + /// </summary> + /// <param name="cardNumo">鍗″彿</param> + /// <param name="index">杈撳嚭鍙�,杩斿洖1-16</param> + /// <param name="value">0琛ㄧず杈撳嚭锛�1琛ㄧず鍏抽棴</param> + public void WriteOut(short cardNumo, short index, bool value) + { + short outNum = (short)(index % 100 + 1); + switch (value) + { + case true: + { + GTSCardAPI.GT_SetDoBit(cardNumo, GTSCardAPI.MC_GPO, outNum, 0);//鎸変綅杈撳嚭锛�0琛ㄧず杈撳嚭锛�1琛ㄧず鍏抽棴 + } + break; + case false: + { + GTSCardAPI.GT_SetDoBit(cardNumo, GTSCardAPI.MC_GPO, outNum, 1);//鎸変綅杈撳嚭锛�0琛ㄧず杈撳嚭锛�1琛ㄧず鍏抽棴 + } + break; + } + } + + /// <summary> + /// 鍋滄 鏌愪釜杞� + /// </summary> + /// <param name="cardNum"></param> + /// <param name="axisNum"></param> + /// <param name="option">0琛ㄧず骞虫粦鍋滄锛�1琛ㄧず绱ф�ュ仠姝�</param> + public void Stop(short cardNum, short axisNum, short option) + { + GTSCardAPI.GT_Stop(cardNum, 1 << (axisNum - 1), option); + } + + /// <summary> + /// 鍋滄 鏌愪釜杞� + /// </summary> + /// <param name="cardNum"></param> + /// <param name="axisNum">杞村彿</param> + /// <param name="value">鍋滄鏂瑰紡锛宖alse琛ㄧず骞虫粦鍋滄锛宼rue琛ㄧず绱ф�ュ仠姝�</param> + public void Stop(short cardNum, short axisNum, bool value) + { + switch (value) + { + case false: + { + GTSCardAPI.GT_Stop(cardNum, 1 << (axisNum - 1), 0); + } + break; + case true: + { + GTSCardAPI.GT_Stop(cardNum, 1 << (axisNum - 1), 1 << (axisNum - 1)); + + } + break; + } + } + + /// <summary> + /// 鍋滄 鍏ㄩ儴杞� + /// </summary> + /// <param name="cardNum"></param> + /// <param name="value">鍋滄鏂瑰紡锛宖alse琛ㄧず骞虫粦鍋滄锛宼rue琛ㄧず绱ф�ュ仠姝�</param> + public void StopAll(short cardNum, bool value) + { + for (short i = 1; i <= GTSCardParameter.AxisCount; i++) + { + Stop(cardNum, i, value); + } + } + + /// <summary> + /// IO杈撳嚭 + /// </summary> + /// <param name="cardNum">鍗″彿</param> + /// <param name="mdl">妯″潡鍙�</param> + /// <param name="index">IO杈撳嚭</param> + /// <param name="value">true琛ㄧず杈撳嚭锛宖alse琛ㄧず鏃犺緭鍑�</param> + public void MC_WriteDigitalOutput(short cardNum, short mdl, short index, bool value) + { + if (value) + { + GTSCardAPI.GT_SetExtIoBit(cardNum, mdl, index, 0); + } + else + { + GTSCardAPI.GT_SetExtIoBit(cardNum, mdl, index, 1); + } + } + + /// <summary> + /// 璇诲彇IO杈撳嚭鐘舵�� + /// </summary> + /// <param name="cardNumo"></param> + /// <param name="index"></param> + /// <returns></returns> + public bool GetDoSts(short cardNumo, short index) + { + short outNum = 0; + int outSts; + outNum = (short)(index % 100); + GTSCardAPI.GT_GetDo(cardNumo, GTSCardAPI.MC_GPO, out outSts); + if ((outSts & (1 << outNum)) == 0) return true; + else return false; + } + + static object lockObj = new object(); + + /// <summary> + /// 璇诲彇褰撳墠鍊� + /// </summary> + /// <param name="cardNum">鍗″彿</param> + /// <param name="axisNum">杞村彿</param> + /// <returns>杩斿洖褰撳墠鍊硷紝鍗曚綅姣背</returns> + public double GetPosMM(short cardNum, short axisNum) + { + lock (lockObj) + { + double prfpos = 0; uint pclock = 0; + GTSCardAPI.GT_GetPrfPos(cardNum, axisNum, out prfpos, 1, out pclock); + return prfpos / GTSCardParameter.Dangliang; + } + } + + /// <summary> + /// 璇诲彇杞寸姸鎬侊紝鍒ゆ柇鐢垫満鏄惁鍋滄 + /// </summary> + /// <param name="cardNum"></param> + /// <param name="axisNum"></param> + /// <returns></returns> + public bool IsStop(short cardNum, short axisNum) + { + lock (lockObj) + { + int sts = 0; + uint pclock = 0; + GTSCardAPI.GT_GetSts(cardNum, axisNum, out sts, 1, out pclock); + if ((sts & 0x400) == 0) return true;//鍋滄杩斿洖true + else return false; //杩愯涓繑鍥瀎alse + } + } + } +} diff --git a/src/Bro.Device.GTSCard/GtsCardManager.cs b/src/Bro.Device.GTSCard/GtsCardManager.cs new file mode 100644 index 0000000..7be0c3f --- /dev/null +++ b/src/Bro.Device.GTSCard/GtsCardManager.cs @@ -0,0 +1,440 @@ +锘�//using Bro.Common.PubSub; +//using Broc.AOI.Entity; +//using Broc.AOI.Manager; +//using HalconDotNet; +//using Lmi3d.GoSdk; +//using Lmi3d.Zen; +//using Lmi3d.Zen.Io; +//using System; +//using System.Collections.Generic; +//using System.Configuration; +//using System.Diagnostics; +//using System.IO; +//using System.Linq; +//using System.Runtime.InteropServices; +//using System.Threading; +//using System.Threading.Tasks; +//using static Broc.AOI.Manager.LogHelper; + +//namespace Bro.Device.GTSCard +//{ +// public class GtsCardManager +// { +// GtsMotionCard _gts = new GtsMotionCard(); +// int pCount;//浣嶇疆姣旇緝宸茶緭鍑烘鏁� +// bool canStop = false; +// private static GtsIO curValueIo = new GtsIO(); +// CancellationTokenSource cts = new CancellationTokenSource(); +// private static int lastInputValue = Parameter.InDefaultValue; + +// int StopType = 0; //0锛氭湭鏀跺埌鎵嬪姩鍋滄淇″彿 1锛氭敹鍒版敹鍒板仠姝俊鍙� 2锛氭敹鍒版�ュ仠淇″彿 +// public GtsCardManager(ProductManager productManager) +// { +// try +// { +// _product = productManager.GetProductList().Find(x => x.IsDefault); +// Monitor(); +// InitGocatorIO(); +// PubSubCenter.GetInstance().RemoveSubscribers(MessageType.StopType.ToString()); +// PubSubCenter.GetInstance().Subscribe(MessageType.StopType.ToString(), OnStopType); +// gocatorRecord = new GocatorRecord(); +// //gocatorRecord.OnDataDone = OnGocatorDataDone; +// gocatorRecord.Connect(); +// gocatorRecord.GocatorStop(); +// } +// catch (Exception ex) +// { +// Trace.TraceError(ex.ToString()); +// } +// } + +// private object OnStopType(ISubscriber arg1, object arg2, object arg3) +// { +// StopType = (int)arg2; +// Trace.TraceInformation($"鍋滄淇″彿鍙樻洿涓猴細{StopType}"); +// if (StopType > 0) +// { +// Trace.TraceError("鍋滄鍚庤閲嶅惎杞欢"); +// } +// return null; +// } + +// public void InitGocatorIO() +// { +// _gts.WriteOut(Parameter.cardn, Parameter.EXO_8, false); +// _gts.WriteOut(Parameter.cardn, Parameter.EXO_16, false); +// } + + +// public void DoCompare(List<ST_Point> pointList) +// { +// canStop = !canStop; +// GTSCardAPI.T2DComparePrm prm; +// short t; +// short sRtn; +// GTSCardAPI.T2DCompareData[] dataBuf = new GTSCardAPI.T2DCompareData[1]; +// short pStatus, +// pFifo,//褰撳墠绌洪棽fifo +// pFifoCount,//褰撳墠绌洪棽fifo鍓╀綑绌洪棿 +// pBufCount;//FPGA 涓� FIFO 鍓╀綑绌洪棿锛� FPGA 鐨� FIFO 鎬诲ぇ灏忎负 512锛屽惎鍔ㄤ綅缃瘮杈冧箣鍓嶏紝鍘嬪叆鐨勬暟鎹厛杩涘叆 FPGA 鐨� FIFO + +// sRtn = GTSCardAPI.GT_2DCompareClear(0, 0); +// sRtn = GTSCardAPI.GT_2DCompareMode(0, 0, GTSCardAPI.COMPARE2D_MODE_2D); +// prm.encx = Axisn.X; // X 杞翠负1杞� +// prm.ency = Axisn.Y; // Y 杞翠负2杞� +// prm.maxerr = 500; // 鏈�澶ц宸甈ulse +// prm.outputType = 0; // 杈撳嚭绫诲瀷 = 鑴夊啿 +// prm.source = 1; // 姣旇緝婧�0 锛氳鍒�1锛氱紪鐮佸櫒 +// prm.startLevel = 0; //璧峰鐢靛钩鏂瑰紡0锛氫綅缃瘮杈冭緭鍑哄紩鑴氱數骞冲浣� 1锛氫綅缃瘮杈冭緭鍑哄紩鑴氱數骞冲彇鍙� +// prm.threshold = 0; // 鏈�浼樼偣璁$畻闃堝�� +// prm.time = 50; // 鑴夊啿瀹藉害 us +// sRtn = GTSCardAPI.GT_2DCompareSetPrm(0, 0, ref prm); +// sRtn = GTSCardAPI.GT_SetComparePort(0, GTSCardAPI.COMPARE_PORT_HSIO, 0, 1); +// sRtn = GTSCardAPI.GT_2DCompareStart(0, 0); + +// foreach (var point in pointList) +// { +// dataBuf[0].px = point.X - (pointList[0].X + 2000); +// dataBuf[0].py = point.Y - pointList[0].Y; +// do +// { +// t = GTSCardAPI.GT_2DCompareStatus(0, 0, out pStatus, out pCount, out pFifo, out pFifoCount, out pBufCount); +// t = GTSCardAPI.GT_2DCompareData(0, 0, 1, ref dataBuf[0], pFifo);//鍘嬪叆鏁版嵁 +// } while (t != 0); +// } +// } + +// public void ChaBu(List<ST_Point> pointList) +// { +// short sRtn = -1; //Googol杩斿洖鍊兼煡璇� +// GTSCardAPI.TCrdPrm crdPrm = new GTSCardAPI.TCrdPrm(); //鍧愭爣绯诲弬鏁扮粨鏋勪綋 +// int[] posTest = new int[2]; + +// GTSCardAPI.TCrdData temp = new GTSCardAPI.TCrdData();//瀹氫箟鍓嶇灮缂撳瓨鍖哄ぇ灏忎负200娈� +// GTSCardAPI.TCrdData[] crdData = new GTSCardAPI.TCrdData[400]; +// int size = Marshal.SizeOf(temp) * 400; +// IntPtr pCrdData = Marshal.AllocHGlobal(size); + +// //******绗竴姝ュ缓浜岀淮绔嬪潗鏍囩郴1杞碭浜岃酱Y锛屼娇鐢ㄥ潗鏍囩郴1鐨凢IFO0鍘嬪叆鏁版嵁銆� +// crdPrm.dimension = 3; // 寤虹珛涓夌淮鐨勫潗鏍囩郴 +// crdPrm.synVelMax = 500; // 鍧愭爣绯荤殑鏈�澶у悎鎴愰�熷害鏄�: 500 pulse/ms +// crdPrm.synAccMax = 5; // 鍧愭爣绯荤殑鏈�澶у悎鎴愬姞閫熷害鏄�: 5 pulse/ms^2 +// crdPrm.evenTime = 0; // 鍧愭爣绯荤殑鏈�灏忓寑閫熸椂闂翠负0 +// crdPrm.profile1 = 1; // 瑙勫垝鍣�1瀵瑰簲鍒癤杞� +// crdPrm.profile2 = 2; // 瑙勫垝鍣�2瀵瑰簲鍒癥杞� +// crdPrm.profile3 = 3; +// crdPrm.profile4 = 0; +// crdPrm.profile5 = 0; +// crdPrm.profile6 = 0; +// crdPrm.profile7 = 0; // 鑻rofile7 = 1锛岃鍒掑櫒7瀵瑰簲鍒癤杞� +// crdPrm.profile8 = 0; +// crdPrm.setOriginFlag = 1; // 闇�瑕佽缃姞宸ュ潗鏍囩郴鍘熺偣浣嶇疆 +// crdPrm.originPos1 = 0; // 鍔犲伐鍧愭爣绯诲師鐐逛綅缃湪(0,0)锛屽嵆涓庢満搴婂潗鏍囩郴鍘熺偣閲嶅悎 +// crdPrm.originPos2 = 0; +// crdPrm.originPos3 = 0; +// crdPrm.originPos4 = 0; +// crdPrm.originPos5 = 0; +// crdPrm.originPos6 = 0; +// crdPrm.originPos7 = 0; +// crdPrm.originPos8 = 0; +// sRtn = GTSCardAPI.GT_SetCrdPrm(0, 1, ref crdPrm); //蹇呴』鍦ㄨ酱璋冪敤鍋滄鐘舵�佷笅 +// sRtn = GTSCardAPI.GT_CrdClear(0, 1, 0);//娓呴櫎鍧愭爣绯�1 FIFO1涓殑鏁版嵁缂撳瓨 +// // 鍒濆鍖栧潗鏍囩郴1鐨凢IFO0鐨勫墠鐬绘ā鍧� +// sRtn = GTSCardAPI.GT_InitLookAhead(Parameter.cardn, //鍗″彿 +// Parameter.crdn, //鍧愭爣绯� +// Parameter.fifo, //FIFO +// 5, //鎷愯鏃堕棿T +// 5, //accMax +// 200, //鏁版嵁娈礜 +// pCrdData); //缁撴瀯浣揷rdData + +// //*******绗簩姝ュ帇鍏ユ暟鎹紝瓒呰繃4096娈靛惊鐜帇鍏ャ�� +// foreach (var point in pointList) +// { +// //sRtn = mc.GT_LnXY(Parameter.cardn, Parameter.crdn, point.X, point.Y, Parameter.speed, Parameter.synAcc, Parameter.velEnd, Parameter.fifo); +// sRtn = GTSCardAPI.GT_LnXYZ(Parameter.cardn, Parameter.crdn, point.X, point.Y, point.Z.Value, Parameter.flySpeed, Parameter.flyAcc, Parameter.velEnd, Parameter.fifo); +// } +// sRtn = GTSCardAPI.GT_CrdData(Parameter.cardn, Parameter.crdn, System.IntPtr.Zero, Parameter.fifo); +// GTSCardAPI.GT_CrdStart(0, 1, 0); +// } + +// public void On() +// { +// for (int i = 1; i <= Axisn.Count; i++) +// { +// GTSCardAPI.GT_AxisOn(0, (short)i); +// } +// } + +// public void Off() +// { +// for (int i = 1; i <= Axisn.Count; i++) +// { +// GTSCardAPI.GT_AxisOff(0, (short)i); +// } +// } + +// public void GoHome() +// { +// try +// { +// //娓呴櫎鎶ヨ +// ClearGtsAlarm(); + +// Task.Run(() => +// { +// //鍏抽棴Gocator X Y +// _gts.WriteOut(Parameter.cardn, Parameter.EXO_8, false); +// _gts.WriteOut(Parameter.cardn, Parameter.EXO_16, false); +// ////鍒囨崲Gocator鐨凧ob涓洪暱杈笿ob +// //gocatorRecord.GocatorStop(); +// //gocatorRecord.SwitchJob(_product.JobLong); + +// //Z杞村洖鍘熺偣锛岃繑鍥炵數鏈烘柟鍚�,寰呯粨鏉熷悗鍐嶅姩X銆乊杞达紝閬垮厤纰版挒 +// _gts.GoHome(Parameter.cardn, Axisn.Z, GTSCardAPI.HOME_MODE_LIMIT_HOME, -1, 0); +// //X杞村洖鍘熺偣,杩滅鐢垫満 +// _gts.GoHome(Parameter.cardn, Axisn.X, GTSCardAPI.HOME_MODE_LIMIT_HOME, 1, 0); + +// _gts.GoHome(Parameter.cardn, Axisn.Y, GTSCardAPI.HOME_MODE_LIMIT_HOME, 1, 0); + +// while (true) +// { +// Thread.Sleep(100); +// if (_gts.IsStop(0, Axisn.X) && _gts.IsStop(0, Axisn.Y) && _gts.IsStop(0, Axisn.Z) && StopType == 0) +// { +// //鍓嶅線涓婃枡鐐� +// GoLoading(); +// PubSubCenter.GetInstance().Publish(MessageType.IsHome.ToString(), null, null); +// break; +// } +// } +// }); +// } +// catch (Exception ex) +// { +// Trace.TraceError("GoHome寮傚父锛歿0}", ex); +// } +// } + +// public void GoLoading() +// { +// try +// { +// while (true) +// { +// if (_gts.IsStop(0, Axisn.Y)) +// { +// _gts.P2P(Parameter.cardn, Axisn.Y, Parameter.loading, Parameter.freeSpeed); +// break; +// } +// } +// } +// catch (Exception ex) +// { +// Trace.TraceError("GoLoading寮傚父锛歿0}", ex); +// } + +// } + +// public void ClearGtsAlarm() +// { +// int axis_sts; +// uint clk; + +// GTSCardAPI.GT_ClrSts(Parameter.cardn, 1, Axisn.Count); +// for (short i = Axisn.Count; i > 0; i--) +// { +// GTSCardAPI.GT_GetSts(Parameter.cardn, i, out axis_sts, 1, out clk); +// if ((axis_sts & 0x200) == 0) +// { +// var rst = GTSCardAPI.GT_AxisOn(0, i); +// } + +// // 姝f瀬闄愭姤璀� +// if ((axis_sts & 0x20) != 0) +// { +// // 浣嶇疆璇烽浂 +// GTSCardAPI.GT_ZeroPos(Parameter.cardn, 1, Axisn.Count); +// // 璐熷悜绉诲姩 +// _gts.P2P(Parameter.cardn, i, -50, Parameter.homeSpeed); +// } + +// // 璐熸瀬闄愭姤璀� +// if ((axis_sts & 0x40) != 0) +// { +// // 浣嶇疆璇烽浂 +// GTSCardAPI.GT_ZeroPos(Parameter.cardn, 1, Axisn.Count); +// // 姝e悜绉诲姩 +// _gts.P2P(Parameter.cardn, i, 50, Parameter.homeSpeed); +// } +// } + +// // 娓呴櫎鐘舵�� +// GTSCardAPI.GT_ClrSts(Parameter.cardn, 1, Axisn.Count); +// } + +// public void Stop(bool value) +// { +// Task.Run(() => +// { +// try +// { +// _gts.Stop(Parameter.cardn, Axisn.X, value); +// _gts.Stop(Parameter.cardn, Axisn.Y, value); +// _gts.Stop(Parameter.cardn, Axisn.Z, value); +// } +// catch (Exception ex) +// { + +// } +// }); +// } + +// public void GoToFirst(ST_Point point) +// { +// _gts.P2P(Parameter.cardn, Axisn.X, point.X + 2000, Parameter.p2pSpeed); +// _gts.P2P(Parameter.cardn, Axisn.Y, point.Y, Parameter.p2pSpeed); +// _gts.P2P(Parameter.cardn, Axisn.Z, point.Z.Value, Parameter.p2pSpeed); +// while (true) +// { +// if (_gts.IsStop(0, Axisn.X) && _gts.IsStop(0, Axisn.Y) && _gts.IsStop(0, Axisn.Z)) break; +// } +// } + +// //public void ExistSport(int checkId, string barcode, CameraManager cameraManager, List<ST_Point> pointList, List<ST_CheckItem> checkItemExistList, string path) +// //{ +// // cameraManager.SetExposure(Parameter.existExposure); +// // cameraManager.BeginAcquisition(); +// // int speed = 0; + +// // int i = 1; +// // foreach (var point in pointList) +// // { +// // //鍥涗釜姝i潰鍏夛細true琛ㄧず鐔勭伃銆乫alse琛ㄧず浜捣 +// // if (!string.IsNullOrEmpty(point.Light) && point.Light.Contains(",")) +// // { +// // SetLightOn(point.Light); +// // } + +// // speed = Parameter.p2pSpeed; +// // _gts.P2P(Parameter.cardn, Axisn.X, point.X, speed); +// // _gts.P2P(Parameter.cardn, Axisn.Y, point.Y, speed); +// // _gts.P2P(Parameter.cardn, Axisn.Z, point.Z.Value, speed); +// // while (true) +// // { +// // if (_gts.IsStop(0, Axisn.X) && _gts.IsStop(0, Axisn.Y) && _gts.IsStop(0, Axisn.Z) && StopType == 0) break; +// // } + +// // cameraManager.ExistCheck(checkId, barcode, checkItemExistList, i, point, path); +// // CheckProcess checkProcess = i == 1 ? CheckProcess.Begin : i == pointList.Count ? CheckProcess.CheckEnd : CheckProcess.In; +// // i++; +// // } + +// // //鍥涗釜姝i潰鍏夛細true琛ㄧず鐔勭伃銆乫alse琛ㄧず浜捣 +// // SetLightOff(); + +// //} + +// public void Monitor() +// { +// lastInputValue = Parameter.InDefaultValue; +// Task.Factory.StartNew(() => +// { +// while (!cts.IsCancellationRequested) +// { +// try +// { +// Thread.Sleep(100); +// //mc.GT_GetDi(Parameter.cardn, mc.MC_LIMIT_POSITIVE, out curValueIo.Limpos); +// //mc.GT_GetDi(Parameter.cardn, mc.MC_LIMIT_NEGATIVE, out curValueIo.Limneg); +// //mc.GT_GetDi(Parameter.cardn, mc.MC_HOME, out curValueIo.Home); +// //mc.GT_GetDi(Parameter.cardn, mc.MC_ALARM, out curValueIo.Alarm); +// GTSCardAPI.GT_GetDi(Parameter.cardn, GTSCardAPI.MC_GPI, out curValueIo.Input); +// //mc.GT_GetDo(Parameter.cardn, mc.MC_GPO, out curValueIo.Output); +// //if (_gts.IsAlarm()) +// //{ +// // //鎬ュ仠 +// // _gts.Stop(Parameter.cardn, true); +// // // 寮�鍚彁绀虹孩鐏拰澹伴煶 +// // AlarmLight(AlarmType.Red); +// //} +// if (curValueIo.Input != lastInputValue) +// { +// OnMessageIO(); +// lastInputValue = curValueIo.Input; +// } +// } +// catch (Exception ex) +// { +// Trace.TraceError("Monitor: {0}", ex.Message); +// } +// } +// }, cts.Token); +// } + +// //private void OnMessageIO() +// //{ +// // try +// // { +// // //鏍规嵁淇″彿鎵ц鐩稿簲鍔ㄤ綔 +// // for (var i = 0; i < 16; i++) +// // { +// // if ((lastInputValue & (1 << i)) != (curValueIo.Input & (1 << i))) +// // { +// // // 鏈夊彉鍖栧湪鍙戝竷閫氱煡 InputBitIndex-Value(0/1) +// // byte v = (byte)((curValueIo.Input & (1 << i)) >> i); +// // PubSubCenter.GetInstance().Publish(MessageType.MessageIO.ToString(), i, v); +// // } +// // } +// // } +// // catch (Exception ex) +// // { +// // Trace.TraceError("OnServerMessage: {0}", ex.Message); +// // } +// //} + +// //private void SetLightOn(string lights) +// //{ +// // if (lights.Contains("1")) +// // { +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_9, false); +// // } +// // else +// // { +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_9, true); +// // } +// // if (lights.Contains("2")) +// // { +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_10, false); +// // } +// // else +// // { +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_10, true); +// // } +// // if (lights.Contains("3")) +// // { +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_11, false); +// // } +// // else +// // { +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_11, true); +// // } +// // if (lights.Contains("4")) +// // { +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_12, false); +// // } +// // else +// // { +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_12, true); +// // } +// //} + +// //private void SetLightOff() +// //{ +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_10, true); +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_9, true); +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_11, true); +// // _gts.WriteOut(Parameter.cardn, Parameter.EXO_12, true); +// //} +// } +//} diff --git a/src/Bro.Device.GTSCard/GtsIO.cs b/src/Bro.Device.GTSCard/GtsIO.cs new file mode 100644 index 0000000..de2b527 --- /dev/null +++ b/src/Bro.Device.GTSCard/GtsIO.cs @@ -0,0 +1,63 @@ +锘�//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; + +//namespace Bro.Device.GTSCard +//{ +// public class GtsIO +// { +// /// <summary> +// /// 杈撳叆鐐逛綅 +// /// </summary> +// public int Input; + +// /// <summary> +// /// 杈撳嚭鐐逛綅 +// /// </summary> +// public int Output; + +// /// <summary> +// /// 鍥為浂鐐逛綅 +// /// </summary> +// public int Home; + +// /// <summary> +// /// 姝f瀬闄� +// /// </summary> +// public int Limpos; + +// /// <summary> +// /// 璐熸瀬闄� +// /// </summary> +// public int Limneg; + +// /// <summary> +// /// 鎶ヨ淇℃伅 +// /// </summary> +// public int Alarm; + +// /// <summary> +// /// 杞寸姸鎬� +// /// </summary> +// public int AxisSts; + +// /// <summary> +// /// X杞磋鍒掍綅缃� +// /// </summary> +// public double PrfPosX; +// /// <summary> +// /// Y杞磋鍒掍綅缃� +// /// </summary> +// public double PrfPosY; +// /// <summary> +// /// Z杞磋鍒掍綅缃� +// /// </summary> +// public double PrfPosZ; +// /// <summary> +// /// A杞磋鍒掍綅缃� +// /// </summary> +// public double PrfPosA; +// } +//} diff --git a/src/Bro.Device.GTSCard/GtsMotionCard.cs b/src/Bro.Device.GTSCard/GtsMotionCard.cs new file mode 100644 index 0000000..4d5a7da --- /dev/null +++ b/src/Bro.Device.GTSCard/GtsMotionCard.cs @@ -0,0 +1,483 @@ +锘�//using Broc.AOI.Entity; +//using System; +//using System.Collections.Generic; +//using System.Runtime.InteropServices; +//using System.Threading; + +//namespace Bro.Device.GTSCard +//{ +// public class GtsMotionCard +// { +// private const int dangliang = 1; +// private object lockobj = new object();//绾跨▼閿� +// /// <summary> +// /// 鍒濆鍖栧崱 +// /// </summary> +// /// <returns></returns> +// public bool InitCard() +// { +// short rtn; +// rtn = GTSCardAPI.GT_Open(0, 0, 1); //鎵撳紑杩愬姩鎺у埗鍣ㄣ�傚弬鏁板繀椤讳负锛�0,1锛夛紝涓嶈兘淇敼銆� +// //rtn += mc.GT_Reset(0); +// rtn += GTSCardAPI.GT_LoadConfig(0, AppDomain.CurrentDomain.BaseDirectory + @"Gts800.cfg"); +// rtn += GTSCardAPI.GT_ClrSts(0, 1, 8); +// return rtn == 0; + +// } +// /// <summary> +// /// 鎵╁睍妯″潡鍒濆鍖� +// /// </summary> +// /// <param name="cardNum"></param> +// /// <returns></returns> +// public bool ExtIOModuleInit(short cardNum) +// { +// short rtn = 0; +// rtn += GTSCardAPI.GT_OpenExtMdl(cardNum, "gts.dll"); +// rtn += GTSCardAPI.GT_LoadExtConfig(cardNum, "ExtModule.cfg"); +// rtn += GTSCardAPI.GT_ResetExtMdl(cardNum); +// return rtn == 0; +// } +// /// <summary> +// /// 鍥為浂 +// /// </summary> +// /// <param name="cardNum">鍗″彿</param> +// /// <param name="axisNum">杞村彿</param> +// /// <param name="homests">杞村洖鍘熺偣鐘舵��</param> +// public bool GoHome(short cardNum, short axisNum, short home_mode, short home_dir, int homeoffset) +// { +// GTSCardAPI.GT_ZeroPos(cardNum, axisNum, 1); +// GTSCardAPI.THomePrm thomeprm; +// GTSCardAPI.THomeStatus homests; +// short rtn = GTSCardAPI.GT_GetHomePrm(cardNum, axisNum, out thomeprm); +// thomeprm.mode = home_mode;//鍥為浂鏂瑰紡 +// thomeprm.moveDir = home_dir;//鍥為浂鏂瑰悜 +// thomeprm.edge = 0; +// thomeprm.velHigh = 50; +// thomeprm.velLow = 50; +// thomeprm.acc = 50; +// thomeprm.dec = 50; +// thomeprm.searchHomeDistance = 9999999;//鎼滄悳璺濈 +// thomeprm.homeOffset = 0; //鍋忕Щ璺濈 +// thomeprm.escapeStep = 1000; +// rtn = GTSCardAPI.GT_GoHome(cardNum, axisNum, ref thomeprm); //鍚姩鍥為浂 +// //do +// //{ +// // mc.GT_GetHomeStatus(cardNum, axisNum, out homests);//鑾峰彇鍥炲師鐐圭姸鎬� +// //} while (homests.run == 1); // 绛夊緟鎼滅储鍘熺偣鍋滄 +// //mc.GT_ZeroPos(cardNum, axisNum, 1); +// //return true; + +// while (true) +// { +// Thread.Sleep(5); +// GTSCardAPI.GT_GetHomeStatus(cardNum, axisNum, out homests); +// if (homests.run == 0) +// { +// if (homests.error == 0) +// { +// Thread.Sleep(200); +// GTSCardAPI.GT_ZeroPos(cardNum, axisNum, 1); +// } +// return true; +// } +// } +// } + +// /// <summary> +// /// 鐐逛綅鍒扮偣浣� 杩愬姩 +// /// </summary> +// /// <param name="cardNum">鍗″彿</param> +// /// <param name="axisNum">杞村彿</param> +// /// <param name="prfPosition">瑙勫垝浣嶇疆,鍗曚綅姣背</param> +// /// <param name="prfVelocity">瑙勫垝閫熷害,鍗曚綅绫虫瘡绉�</param> +// public void P2P(short cardNum, short axisNum, int prfPosition, int prfVelocity) +// { +// GTSCardAPI.TTrapPrm trapprm; +// GTSCardAPI.GT_PrfTrap(cardNum, axisNum); +// GTSCardAPI.GT_GetTrapPrm(cardNum, axisNum, out trapprm); +// trapprm.acc = Parameter.p2pAcc; +// trapprm.dec = Parameter.p2pDec; +// trapprm.smoothTime = 1; +// GTSCardAPI.GT_SetTrapPrm(cardNum, axisNum, ref trapprm); +// GTSCardAPI.GT_SetPos(cardNum, axisNum, prfPosition * dangliang); +// GTSCardAPI.GT_SetVel(cardNum, axisNum, prfVelocity * dangliang); +// GTSCardAPI.GT_Update(cardNum, 1 << (axisNum - 1)); +// } + +// /// <summary> +// /// 鍋滄 +// /// </summary> +// /// <param name="cardNum"></param> +// /// <param name="axisNum"></param> +// /// <param name="option">0琛ㄧず骞虫粦鍋滄锛�1琛ㄧず绱ф�ュ仠姝�</param> +// public void Stop(short cardNum, short axisNum, short option) +// { +// GTSCardAPI.GT_Stop(cardNum, 1 << (axisNum - 1), option); +// } + +// /// <summary> +// /// 鍋滄 +// /// </summary> +// /// <param name="cardNum"></param> +// /// <param name="value">鍋滄鏂瑰紡锛宖alse琛ㄧず骞虫粦鍋滄锛宼rue琛ㄧず绱ф�ュ仠姝�</param> +// public void Stop(short cardNum, bool value) +// { +// for (short i = 1; i <= Axisn.Count; i++) +// { +// Stop(cardNum, i, value); +// } +// } + +// /// <summary> +// /// Jog杩愬姩 +// /// </summary> +// /// <param name="cardNum"></param> +// /// <param name="axisNum"></param> +// /// <param name="prfvel_ms">瑙勫垝閫熷害锛屽崟浣嶇背姣忕</param> +// public void Jog(short cardNum, short axisNum, double prfvel_ms) +// { +// GTSCardAPI.TJogPrm jogprm = new GTSCardAPI.TJogPrm(); +// short rtn = GTSCardAPI.GT_PrfJog(cardNum, axisNum); +// jogprm.acc = 1; +// jogprm.dec = 1; +// GTSCardAPI.GT_SetJogPrm(cardNum, axisNum, ref jogprm);//璁剧疆jog杩愬姩鍙傛暟 +// GTSCardAPI.GT_SetVel(cardNum, axisNum, prfvel_ms);//璁剧疆鐩爣閫熷害 +// GTSCardAPI.GT_Update(cardNum, 1 << (axisNum - 1));//鏇存柊杞磋繍鍔� +// } +// /// <summary> +// /// 璇诲彇杈撳叆 +// /// </summary> +// /// <param name="cardNum">鍗″彿</param> +// /// <param name="index">杈撳叆鍙�</param> +// /// <returns>鏈夎緭鍏ヨ繑鍥瀟rue锛屾棤杈撳叆杩斿洖false</returns> +// public bool GetDi(short cardNum, short index) +// { +// int value; +// GTSCardAPI.GT_GetDi(cardNum, GTSCardAPI.MC_GPI, out value); +// if ((value & 1 << index) == 0) return true;//鏈夎緭鍏ヨ繑鍥瀟rue +// else return false; //鏃犺緭鍏ヨ繑鍥瀎alse +// } +// /// <summary> +// /// 璇诲彇姝i檺浣� +// /// </summary> +// /// <param name="cardNum">鍗″彿</param> +// /// <param name="axisNum">杞村彿</param> +// /// <returns>0琛ㄧず瑙﹀彂闄愪綅锛�1琛ㄧず娌℃湁瑙﹀彂</returns> +// public bool GetPosLimit(short cardNum, short axisNum) +// { +// int value; +// GTSCardAPI.GT_GetDi(cardNum, GTSCardAPI.MC_LIMIT_POSITIVE, out value); +// if ((value & 1 << axisNum) == 0) return true;////0琛ㄧず瑙﹀彂闄愪綅,杩斿洖true锛� +// else return false; // //1琛ㄧず娌℃湁瑙﹀彂,杩斿洖false +// } +// /// <summary> +// /// 璇诲彇璐熼檺浣� +// /// </summary> +// /// <param name="cardNum">鍗″彿</param> +// /// <param name="axisNum">杞村彿</param> +// /// <returns>0琛ㄧず瑙﹀彂闄愪綅,杩斿洖true锛�1琛ㄧず娌℃湁瑙﹀彂,杩斿洖false</returns> +// public bool GetNegLimit(short cardNum, short axisNum) +// { +// int value; +// GTSCardAPI.GT_GetDi(cardNum, GTSCardAPI.MC_LIMIT_NEGATIVE, out value); +// if ((value & 1 << axisNum) == 0) return true;//0琛ㄧず瑙﹀彂闄愪綅,杩斿洖true锛� +// else return false; //1琛ㄧず娌℃湁瑙﹀彂,杩斿洖false +// } +// /// <summary> +// /// 杈撳嚭 +// /// </summary> +// /// <param name="cardNumo">鍗″彿</param> +// /// <param name="index">杈撳嚭鍙�,杩斿洖1-16</param> +// /// <param name="value">0琛ㄧず杈撳嚭锛�1琛ㄧず鍏抽棴</param> +// public void WriteOut(short cardNumo, short index, bool value) +// { +// short outNum = 0; +// outNum = (short)(index % 100 + 1); +// switch (value) +// { +// case true: +// { +// GTSCardAPI.GT_SetDoBit(cardNumo, GTSCardAPI.MC_GPO, outNum, 0);//鎸変綅杈撳嚭锛�0琛ㄧず杈撳嚭锛�1琛ㄧず鍏抽棴 +// } +// break; +// case false: +// { +// GTSCardAPI.GT_SetDoBit(cardNumo, GTSCardAPI.MC_GPO, outNum, 1);//鎸変綅杈撳嚭锛�0琛ㄧず杈撳嚭锛�1琛ㄧず鍏抽棴 +// } +// break; +// } +// } +// /// <summary> +// /// 璇诲彇IO杈撳嚭鐘舵�� +// /// </summary> +// /// <param name="cardNumo"></param> +// /// <param name="index"></param> +// /// <returns></returns> +// public bool GetDoSts(short cardNumo, short index) +// { +// short outNum = 0; +// int outSts; +// outNum = (short)(index % 100); +// GTSCardAPI.GT_GetDo(cardNumo, GTSCardAPI.MC_GPO, out outSts); +// if ((outSts & (1 << outNum)) == 0) return true; +// else return false; +// } +// /// <summary> +// /// 璇诲彇褰撳墠鍊� +// /// </summary> +// /// <param name="cardNum">鍗″彿</param> +// /// <param name="axisNum">杞村彿</param> +// /// <returns>杩斿洖褰撳墠鍊硷紝鍗曚綅姣背</returns> +// public double GetPosMM(short cardNum, short axisNum) +// { +// lock (lockobj) +// { +// double prfpos = 0; uint pclock = 0; +// GTSCardAPI.GT_GetPrfPos(cardNum, axisNum, out prfpos, 1, out pclock); +// return prfpos / dangliang; +// } +// } + +// /// <summary> +// /// 璇诲彇杞寸姸鎬侊紝鍒ゆ柇鐢垫満鏄惁鍋滄 +// /// </summary> +// /// <param name="cardNum"></param> +// /// <param name="axisNum"></param> +// /// <returns></returns> +// public bool IsStop(short cardNum, short axisNum) +// { +// lock (lockobj) +// { +// int sts = 0; +// uint pclock = 0; +// GTSCardAPI.GT_GetSts(cardNum, axisNum, out sts, 1, out pclock); +// if ((sts & 0x400) == 0) return true;//鍋滄杩斿洖true +// else return false; //杩愯涓繑鍥瀎alse +// } +// } + +// /// <summary> +// /// 浜岀淮浣嶇疆姣旇緝杈撳嚭 +// /// </summary> +// /// <param name="cardNum"></param> +// /// <param name="output_data"></param> +// public void Compare2DOutput(short cardNum, short chn, int[] output_data) +// { +// GTSCardAPI.GT_2DCompareClear(cardNum, chn); +// GTSCardAPI.GT_2DCompareMode(cardNum, chn, GTSCardAPI.COMPARE2D_MODE_2D); +// GTSCardAPI.GT_SetComparePort(cardNum, GTSCardAPI.COMPARE_PORT_GPO, 0, 1); +// GTSCardAPI.T2DComparePrm Prm; +// Prm.encx = 1; +// Prm.ency = 2; +// Prm.maxerr = 300; +// Prm.outputType = 0; +// Prm.source = 0; +// Prm.startLevel = 0; +// Prm.threshold = 10; +// Prm.time = 10000; +// GTSCardAPI.GT_2DCompareSetPrm(cardNum, chn, ref Prm); +// GTSCardAPI.T2DCompareData[] pBuf = new GTSCardAPI.T2DCompareData[5]; +// for (int i = 0; i < output_data.Length / 2; i += 2) +// { +// pBuf[i].px = 1000; +// pBuf[i + 1].py = 1000; +// } +// GTSCardAPI.GT_2DCompareData(cardNum, chn, (short)(output_data.Length / 2), ref pBuf[0], 0); +// GTSCardAPI.GT_2DCompareStart(cardNum, chn); +// } + +// /// <summary> +// /// 鎸変綅璇诲彇鎵╁睍IO杈撳叆鍙� +// /// </summary> +// /// <param name="cardNum"></param> +// /// <param name="mdl"></param> +// /// <param name="index"></param> +// /// <returns></returns> +// public bool GetDiBit(short cardNum, short mdl, short index) +// { +// ushort pvalue = 0; +// GTSCardAPI.GT_GetExtIoBit(cardNum, mdl, index, out pvalue); +// return pvalue == 0; +// } + +// /// <summary> +// /// IO杈撳嚭 +// /// </summary> +// /// <param name="cardNum">鍗″彿</param> +// /// <param name="mdl">妯″潡鍙�</param> +// /// <param name="index">IO杈撳嚭</param> +// /// <param name="value">true琛ㄧず杈撳嚭锛宖alse琛ㄧず鏃犺緭鍑�</param> +// public void MC_WriteDigitalOutput(short cardNum, short mdl, short index, bool value) +// { +// if (value) +// { +// GTSCardAPI.GT_SetExtIoBit(cardNum, mdl, index, 0); +// } +// else +// { +// GTSCardAPI.GT_SetExtIoBit(cardNum, mdl, index, 1); +// } +// } + +// /// <summary> +// /// 寤虹珛鎻掕ˉ鍧愭爣绯� +// /// </summary> +// /// <param name="crdnum">鍧愭爣绯诲彿</param> +// public void BuildCrd(short cardNum, short crdn, short axis_x, short axis_y, double maxVel, double maxAcc, short evenTime) +// { +// GTSCardAPI.TCrdPrm crdPrm; +// crdPrm.dimension = 2; +// crdPrm.synVelMax = maxVel; +// crdPrm.synAccMax = maxAcc; +// crdPrm.evenTime = evenTime; +// crdPrm.profile1 = 1; +// crdPrm.profile2 = 2; +// crdPrm.profile3 = 0; +// crdPrm.profile4 = 0; +// crdPrm.profile5 = 0; +// crdPrm.profile6 = 0; +// crdPrm.profile7 = 0; +// crdPrm.profile8 = 0; +// crdPrm.setOriginFlag = 1; +// crdPrm.originPos1 = 0; +// crdPrm.originPos2 = 0; +// crdPrm.originPos3 = 0; +// crdPrm.originPos4 = 0; +// crdPrm.originPos5 = 0; +// crdPrm.originPos6 = 0; +// crdPrm.originPos7 = 0; +// crdPrm.originPos8 = 0; +// GTSCardAPI.GT_SetCrdPrm(cardNum, crdn, ref crdPrm); +// GTSCardAPI.GT_CrdClear(cardNum, crdn, 0); +// GTSCardAPI.GT_ClrSts(cardNum, 1, 4); +// } +// /// <summary> +// /// 鐩寸嚎鎻掕ˉ +// /// </summary> +// /// <param name="chabunum"></param> +// public void LnXY(short cardNum, short crdn, short fifon, int[] data, double vel, double prfacc, double endVel) +// { +// short run; +// int segment; +// for (int i = 0; i < data.Length; i += 2) +// { +// run = GTSCardAPI.GT_LnXY(cardNum, crdn, data[i], data[i + 1], vel, prfacc, endVel, fifon); +// } +// run = GTSCardAPI.GT_CrdStart(cardNum, crdn, 0); +// //while (true) +// //{ +// // mc.GT_CrdStatus(cardNum, crdn, out run, out segment, fifon); +// // if (run == 0) +// // { +// // break; +// // } +// //} +// } +// /// <summary> +// /// 浠ュ渾蹇冨仛鍦嗗姬鎻掕ˉ +// /// </summary> +// /// <param name="cardNum"></param> +// /// <param name="crdn"></param> +// /// <param name="fifon"></param> +// /// <param name="data"></param> +// /// <param name="xCenter"></param> +// /// <param name="yCenter"></param> +// /// <param name="dir"></param> +// /// <param name="vel"></param> +// /// <param name="prfacc"></param> +// /// <param name="endVel"></param> +// public void ArcXYC(short cardNum, short crdn, short fifon, int[] data, double xCenter, double yCenter, short dir, double vel, double prfacc, double endVel) +// { +// short run; +// int segment; +// for (int i = 0; i < data.Length; i += 2) +// { +// GTSCardAPI.GT_ArcXYC(cardNum, crdn, data[i], data[i + 1], xCenter, yCenter, dir, vel, prfacc, endVel, fifon); +// } +// GTSCardAPI.GT_CrdStart(cardNum, crdn, 0); +// while (true) +// { +// GTSCardAPI.GT_CrdStatus(cardNum, crdn, out run, out segment, fifon); +// if (run == 0) +// { +// break; +// } +// } +// } +// /// <summary> +// /// 浠ュ崐寰勫仛鍦嗗姬鎻掕ˉ +// /// </summary> +// /// <param name="cardNum"></param> +// /// <param name="crdn"></param> +// /// <param name="fifon"></param> +// /// <param name="data"></param> +// /// <param name="rad"></param> +// /// <param name="dir"></param> +// /// <param name="vel"></param> +// /// <param name="prfacc"></param> +// /// <param name="endVel"></param> +// public void ArcXYR(short cardNum, short crdn, short fifon, int[] data, double rad, short dir, double vel, double prfacc, double endVel) +// { +// short run; +// int segment; +// for (int i = 0; i < data.Length; i += 2) +// { +// GTSCardAPI.GT_ArcXYR(cardNum, crdn, data[i], data[i + 1], rad, dir, vel, prfacc, endVel, fifon); +// } +// GTSCardAPI.GT_CrdStart(cardNum, crdn, 0); +// while (true) +// { +// GTSCardAPI.GT_CrdStatus(cardNum, crdn, out run, out segment, fifon); +// if (run == 0) +// { +// break; +// } +// } +// } +// /// <summary> +// /// 鍋滄杩愬姩 +// /// </summary> +// /// <param name="cardNum"></param> +// /// <param name="axisNum">杞村彿</param> +// /// <param name="value">鍋滄鏂瑰紡锛宖alse琛ㄧず骞虫粦鍋滄锛宼rue琛ㄧず绱ф�ュ仠姝�</param> +// public void Stop(short cardNum, short axisNum, bool value) +// { +// switch (value) +// { +// case false: +// { +// GTSCardAPI.GT_Stop(cardNum, 1 << (axisNum - 1), 0); +// } +// break; +// case true: +// { +// GTSCardAPI.GT_Stop(cardNum, 1 << (axisNum - 1), 1 << (axisNum - 1)); + +// } +// break; +// } + +// } + +// /// <summary> +// /// 鏄惁鎶ヨ +// /// bit 0-鍏夋爡锛宐it 1-闂ㄥ紑鍏筹紝bit 2-鎬ュ仠 +// /// 1100 0000 0101 +// /// </summary> +// /// <returns></returns> +// public bool IsAlarm() +// { +// GTSCardAPI.GT_GetDi(Parameter.cardNum, GTSCardAPI.MC_GPI, out var input); +// var bRet = +// ((input & (1 << Parameter.EXI6)) >> Parameter.EXI6) == 1 || +// //((input & (1 << GlueInCommands.EXI1)) >> GlueInCommands.EXI1) == 0 || todo +// ((input & (1 << Parameter.EXI4)) >> Parameter.EXI4) == 1; +// //var bRet = isAlarm || +// // ((input & (1 << Parameter.EXI6)) >> Parameter.EXI6) == 1 || +// // //((input & (1 << GlueInCommands.EXI1)) >> GlueInCommands.EXI1) == 0 || todo +// // ((input & (1 << Parameter.EXI4)) >> Parameter.EXI4) == 1; + +// return bRet; +// } +// } +//} \ No newline at end of file diff --git a/src/Bro.Device.GTSCard/GtsParameter.cs b/src/Bro.Device.GTSCard/GtsParameter.cs new file mode 100644 index 0000000..7e4f21d --- /dev/null +++ b/src/Bro.Device.GTSCard/GtsParameter.cs @@ -0,0 +1,194 @@ +锘�//using System; +//using System.Collections.Generic; +//using System.Configuration; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; + +//namespace Broc.AOI.Entity +//{ +// /// <summary> +// /// 鐐逛綅绫诲瀷 +// /// </summary> +// public enum PointType +// { +// /// <summary> +// /// 鐩寸嚎鎻掕ˉ +// /// </summary> +// Line = 1, +// /// <summary> +// /// 鍦嗗姬鎻掕ˉ(鍗婂緞) +// /// </summary> +// CircleRadius, +// /// <summary> +// /// 鍦嗗姬鎻掕ˉ(鍦嗗績) +// /// </summary> +// CircleCenter +// } + +// public static class Axisn +// { +// public const short X = 1; +// public const short Y = 2; +// public const short Z = 3; +// public const short Count = 4; +// } + +// public static class Parameter +// { +// #region 杩愬姩鍙傛暟 +// public static short cardn = Convert.ToInt16(ConfigurationManager.AppSettings["cardn"]); +// public static short crdn = Convert.ToInt16(ConfigurationManager.AppSettings["crdn"]); +// public static short fifo = Convert.ToInt16(ConfigurationManager.AppSettings["fifo"]); +// public static int flySpeed = Convert.ToInt32(ConfigurationManager.AppSettings["flySpeed"]); +// public static double flyAcc = Convert.ToDouble(ConfigurationManager.AppSettings["flyAcc"]); +// public static int gocatorSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["gocatorSpeed"]); +// public static int p2pSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["p2pSpeed"]); +// public static double p2pAcc = Convert.ToDouble(ConfigurationManager.AppSettings["p2pAcc"]); +// public static double p2pDec = Convert.ToDouble(ConfigurationManager.AppSettings["p2pDec"]); +// public static int calibrationSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["calibrationSpeed"]); +// public static int calibrationZ = Convert.ToInt16(ConfigurationManager.AppSettings["calibrationZ"]); +// public static int barcodeSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["barcodeSpeed"]); +// public static int freeSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["freeSpeed"]); +// public static int velEnd = Convert.ToInt32(ConfigurationManager.AppSettings["velEnd"]); +// public static int homeSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["homeSpeed"]); +// public static int loading = Convert.ToInt32(ConfigurationManager.AppSettings["loading"]); +// //public const short cardn = 0;//杩愬姩鎺у埗鍣ㄥ崱鍙� 榛樿涓猴細0 +// //public const short crdn = 1;//鍧愭爣绯诲彿 鍙栧�艰寖鍥达細[1, 2] +// //public const short fifo = 0;//鎻掕ˉ缂撳瓨鍖哄彿 鍙栧�艰寖鍥达細[0, 1]锛岄粯璁ゅ�间负锛�0 +// //public const int flySpeed = 250;//椋炴媿閫熷害 +// //public const double flyAcc = 0.5;//椋炴媿鍔犻�熷害 +// //public const int gocatorSpeed = 150;//3D妫�娴嬭酱杩愬姩閫熷害 +// //public const int p2pSpeed = 250;//P2P閫熷害 +// //public const double p2pAcc = 1;//P2P鍔犻�熷害 +// //public const double p2pDec = 1;//P2P鍑忛�熷害 +// //public const int calibrationSpeed = 10;//鏍囧畾閫熷害 +// //public const int calibrationZ = 19336;//鏍囧畾Z杞撮珮搴� +// //public const int barcodeSpeed = 250;//鏉$爜妫�娴嬭酱杩愬姩閫熷害 +// //public const int freeSpeed = 250;//闈炴娴嬫椂杞磋繍鍔ㄩ�熷害 +// //public const int velEnd = 0;//椋炴媿缁撴潫閫熷害 +// //public const int homeSpeed = 50;//鍥為浂閫熷害 +// //public const int loading = 80000;//涓婃枡浣嶇疆 +// #endregion + +// #region 鐩告満鍙傛暟 +// public static int flyExposure = Convert.ToInt32(ConfigurationManager.AppSettings["flyExposure"]); +// public static int photoExposure = Convert.ToInt32(ConfigurationManager.AppSettings["photoExposure"]); +// public static int codeExposure = Convert.ToInt32(ConfigurationManager.AppSettings["codeExposure"]); +// public static int existExposure = Convert.ToInt32(ConfigurationManager.AppSettings["existExposure"]); +// public static int holeExposure = Convert.ToInt32(ConfigurationManager.AppSettings["holeExposure"]); +// public static int realTimeExposure = Convert.ToInt32(ConfigurationManager.AppSettings["realTimeExposure"]); + +// //public const int flyExposure = 200;//椋炴媿鏇濆厜 +// //public const int photoExposure = 250000;//鎷嶇収鏇濆厜 +// //public const int codeExposure = 20000;//鏉$爜鏇濆厜 +// //public const int existExposure = 20000;//鏈夋棤妫�娴嬬殑鏇濆厜 +// #endregion + +// #region IO +// /// <summary> +// /// 杈撳叆IO榛樿鍊� +// /// </summary> +// public const int InDefaultValue = 0xFFDA; +// /// <summary> +// /// 澶圭揣姘旂几 +// /// </summary> +// public const short EXO_1 = 100;//澶圭揣姘旂几 +// /// <summary> +// /// 鏃ュ厜鐏� +// /// </summary> +// public const short EXO_2 = 101;//鏃ュ厜鐏� +// /// <summary> +// /// 鍏夋簮鍒囨崲 +// /// </summary> +// public const short EXO_3 = 102;//鍏夋簮鍒囨崲 +// /// <summary> +// /// 绾㈢伅 +// /// </summary> +// public const short EXO_4 = 103;//绾㈢伅 +// /// <summary> +// /// 榛勭伅 +// /// </summary> +// public const short EXO_5 = 104;//榛勭伅 +// /// <summary> +// /// 缁跨伅 +// /// </summary> +// public const short EXO_6 = 105;//缁跨伅 +// /// <summary> +// /// 铚傞福鍣� +// /// </summary> +// public const short EXO_7 = 106;//铚傞福鍣� +// /// <summary> +// /// Gocator X +// /// </summary> +// public const short EXO_8 = 107;//Gocator X + +// /// <summary> +// /// 姝i潰鍏�(宸�) +// /// </summary> +// public const short EXO_9 = 108;//姝i潰鍏�(宸�) + +// /// <summary> +// /// 姝i潰鍏�(鍚�) +// /// </summary> +// public const short EXO_10 = 109;//姝i潰鍏�(鍚�) + +// /// <summary> +// /// 姝i潰鍏�(鍙�) +// /// </summary> +// public const short EXO_11 = 110;//姝i潰鍏�(鍙�) + +// /// <summary> +// /// 姝i潰鍏�(鍓�) +// /// </summary> +// public const short EXO_12 = 111;//姝i潰鍏�(鍓�) + +// /// <summary> +// /// Gocator Y +// /// </summary> +// public const short EXO_16 = 115;//Gocator Y + +// /// <summary> +// /// 杈撳嚭IO榛樿鍊� +// /// </summary> +// public const int OutDefaultValue = 0xFFF; +// /// <summary> +// /// 宸﹀惎鍔� +// /// </summary> +// public const short EXI0 = 0;//宸﹁捣鍔� +// /// <summary> +// /// 鍙冲惎鍔� +// /// </summary> +// public const short EXI1 = 1;//鍙宠捣鍔� +// /// <summary> +// /// 鍋滄 +// /// </summary> +// public const short EXI2 = 2;//鍋滄 +// /// <summary> +// /// 澶嶄綅 +// /// </summary> +// public const short EXI3 = 3;//澶嶄綅 +// /// <summary> +// /// 鎬ュ仠 +// /// </summary> +// public const short EXI4 = 4;//鎬ュ仠 +// /// <summary> +// /// 闂ㄥ紑鍏� +// /// </summary> +// public const short EXI5 = 5;//闂ㄥ紑鍏� +// /// <summary> +// /// 瀹夊叏鍏夊箷 +// /// </summary> +// public const short EXI6 = 6;//瀹夊叏鍏夊箷 +// public const short EXI7 = 7;// +// /// <summary> +// /// 澶圭揣姘旂几鍘熶綅 +// /// </summary> +// public const short EXI8 = 8;//澶圭揣姘旂几鍘熶綅 +// /// <summary> +// /// 澶圭揣姘旂几鍒颁綅 +// /// </summary> +// public const short EXI9 = 9;//澶圭揣姘旂几鍒颁綅 +// #endregion +// } +//} diff --git a/src/Bro.Device.GTSCard/GtsPos.cs b/src/Bro.Device.GTSCard/GtsPos.cs new file mode 100644 index 0000000..8882cf2 --- /dev/null +++ b/src/Bro.Device.GTSCard/GtsPos.cs @@ -0,0 +1,78 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Bro.Device.GTSCard +{ + /// <summary> + /// 鍥洪珮鐐逛綅缁撴瀯 + /// </summary> + public class GtsPos + { + /// <summary> + /// 鐐逛綅绫诲瀷 + /// </summary> + public PosType Type; + + /// <summary> + /// 鎻掕ˉ娈� x 杞寸粓鐐瑰潗鏍囧��,鍙栧�艰寖鍥达細[-1073741823, 1073741823]锛屽崟浣嶏細pulse + /// </summary> + public int X; + + /// <summary> + /// 鎻掕ˉ娈� y 杞寸粓鐐瑰潗鏍囧�笺�傚彇鍊艰寖鍥达細[-1073741823, 1073741823]锛屽崟浣嶏細pulse + /// </summary> + public int Y; + + /// <summary> + /// 鎻掕ˉ娈� z 杞寸粓鐐瑰潗鏍囧�笺�傚彇鍊艰寖鍥达細[-1073741823, 1073741823]锛屽崟浣嶏細pulse + /// </summary> + public int Z; + + /// <summary> + /// 鍦嗗姬鎻掕ˉ鐨勫渾蹇� x 鏂瑰悜鐩稿浜庤捣鐐逛綅缃殑鍋忕Щ閲忋�� + /// </summary> + public double CenterX; + + /// <summary> + /// 鍦嗗姬鎻掕ˉ鐨勫渾蹇� y 鏂瑰悜鐩稿浜庤捣鐐逛綅缃殑鍋忕Щ閲� + /// </summary> + public double CenterY; + + /// <summary> + /// 鍦嗗姬鎻掕ˉ鐨勫渾寮у崐寰勫�笺�傚彇鍊艰寖鍥达細[-1073741823, 1073741823]锛屽崟浣嶏細pulse銆� + /// 鍗婂緞涓烘鏃讹紝琛ㄧず鍦嗗姬涓哄皬浜庣瓑浜� 180掳鍦嗗姬銆� + /// 鍗婂緞涓鸿礋鏃讹紝琛ㄧず鍦嗗姬涓哄ぇ浜� 180掳鍦嗗姬銆� + /// 鍗婂緞鎻忚堪鏂瑰紡涓嶈兘鐢ㄦ潵鎻忚堪鏁村渾銆� + /// </summary> + public double Radius; + + /// <summary> + /// 鍦嗗姬鐨勬棆杞柟鍚戙�� 0锛氶『鏃堕拡鍦嗗姬銆� 1锛氶�嗘椂閽堝渾寮� + /// </summary> + public short CircleDir; + + /// <summary> + /// 鎻掕ˉ娈电殑鐩爣鍚堟垚閫熷害銆傚彇鍊艰寖鍥达細(0, 32767)锛屽崟浣嶏細pulse/ms銆� + /// </summary> + public double Vel; + + /// <summary> + /// 鎻掕ˉ娈电殑鍚堟垚鍔犻�熷害銆傚彇鍊艰寖鍥达細(0, 32767)锛屽崟浣嶏細pulse/ms2銆� + /// </summary> + public double Acc; + + /// <summary> + /// 鎻掕ˉ娈电殑缁堢偣閫熷害銆傚彇鍊艰寖鍥达細[0, 32767)锛屽崟浣嶏細pulse/ms銆� + /// 璇ュ�煎彧鏈夊湪娌℃湁浣跨敤 鍓嶇灮棰勫鐞嗗姛鑳芥椂鎵嶆湁鎰忎箟锛屽惁鍒欒鍊兼棤鏁堛�傞粯璁ゅ�间负锛�0銆� + /// </summary> + public double EndVel; + + /// <summary> + /// 鍏宠仈瀛楁 + /// </summary> + public int CameraPoSq { get; set; } + } +} diff --git a/src/Bro.Device.GTSCard/Properties/AssemblyInfo.cs b/src/Bro.Device.GTSCard/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..507b541 --- /dev/null +++ b/src/Bro.Device.GTSCard/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +锘縰sing System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅 +// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼 +// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭�� +[assembly: AssemblyTitle("Bro.Device.GTSCard")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Bro.Device.GTSCard")] +[assembly: AssemblyCopyright("Copyright 漏 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷 +//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷 +//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆� +[assembly: ComVisible(false)] + +// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID +[assembly: Guid("b536003e-70ba-4701-b8fd-bafa303ab4e2")] + +// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�: +// +// 涓荤増鏈� +// 娆$増鏈� +// 鐢熸垚鍙� +// 淇鍙� +// +//鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊� +//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Bro.M071.Process.DBManager/App.config b/src/Bro.M071.Process.DBManager/App.config new file mode 100644 index 0000000..1c8faee --- /dev/null +++ b/src/Bro.M071.Process.DBManager/App.config @@ -0,0 +1,36 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<configuration> + <configSections> + <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> + <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> + <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> + <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> + </configSections> + <system.data> + <DbProviderFactories> + <remove invariant="System.Data.SQLite.EF6" /> + <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> + <remove invariant="System.Data.SQLite" /> + <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /> + </DbProviderFactories> + </system.data> + <entityFramework> + <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> + <providers> + <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> + <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> + </providers> + </entityFramework> + <runtime> + <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> + <dependentAssembly> + <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-1.0.112.0" newVersion="1.0.112.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Data.SQLite.EF6" publicKeyToken="db937bc2d44ff139" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-1.0.112.0" newVersion="1.0.112.0" /> + </dependentAssembly> + </assemblyBinding> + </runtime> +<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /></startup></configuration> diff --git a/src/Bro.M071.Process.DBManager/Bro.M071.Process.DBManager.csproj b/src/Bro.M071.Process.DBManager/Bro.M071.Process.DBManager.csproj new file mode 100644 index 0000000..d036a08 --- /dev/null +++ b/src/Bro.M071.Process.DBManager/Bro.M071.Process.DBManager.csproj @@ -0,0 +1,103 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props" Condition="Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" /> + <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>{230B0FFF-F6AF-45FE-AAF7-B4B66250DD58}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Bro.Process.DBManager</RootNamespace> + <AssemblyName>Bro.Process.DBManager</AssemblyName> + <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <NuGetPackageImportStamp> + </NuGetPackageImportStamp> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\..\packages\EntityFramework.6.4.0\lib\net45\EntityFramework.dll</HintPath> + </Reference> + <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\..\packages\EntityFramework.6.4.0\lib\net45\EntityFramework.SqlServer.dll</HintPath> + </Reference> + <Reference Include="SQLite.CodeFirst, Version=1.5.3.29, Culture=neutral, PublicKeyToken=eb96ba0a78d831a7, processorArchitecture=MSIL"> + <HintPath>..\..\packages\SQLite.CodeFirst.1.5.3.29\lib\net45\SQLite.CodeFirst.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.ComponentModel.DataAnnotations" /> + <Reference Include="System.Configuration" /> + <Reference Include="System.Core" /> + <Reference Include="System.Data.SQLite, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net451\System.Data.SQLite.dll</HintPath> + </Reference> + <Reference Include="System.Data.SQLite.EF6, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.EF6.1.0.112.0\lib\net451\System.Data.SQLite.EF6.dll</HintPath> + </Reference> + <Reference Include="System.Data.SQLite.EF6.Migrations, Version=1.0.106.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.EF6.Migrations.1.0.106\lib\System.Data.SQLite.EF6.Migrations.dll</HintPath> + </Reference> + <Reference Include="System.Data.SQLite.Linq, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.Linq.1.0.112.0\lib\net451\System.Data.SQLite.Linq.dll</HintPath> + </Reference> + <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="ProductionDetectionImageRecordsManager.cs" /> + <Compile Include="ProductionDetectionRecordsDetailManager.cs" /> + <Compile Include="ProductionDetectionRecordsManager.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\Bro.Common.Model\Bro.Common.Model.csproj"> + <Project>{1A3CBFE7-3F78-42C3-95C5-10360450DBEA}</Project> + <Name>Bro.Common.Model</Name> + </ProjectReference> + <ProjectReference Include="..\Bro.Common.Device\Bro.Common.Device.csproj"> + <Project>{987308DD-8BAA-463A-94E2-77D62E01A5BF}</Project> + <Name>Bro.Common.Device</Name> + </ProjectReference> + <ProjectReference Include="..\Bro.M071.Process.Model\Bro.M071.Process.Model.csproj"> + <Project>{AD645C48-5811-4B1E-B81F-D35D5E6B577F}</Project> + <Name>Bro.M071.Process.Model</Name> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + <None Include="packages.config" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> + <PropertyGroup> + </PropertyGroup> + <Error Condition="!Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props'))" /> + <Error Condition="!Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets'))" /> + <Error Condition="!Exists('..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets'))" /> + </Target> + <Import Project="..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets" Condition="Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" /> + <Import Project="..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets" Condition="Exists('..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets')" /> +</Project> \ No newline at end of file diff --git a/src/Bro.M071.Process.DBManager/ProductionDetectionImageRecordsManager.cs b/src/Bro.M071.Process.DBManager/ProductionDetectionImageRecordsManager.cs new file mode 100644 index 0000000..49f5e9d --- /dev/null +++ b/src/Bro.M071.Process.DBManager/ProductionDetectionImageRecordsManager.cs @@ -0,0 +1,303 @@ +锘�////using Bro.Process.Common.Helper; +//using Bro.Common.Helper; +//using Bro.Process.Model; +//using Bro.Process.Model.Model; +//using System; +//using System.Collections; +//using System.Collections.Generic; +//using System.Configuration; +//using System.Data; +//using System.Data.Common; +//using System.Data.SQLite; +//using System.Diagnostics; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; + +//namespace Bro.M071.Process.DBManager +//{ +// public class ProductionDetectionImageRecordsManager : ModelManager<ProductionDetectionImageRecords> +// { +// DbProviderFactory Dbfactory = SQLiteFactory.Instance; +// protected override void ActionBeforeNewModel(DBModel context, ProductionDetectionImageRecords config) +// { +// CheckProductionCodeDuplicate(context, config); +// } + +// protected override void ActionBeforeUpdateModel(DBModel context, ProductionDetectionImageRecords config) +// { +// CheckProductionCodeDuplicate(context, config); +// } + +// private void CheckProductionCodeDuplicate(DBModel context, ProductionDetectionImageRecords config) +// { +// //if (context.ProductionDetectionImageRecords.Any(u => u.IS_DELETED == 0 +// // && u.ID != config.ID +// // && u.PRODUCTION_CODE == config.PRODUCTION_CODE)) +// { +// //throw new ProcessException("鏂板鎴栦慨鏀圭殑浜у搧閰嶇疆淇℃伅鐨勪骇鍝佷唬鐮佷笉鑳介噸澶�", null); +// } +// } + +// public List<ProductionDetectionImageRecords> GetProductionDetectionImageRecords(string productionBatchNO, string pid) +// { +// using (DBModel context = new DBModel()) +// { +// var list = context.ProductionDetectionImageRecords.Where(u => u.IS_DELETED == 0); + +// if (!string.IsNullOrWhiteSpace(productionBatchNO)) +// { +// list = list.Where(u => u.ProductionBatchNO.Contains(productionBatchNO)); +// } +// if (!string.IsNullOrWhiteSpace(pid)) +// { +// list = list.Where(u => u.PId.Contains(pid)); +// } + +// var resultList = list.ToList(); +// return resultList; +// } +// } +// //public List<ProductionStatistics_Dto> GetOperationRecordsList(OperationRecordsRequest request) +// //{ +// // using (DBModel context = new DBModel()) +// // { +// // var oList = context.OperationRecords.Where(u => u.IS_DELETED == 0); +// // var pList = context.ProductionDetectionRecords.Where(u => u.IS_DELETED == 0); +// // if (!string.IsNullOrWhiteSpace(request.ProductionBatchNO)) +// // { +// // oList = oList.Where(u => u.ProductionBatchNO.Contains(request.ProductionBatchNO)); +// // } +// // if (!string.IsNullOrWhiteSpace(request.UserNO)) +// // { +// // oList = oList.Where(u => u.UserNO.Contains(request.UserNO)); +// // } +// // if (request.StartTime != null) +// // { +// // oList = oList.Where(u => u.OperationStartTime >= request.StartTime); +// // } +// // if (request.EndTime != null) +// // { +// // oList = oList.Where(u => u.OperationStartTime <= request.EndTime); +// // } + +// // var query = from operationRecords in oList +// // join productionDetectionRecords in pList +// // on operationRecords.ID equals productionDetectionRecords.OperationRecordsId +// // into opList +// // select new ProductionStatistics_Dto +// // { +// // OperationRecordsRowData = operationRecords, +// // BatchProductionTotalCount = opList.Where(u => u.ProductionBatchNO == operationRecords.ProductionBatchNO).Count(), +// // BatchProductionOKCount = opList.Where(u => u.ProductionBatchNO == operationRecords.ProductionBatchNO && u.Result == "OK").Count(), +// // BatchProductionNGCount = opList.Where(u => u.ProductionBatchNO == operationRecords.ProductionBatchNO && u.Result == "NG").Count(), +// // BatchProductionTBDCount = opList.Where(u => u.ProductionBatchNO == operationRecords.ProductionBatchNO && u.Result == "TBD").Count(), +// // IsSelected = false, +// // }; +// // var pageList = query.OrderBy(u => u.OperationRecordsRowData.OperationStartTime).ToPagedList(request); +// // request.TotalNum = oList.Count(); +// // return pageList; +// // } +// //} +// public List<ProductionDetectionImageRecords_Dto> GetProductionDetectionImageRecordsPagedList(ProductionDetectionImageRecordsRequest request) +// { +// using (DBModel context = new DBModel()) +// { +// var imageRecordsList = context.ProductionDetectionImageRecords.Where(u => u.IS_DELETED == 0); +// var detectionRecordsList = context.ProductionDetectionRecordsDetail.Where(u => u.IS_DELETED == 0); +// var manualDetectionRecordsList = context.ManualDetectionRecords.Where(u => u.IS_DELETED == 0); +// if (!string.IsNullOrWhiteSpace(request.ProductionBatchNO)) +// { +// imageRecordsList = imageRecordsList.Where(u => u.ProductionBatchNO.Contains(request.ProductionBatchNO)); +// } +// if (!string.IsNullOrWhiteSpace(request.PId)) +// { +// imageRecordsList = imageRecordsList.Where(u => u.PId.Contains(request.PId)); +// } +// if (!string.IsNullOrWhiteSpace(request.Detection)) +// { +// imageRecordsList = imageRecordsList.Where(u => u.Detection.Contains(request.Detection)); +// } +// if (!string.IsNullOrWhiteSpace(request.DefectName)) +// { +// imageRecordsList = imageRecordsList.Where(u => u.DefectNameList.Contains(request.DefectName)); +// } +// if (!string.IsNullOrWhiteSpace(request.ManualDefectName)) +// { +// imageRecordsList = imageRecordsList.Where(u => u.ManualDefectNameList.Contains(request.ManualDefectName)); +// } +// if (!string.IsNullOrWhiteSpace(request.Result)) +// { +// imageRecordsList = imageRecordsList.Where(u => u.Result == request.Result); +// } +// if (!string.IsNullOrWhiteSpace(request.ManualResult)) +// { +// manualDetectionRecordsList = manualDetectionRecordsList.Where(u => u.ManualResult == request.ManualResult); +// } +// if (request.StartTime != null) +// { +// imageRecordsList = imageRecordsList.Where(u => u.Time >= request.StartTime); +// } +// if (request.EndTime != null) +// { +// imageRecordsList = imageRecordsList.Where(u => u.Time <= request.EndTime); +// } + +// var query = from imageRecord in imageRecordsList +// join manualDetectionRecords in manualDetectionRecordsList on imageRecord.OriginalImgPath equals manualDetectionRecords.OriginalImgPath +// join detectionRecords in detectionRecordsList on imageRecord.ID equals detectionRecords.ImageRecordId +// into imageDetectionRecord + +// select new ProductionDetectionImageRecords_Dto +// { +// ProductionDetectionImageRecordsRowData = imageRecord, +// ManualDetectionRecords = manualDetectionRecords, +// ProductionDetectionRecordsDetailList = detectionRecordsList.Where(u => u.ImageRecordId == imageRecord.ID) +// }; +// var pageList = query.OrderBy(u => u.ProductionDetectionImageRecordsRowData.CREATE_TIME).ToPagedList(request); +// request.TotalNum = imageRecordsList.Count(); + +// return pageList; +// } +// } + +// public ProductionDetectionImageRecords GetConfigByProductionCode(string productionCode) +// { +// using (DBModel context = new DBModel()) +// { +// //ProductionDetectionImageRecords RR= context.ProductionDetectionImageRecords.FirstOrDefault(u => u.IS_DELETED == 0 && u.PRODUCTION_CODE == productionCode); +// //return RR; +// return new ProductionDetectionImageRecords(); +// } +// } +// public void ADOBatchAdd(List<ProductionDetectionImageRecords> records) +// { +// Hashtable SQLStringList = new Hashtable(); +// try +// { +// var idList = records.Select(u => u.ID).ToList(); +// var disIdList = idList.Distinct().ToList(); +// if (idList.Count != disIdList.Count)//鏈夐噸澶峣d +// { +// throw new ProcessException("寮傚父锛氭湁閲嶅id:" + idList.ToString(), null); +// } +// //foreach (var record in records) +// //{ +// // if (IsExistId(record.ID)) +// // { +// // throw new ProcessException("寮傚父锛氭湁閲嶅id:" + record.ID, null); +// // } +// // StringBuilder strSql = new StringBuilder(); +// // strSql.Append("insert into ProductionDetectionImageRecords ("); +// // strSql.Append("ID,ProductionBatchNO,PId,Result,Time,Detection,DefectName,Probability,Uncertainty,DefectX,DefectY,DefectWidth,DefectHeight, RawImgPath,DefectImgPath,ImageTime,PreElapsed,DefectElapsed,AfterElapsed,TotalElapsed,PreTreatedFlag,DetectionType, SpecStandard, SpecActualValue,IS_DISABLED,IS_DELETED,CREATE_USER,CREATE_TIME, UPDATE_USER,UPDATE_TIME"); +// // strSql.Append(")values ("); +// // strSql.Append("@ID,@ProductionBatchNO,@PId,@Result,@Time,@Detection,@DefectName,@Probability,@Uncertainty,@DefectX,@DefectY,@DefectWidth,@DefectHeight,@RawImgPath,@DefectImgPath,@ImageTime,@PreElapsed,@DefectElapsed,@AfterElapsed,@TotalElapsed,@PreTreatedFlag,@DetectionType,@SpecStandard,@SpecActualValue,@IS_DISABLED,@IS_DELETED,@CREATE_USER,@CREATE_TIME,@UPDATE_USER,@UPDATE_TIME)"); +// // List<SQLiteParameter> parameters = new List<SQLiteParameter>(); +// // parameters.Add(new SQLiteParameter("@ID", record.ID)); +// // parameters.Add(new SQLiteParameter("@ProductionBatchNO", record.ProductionBatchNO)); +// // parameters.Add(new SQLiteParameter("@PId", record.PId)); +// // parameters.Add(new SQLiteParameter("@Result", record.Result)); +// // parameters.Add(new SQLiteParameter("@Time", record.Time)); +// // parameters.Add(new SQLiteParameter("@Detection", record.Detection)); +// // parameters.Add(new SQLiteParameter("@DefectName", record.DefectName)); +// // parameters.Add(new SQLiteParameter("@Probability", record.Probability)); +// // parameters.Add(new SQLiteParameter("@Uncertainty", record.Uncertainty)); +// // parameters.Add(new SQLiteParameter("@DefectX", record.DefectX)); +// // parameters.Add(new SQLiteParameter("@DefectY", record.DefectY)); +// // parameters.Add(new SQLiteParameter("@DefectWidth", record.DefectWidth)); +// // parameters.Add(new SQLiteParameter("@DefectHeight", record.DefectHeight)); +// // parameters.Add(new SQLiteParameter("@RawImgPath", record.RawImgPath)); +// // parameters.Add(new SQLiteParameter("@DefectImgPath", record.DefectImgPath)); +// // parameters.Add(new SQLiteParameter("@ImageTime", record.ImageTime)); +// // parameters.Add(new SQLiteParameter("@PreElapsed", record.PreElapsed)); +// // parameters.Add(new SQLiteParameter("@DefectElapsed", record.DefectElapsed)); +// // parameters.Add(new SQLiteParameter("@AfterElapsed", record.AfterElapsed)); +// // parameters.Add(new SQLiteParameter("@TotalElapsed", record.TotalElapsed)); +// // parameters.Add(new SQLiteParameter("@PreTreatedFlag", record.PreTreatedFlag)); +// // parameters.Add(new SQLiteParameter("@DetectionType", record.DetectionType)); +// // parameters.Add(new SQLiteParameter("@SpecStandard", record.SpecStandard)); +// // parameters.Add(new SQLiteParameter("@SpecActualValue", record.SpecActualValue)); +// // parameters.Add(new SQLiteParameter("@IS_DISABLED", record.IS_DISABLED)); +// // parameters.Add(new SQLiteParameter("@IS_DELETED", record.IS_DELETED)); +// // parameters.Add(new SQLiteParameter("@CREATE_USER", record.CREATE_USER)); +// // parameters.Add(new SQLiteParameter("@CREATE_TIME", record.CREATE_TIME)); +// // parameters.Add(new SQLiteParameter("@UPDATE_USER", record.UPDATE_USER)); +// // parameters.Add(new SQLiteParameter("@UPDATE_TIME", record.UPDATE_TIME)); + +// // SQLStringList.Add(strSql, parameters.ToArray()); +// //} +// SQLiteHelper.ExecuteSqlTran(SQLStringList); //浣跨敤鏁版嵁搴撲簨鍔� +// } +// catch (Exception ex) +// { +// throw new ProcessException(SQLStringList.ToString() + ex.Message, null); +// } +// } + +// public void InserPatch(List<ProductionDetectionImageRecords> records) +// { +// try +// { +// using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) +// { +// using (SQLiteCommand insertRngCmd = (SQLiteCommand)conn.CreateCommand()) +// { +// StringBuilder strSql = new StringBuilder(); +// strSql.Append("insert into ProductionDetectionImageRecords ("); +// strSql.Append("ID,ProductionBatchNO,PId,ManualResult,Result,Time,DetectionSource,Detection,DefectNameList,ManualDefectNameList,RawImgPath,DefectImgPath,ImageTime,PreElapsed,DefectElapsed,AfterElapsed,TotalElapsed,PreTreatedFlag,OriginalImgPath,IS_DISABLED,IS_DELETED,CREATE_USER,CREATE_TIME, UPDATE_USER,UPDATE_TIME"); +// strSql.Append(")values ("); +// strSql.Append("@ID,@ProductionBatchNO,@PId,@ManualResult,@Result,@Time,@DetectionSource,@Detection,@DefectNameList,@ManualDefectNameList,@RawImgPath,@DefectImgPath,@ImageTime,@PreElapsed,@DefectElapsed,@AfterElapsed,@TotalElapsed,@PreTreatedFlag,@OriginalImgPath,@IS_DISABLED,@IS_DELETED,@CREATE_USER,@CREATE_TIME,@UPDATE_USER,@UPDATE_TIME)"); + +// insertRngCmd.CommandText = strSql.ToString(); +// conn.Open(); +// var transaction = conn.BeginTransaction(); + +// foreach (var record in records) +// { +// insertRngCmd.Parameters.AddWithValue("@ID", record.ID); +// insertRngCmd.Parameters.AddWithValue("@ProductionBatchNO", record.ProductionBatchNO); +// insertRngCmd.Parameters.AddWithValue("@PId", record.PId); +// insertRngCmd.Parameters.AddWithValue("@ManualResult", record.ManualResult); +// insertRngCmd.Parameters.AddWithValue("@Result", record.Result); +// insertRngCmd.Parameters.AddWithValue("@Time", record.Time); +// insertRngCmd.Parameters.AddWithValue("@DetectionSource", record.DetectionSource); +// insertRngCmd.Parameters.AddWithValue("@Detection", record.Detection); +// insertRngCmd.Parameters.AddWithValue("@DefectNameList", record.DefectNameList); +// insertRngCmd.Parameters.AddWithValue("@ManualDefectNameList", record.ManualDefectNameList); +// insertRngCmd.Parameters.AddWithValue("@RawImgPath", record.RawImgPath); +// insertRngCmd.Parameters.AddWithValue("@DefectImgPath", record.DefectImgPath); +// insertRngCmd.Parameters.AddWithValue("@ImageTime", record.ImageTime); +// insertRngCmd.Parameters.AddWithValue("@PreElapsed", record.PreElapsed); +// insertRngCmd.Parameters.AddWithValue("@DefectElapsed", record.DefectElapsed); +// insertRngCmd.Parameters.AddWithValue("@AfterElapsed", record.AfterElapsed); +// insertRngCmd.Parameters.AddWithValue("@TotalElapsed", record.TotalElapsed); +// insertRngCmd.Parameters.AddWithValue("@PreTreatedFlag", record.PreTreatedFlag); +// insertRngCmd.Parameters.AddWithValue("@OriginalImgPath", record.OriginalImgPath); +// insertRngCmd.Parameters.AddWithValue("@IS_DISABLED", record.IS_DISABLED); +// insertRngCmd.Parameters.AddWithValue("@IS_DELETED", record.IS_DELETED); +// insertRngCmd.Parameters.AddWithValue("@CREATE_USER", record.CREATE_USER); +// insertRngCmd.Parameters.AddWithValue("@CREATE_TIME", record.CREATE_TIME); +// insertRngCmd.Parameters.AddWithValue("@UPDATE_USER", record.UPDATE_USER); +// insertRngCmd.Parameters.AddWithValue("@UPDATE_TIME", record.UPDATE_TIME); +// insertRngCmd.ExecuteNonQuery(); +// } +// transaction.Commit(); +// } +// } +// } +// catch (Exception ex) +// { +// throw new ProcessException(ex.Message, null); +// } +// } + +// public bool IsExistId(string id) +// { +// using (DBModel context = new DBModel()) +// { +// ProductionDetectionImageRecords RR = context.ProductionDetectionImageRecords.FirstOrDefault(u => u.ID == id); +// return RR != null; +// } +// } +// } +//} diff --git a/src/Bro.M071.Process.DBManager/ProductionDetectionRecordsDetailManager.cs b/src/Bro.M071.Process.DBManager/ProductionDetectionRecordsDetailManager.cs new file mode 100644 index 0000000..d12f104 --- /dev/null +++ b/src/Bro.M071.Process.DBManager/ProductionDetectionRecordsDetailManager.cs @@ -0,0 +1,248 @@ +锘�////using Bro.Process.Common.Helper; +//using Bro.Common.Helper; +//using Bro.Process.Model; +//using Bro.Process.Model.Model; +//using System; +//using System.Collections; +//using System.Collections.Generic; +//using System.Configuration; +//using System.Data; +//using System.Data.Common; +//using System.Data.SQLite; +//using System.Diagnostics; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; + +//namespace Bro.M071.Process.DBManager +//{ +// public class ProductionDetectionRecordsDetailManager : ModelManager<ProductionDetectionRecordsDetail> +// { +// DbProviderFactory Dbfactory = SQLiteFactory.Instance; +// protected override void ActionBeforeNewModel(DBModel context, ProductionDetectionRecordsDetail config) +// { +// CheckProductionCodeDuplicate(context, config); +// } + +// protected override void ActionBeforeUpdateModel(DBModel context, ProductionDetectionRecordsDetail config) +// { +// CheckProductionCodeDuplicate(context, config); +// } + +// private void CheckProductionCodeDuplicate(DBModel context, ProductionDetectionRecordsDetail config) +// { +// //if (context.ProductionDetectionRecordsDetail.Any(u => u.IS_DELETED == 0 +// // && u.ID != config.ID +// // && u.PRODUCTION_CODE == config.PRODUCTION_CODE)) +// { +// //throw new ProcessException("鏂板鎴栦慨鏀圭殑浜у搧閰嶇疆淇℃伅鐨勪骇鍝佷唬鐮佷笉鑳介噸澶�", null); +// } +// } + +// public List<ProductionDetectionRecordsDetail> GetProductionDetectionRecordsDetail(string productionBatchNO, string pid) +// { +// using (DBModel context = new DBModel()) +// { +// var list = context.ProductionDetectionRecordsDetail.Where(u => u.IS_DELETED == 0 && u.OfflineDetectionId == null); + +// if (!string.IsNullOrWhiteSpace(productionBatchNO)) +// { +// list = list.Where(u => u.ProductionBatchNO.Contains(productionBatchNO)); +// } +// if (!string.IsNullOrWhiteSpace(pid)) +// { +// list = list.Where(u => u.PId.Contains(pid)); +// } + +// var resultList = list.ToList(); +// return resultList; +// } +// } + +// public List<ProductionDetectionRecordsDetail> GetProductionDetectionRecordsDetailPagedList(ProductionDetectionRecordsDetailRequest request) +// { +// using (DBModel context = new DBModel()) +// { +// var list = context.ProductionDetectionRecordsDetail.Where(u => u.IS_DELETED == 0); + +// if (!string.IsNullOrWhiteSpace(request.ProductionBatchNO)) +// { +// list = list.Where(u => u.ProductionBatchNO.Contains(request.ProductionBatchNO)); +// } +// if (!string.IsNullOrWhiteSpace(request.PId)) +// { +// list = list.Where(u => u.PId.Contains(request.PId)); +// } +// if (!string.IsNullOrWhiteSpace(request.Detection)) +// { +// list = list.Where(u => u.Detection.Contains(request.Detection)); +// } +// if (!string.IsNullOrWhiteSpace(request.DefectName)) +// { +// list = list.Where(u => u.DefectName.Contains(request.DefectName)); +// } +// if (!string.IsNullOrWhiteSpace(request.Result)) +// { +// list = list.Where(u => u.Result == request.Result); +// } +// if (request.StartTime != null) +// { +// list = list.Where(u => u.Time >= request.StartTime); +// } +// if (request.EndTime != null) +// { +// list = list.Where(u => u.Time <= request.EndTime); +// } +// var pageList = list.OrderBy(u => u.Time).ToPagedList(request); +// request.TotalNum = list.Count(); +// return pageList; +// } +// } + +// public ProductionDetectionRecordsDetail GetConfigByProductionCode(string productionCode) +// { +// using (DBModel context = new DBModel()) +// { +// //ProductionDetectionRecordsDetail RR= context.ProductionDetectionRecordsDetail.FirstOrDefault(u => u.IS_DELETED == 0 && u.PRODUCTION_CODE == productionCode); +// //return RR; +// return new ProductionDetectionRecordsDetail(); +// } +// } +// public void ADOBatchAdd(List<ProductionDetectionRecordsDetail> records) +// { +// Hashtable SQLStringList = new Hashtable(); +// try +// { +// var idList = records.Select(u => u.ID).ToList(); +// var disIdList = idList.Distinct().ToList(); +// if (idList.Count != disIdList.Count)//鏈夐噸澶峣d +// { +// throw new ProcessException("寮傚父锛氭湁閲嶅id:" + idList.ToString(), null); +// } +// foreach (var record in records) +// { +// if (IsExistId(record.ID)) +// { +// throw new ProcessException("寮傚父锛氭湁閲嶅id:" + record.ID, null); +// } +// StringBuilder strSql = new StringBuilder(); +// strSql.Append("insert into ProductionDetectionRecordsDetail ("); +// strSql.Append("ID,ProductionBatchNO,PId,Result,Time,Detection,DefectName,Probability,Uncertainty,DefectX,DefectY,DefectWidth,DefectHeight, RawImgPath,DefectImgPath,ImageTime,PreElapsed,DefectElapsed,AfterElapsed,TotalElapsed,PreTreatedFlag,DetectionType, SpecStandard, SpecActualValue,IS_DISABLED,IS_DELETED,CREATE_USER,CREATE_TIME, UPDATE_USER,UPDATE_TIME"); +// strSql.Append(")values ("); +// strSql.Append("@ID,@ProductionBatchNO,@PId,@Result,@Time,@Detection,@DefectName,@Probability,@Uncertainty,@DefectX,@DefectY,@DefectWidth,@DefectHeight,@RawImgPath,@DefectImgPath,@ImageTime,@PreElapsed,@DefectElapsed,@AfterElapsed,@TotalElapsed,@PreTreatedFlag,@DetectionType,@SpecStandard,@SpecActualValue,@IS_DISABLED,@IS_DELETED,@CREATE_USER,@CREATE_TIME,@UPDATE_USER,@UPDATE_TIME)"); +// List<SQLiteParameter> parameters = new List<SQLiteParameter>(); +// parameters.Add(new SQLiteParameter("@ID", record.ID)); +// parameters.Add(new SQLiteParameter("@ProductionBatchNO", record.ProductionBatchNO)); +// parameters.Add(new SQLiteParameter("@PId", record.PId)); +// parameters.Add(new SQLiteParameter("@Result", record.Result)); +// parameters.Add(new SQLiteParameter("@Time", record.Time)); +// parameters.Add(new SQLiteParameter("@Detection", record.Detection)); +// parameters.Add(new SQLiteParameter("@DefectName", record.DefectName)); +// parameters.Add(new SQLiteParameter("@Probability", record.Probability)); +// parameters.Add(new SQLiteParameter("@Uncertainty", record.Uncertainty)); +// parameters.Add(new SQLiteParameter("@DefectX", record.DefectX)); +// parameters.Add(new SQLiteParameter("@DefectY", record.DefectY)); +// parameters.Add(new SQLiteParameter("@DefectWidth", record.DefectWidth)); +// parameters.Add(new SQLiteParameter("@DefectHeight", record.DefectHeight)); +// parameters.Add(new SQLiteParameter("@RawImgPath", record.RawImgPath)); +// parameters.Add(new SQLiteParameter("@DefectImgPath", record.DefectImgPath)); +// parameters.Add(new SQLiteParameter("@ImageTime", record.ImageTime)); +// parameters.Add(new SQLiteParameter("@PreElapsed", record.PreElapsed)); +// parameters.Add(new SQLiteParameter("@DefectElapsed", record.DefectElapsed)); +// parameters.Add(new SQLiteParameter("@AfterElapsed", record.AfterElapsed)); +// parameters.Add(new SQLiteParameter("@TotalElapsed", record.TotalElapsed)); +// parameters.Add(new SQLiteParameter("@PreTreatedFlag", record.PreTreatedFlag)); +// parameters.Add(new SQLiteParameter("@DetectionType", record.DetectionType)); +// parameters.Add(new SQLiteParameter("@SpecStandard", record.SpecStandard)); +// parameters.Add(new SQLiteParameter("@SpecActualValue", record.SpecActualValue)); +// parameters.Add(new SQLiteParameter("@IS_DISABLED", record.IS_DISABLED)); +// parameters.Add(new SQLiteParameter("@IS_DELETED", record.IS_DELETED)); +// parameters.Add(new SQLiteParameter("@CREATE_USER", record.CREATE_USER)); +// parameters.Add(new SQLiteParameter("@CREATE_TIME", record.CREATE_TIME)); +// parameters.Add(new SQLiteParameter("@UPDATE_USER", record.UPDATE_USER)); +// parameters.Add(new SQLiteParameter("@UPDATE_TIME", record.UPDATE_TIME)); + +// SQLStringList.Add(strSql, parameters.ToArray()); +// } +// SQLiteHelper.ExecuteSqlTran(SQLStringList); //浣跨敤鏁版嵁搴撲簨鍔� +// } +// catch (Exception ex) +// { +// throw new ProcessException(SQLStringList.ToString() + ex.Message, null); +// } +// } + +// public void InserPatch(List<ProductionDetectionRecordsDetail> records) +// { +// try +// { +// using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) +// { +// using (SQLiteCommand insertRngCmd = (SQLiteCommand)conn.CreateCommand()) +// { +// StringBuilder strSql = new StringBuilder(); +// strSql.Append("insert into ProductionDetectionRecordsDetail ("); +// strSql.Append("ID,ProductionBatchNO,PId,Result,Time,DetectionSource,Detection,DefectName,Probability,Uncertainty,DefectX,DefectY,DefectWidth,DefectHeight, RawImgPath,DefectImgPath,ImageTime,PreElapsed,DefectElapsed,AfterElapsed,TotalElapsed,PreTreatedFlag,DetectionType, SpecStandard, SpecActualValue,IS_DISABLED,IS_DELETED,CREATE_USER,CREATE_TIME, UPDATE_USER,UPDATE_TIME,ImageRecordId"); +// strSql.Append(")values ("); +// strSql.Append("@ID,@ProductionBatchNO,@PId,@Result,@Time,@DetectionSource,@Detection,@DefectName,@Probability,@Uncertainty,@DefectX,@DefectY,@DefectWidth,@DefectHeight,@RawImgPath,@DefectImgPath,@ImageTime,@PreElapsed,@DefectElapsed,@AfterElapsed,@TotalElapsed,@PreTreatedFlag,@DetectionType,@SpecStandard,@SpecActualValue,@IS_DISABLED,@IS_DELETED,@CREATE_USER,@CREATE_TIME,@UPDATE_USER,@UPDATE_TIME,@ImageRecordId)"); + +// insertRngCmd.CommandText = strSql.ToString(); +// conn.Open(); +// var transaction = conn.BeginTransaction(); + +// foreach (var record in records) +// { +// insertRngCmd.Parameters.AddWithValue("@ID", record.ID); +// insertRngCmd.Parameters.AddWithValue("@ProductionBatchNO", record.ProductionBatchNO); +// insertRngCmd.Parameters.AddWithValue("@PId", record.PId); +// insertRngCmd.Parameters.AddWithValue("@Result", record.Result); +// insertRngCmd.Parameters.AddWithValue("@Time", record.Time); +// insertRngCmd.Parameters.AddWithValue("@DetectionSource", record.DetectionSource); +// insertRngCmd.Parameters.AddWithValue("@Detection", record.Detection); +// insertRngCmd.Parameters.AddWithValue("@DefectName", record.DefectName); +// insertRngCmd.Parameters.AddWithValue("@Probability", record.Probability); +// insertRngCmd.Parameters.AddWithValue("@Uncertainty", record.Uncertainty); +// insertRngCmd.Parameters.AddWithValue("@DefectX", record.DefectX); +// insertRngCmd.Parameters.AddWithValue("@DefectY", record.DefectY); +// insertRngCmd.Parameters.AddWithValue("@DefectWidth", record.DefectWidth); +// insertRngCmd.Parameters.AddWithValue("@DefectHeight", record.DefectHeight); +// insertRngCmd.Parameters.AddWithValue("@RawImgPath", record.RawImgPath); +// insertRngCmd.Parameters.AddWithValue("@DefectImgPath", record.DefectImgPath); +// insertRngCmd.Parameters.AddWithValue("@ImageTime", record.ImageTime); +// insertRngCmd.Parameters.AddWithValue("@PreElapsed", record.PreElapsed); +// insertRngCmd.Parameters.AddWithValue("@DefectElapsed", record.DefectElapsed); +// insertRngCmd.Parameters.AddWithValue("@AfterElapsed", record.AfterElapsed); +// insertRngCmd.Parameters.AddWithValue("@TotalElapsed", record.TotalElapsed); +// insertRngCmd.Parameters.AddWithValue("@PreTreatedFlag", record.PreTreatedFlag); +// insertRngCmd.Parameters.AddWithValue("@DetectionType", record.DetectionType); +// insertRngCmd.Parameters.AddWithValue("@SpecStandard", record.SpecStandard); +// insertRngCmd.Parameters.AddWithValue("@SpecActualValue", record.SpecActualValue); +// insertRngCmd.Parameters.AddWithValue("@IS_DISABLED", record.IS_DISABLED); +// insertRngCmd.Parameters.AddWithValue("@IS_DELETED", record.IS_DELETED); +// insertRngCmd.Parameters.AddWithValue("@CREATE_USER", record.CREATE_USER); +// insertRngCmd.Parameters.AddWithValue("@CREATE_TIME", record.CREATE_TIME); +// insertRngCmd.Parameters.AddWithValue("@UPDATE_USER", record.UPDATE_USER); +// insertRngCmd.Parameters.AddWithValue("@UPDATE_TIME", record.UPDATE_TIME); +// insertRngCmd.Parameters.AddWithValue("@ImageRecordId", record.ImageRecordId); +// insertRngCmd.ExecuteNonQuery(); +// } +// transaction.Commit(); +// } +// } +// } +// catch (Exception ex) +// { +// throw new ProcessException(ex.Message, null); +// } +// } + +// public bool IsExistId(string id) +// { +// using (DBModel context = new DBModel()) +// { +// ProductionDetectionRecordsDetail RR = context.ProductionDetectionRecordsDetail.FirstOrDefault(u => u.ID == id); +// return RR != null; +// } +// } +// } +//} diff --git a/src/Bro.M071.Process.DBManager/ProductionDetectionRecordsManager.cs b/src/Bro.M071.Process.DBManager/ProductionDetectionRecordsManager.cs new file mode 100644 index 0000000..bd25939 --- /dev/null +++ b/src/Bro.M071.Process.DBManager/ProductionDetectionRecordsManager.cs @@ -0,0 +1,305 @@ +锘�////using Bro.Process.Common.Helper; +//using Bro.Common.Helper; +//using Bro.Process.Model; +//using Bro.Process.Model.Model; +//using System; +//using System.Collections; +//using System.Collections.Generic; +//using System.Data.Common; +//using System.Data.SQLite; +//using System.Diagnostics; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; + +//namespace Bro.M071.Process.DBManager +//{ +// public class ProductionDetectionRecordsManager : ModelManager<ProductionDetectionRecords> +// { +// DbProviderFactory Dbfactory = SQLiteFactory.Instance; +// protected override void ActionBeforeNewModel(DBModel context, ProductionDetectionRecords config) +// { +// CheckProductionCodeDuplicate(context, config); +// } + +// protected override void ActionBeforeUpdateModel(DBModel context, ProductionDetectionRecords config) +// { +// CheckProductionCodeDuplicate(context, config); +// } + +// private void CheckProductionCodeDuplicate(DBModel context, ProductionDetectionRecords config) +// { +// //if (context.ProductionDetectionRecords.Any(u => u.IS_DELETED == 0 +// // && u.ID != config.ID +// // && u.PRODUCTION_CODE == config.PRODUCTION_CODE)) +// { +// //throw new ProcessException("鏂板鎴栦慨鏀圭殑浜у搧閰嶇疆淇℃伅鐨勪骇鍝佷唬鐮佷笉鑳介噸澶�", null); +// } +// } + +// //public void ADOBatchAdd(List<ProductionDetectionRecords> records) +// //{ +// // Hashtable SQLStringList = new Hashtable(); +// // try +// // { +// // var idList = records.Select(u => u.ID).ToList(); +// // var disIdList = idList.Distinct().ToList(); +// // if (idList.Count != disIdList.Count)//鏈夐噸澶峣d +// // { +// // throw new ProcessException("寮傚父锛氭湁閲嶅id:" + idList.ToString(), null); +// // } +// // foreach (var record in records) +// // { +// // if (IsExistId(record.ID)) +// // { +// // throw new ProcessException("寮傚父锛氭湁閲嶅id:" + record.ID, null); +// // } +// // StringBuilder strSql = new StringBuilder(); +// // strSql.Append("insert into ProductionDetectionRecords ("); +// // strSql.Append(@"ID, +// // ProductionBatchNO, +// // PId, +// // Time, +// // Result, +// // DetectionTimes, +// // DetectionDetail, +// // X, +// // Y, +// // UploadTime, +// // DequeueTime, +// // UploadResult, +// // TBDList, +// // InsideDiameter, +// // OutsideDiameter, +// // Thickness, +// // IS_DISABLED, +// // IS_DELETED, +// // CREATE_USER, +// // CREATE_TIME, +// // UPDATE_USER, +// // UPDATE_TIME"); +// // strSql.Append(")values ("); +// // strSql.Append(@"@ID, +// // @ProductionBatchNO, +// // @PId, +// // @Time, +// // @Result, +// // @DetectionTimes, +// // @DetectionDetail, +// // @X, +// // @Y, +// // @UploadTime, +// // @DequeueTime, +// // @UploadResult, +// // @TBDList, +// // @InsideDiameter, +// // @OutsideDiameter, +// // @Thickness, +// // @IS_DISABLED, +// // @IS_DELETED, +// // @CREATE_USER, +// // @CREATE_TIME, +// // @UPDATE_USER, +// // @UPDATE_TIME)"); +// // List<SQLiteParameter> parameters = new List<SQLiteParameter>(); + +// // parameters.Add(new SQLiteParameter("@ID", record.ID)); +// // parameters.Add(new SQLiteParameter("@ProductionBatchNO", record.ProductionBatchNO)); +// // parameters.Add(new SQLiteParameter("@PId", record.PId)); +// // parameters.Add(new SQLiteParameter("@Time", record.Time)); +// // parameters.Add(new SQLiteParameter("@Result", record.Result)); +// // parameters.Add(new SQLiteParameter("@DetectionTimes", record.DetectionTimes)); +// // parameters.Add(new SQLiteParameter("@DetectionDetail", record.DetectionDetail)); +// // parameters.Add(new SQLiteParameter("@X", record.X)); +// // parameters.Add(new SQLiteParameter("@Y", record.Y)); +// // parameters.Add(new SQLiteParameter("@UploadTime", record.UploadTime)); +// // parameters.Add(new SQLiteParameter("@DequeueTime", record.DequeueTime)); +// // parameters.Add(new SQLiteParameter("@UploadResult", record.UploadResult)); +// // parameters.Add(new SQLiteParameter("@TBDList", record.TBDList)); +// // parameters.Add(new SQLiteParameter("@InsideDiameter", record.InsideDiameter)); +// // parameters.Add(new SQLiteParameter("@OutsideDiameter", record.OutsideDiameter)); +// // parameters.Add(new SQLiteParameter("@Thickness", record.Thickness)); +// // parameters.Add(new SQLiteParameter("@IS_DISABLED", record.IS_DISABLED)); +// // parameters.Add(new SQLiteParameter("@IS_DELETED", record.IS_DELETED)); +// // parameters.Add(new SQLiteParameter("@CREATE_USER", record.CREATE_USER)); +// // parameters.Add(new SQLiteParameter("@CREATE_TIME", record.CREATE_TIME)); +// // parameters.Add(new SQLiteParameter("@UPDATE_USER", record.UPDATE_USER)); +// // parameters.Add(new SQLiteParameter("@UPDATE_TIME", record.UPDATE_TIME)); + +// // SQLStringList.Add(strSql, parameters.ToArray()); +// // } +// // SQLiteHelper.ExecuteSqlTran(SQLStringList); //浣跨敤鏁版嵁搴撲簨鍔� + +// // } +// // catch (Exception ex) +// // { +// // throw new ProcessException(SQLStringList.ToString() + ex.Message, null); +// // } +// //} + +// public void InserPatch(List<ProductionDetectionRecords> records) +// { +// try +// { +// using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) +// { +// using (SQLiteCommand insertRngCmd = (SQLiteCommand)conn.CreateCommand()) +// { +// StringBuilder strSql = new StringBuilder(); +// strSql.Append("insert into ProductionDetectionRecords ("); +// strSql.Append(@"ID, +// OperationRecordsId, +// ProductionBatchNO, +// PId, +// Time, +// Source, +// Result, +// DetectionTimes, +// DetectionDetail, +// X, +// Y, +// UploadTime, +// DequeueTime, +// UploadResult, +// TBDList, +// InsideDiameter, +// OutsideDiameter, +// Thickness, +// IS_DISABLED, +// IS_DELETED, +// CREATE_USER, +// CREATE_TIME, +// UPDATE_USER, +// UPDATE_TIME"); +// strSql.Append(")values ("); +// strSql.Append(@"@ID, +// @OperationRecordsId, +// @ProductionBatchNO, +// @PId, +// @Time, +// @Source, +// @Result, +// @DetectionTimes, +// @DetectionDetail, +// @X, +// @Y, +// @UploadTime, +// @DequeueTime, +// @UploadResult, +// @TBDList, +// @InsideDiameter, +// @OutsideDiameter, +// @Thickness, +// @IS_DISABLED, +// @IS_DELETED, +// @CREATE_USER, +// @CREATE_TIME, +// @UPDATE_USER, +// @UPDATE_TIME)"); + +// insertRngCmd.CommandText = strSql.ToString(); +// conn.Open(); +// var transaction = conn.BeginTransaction(); + +// foreach (var record in records) +// { +// insertRngCmd.Parameters.AddWithValue("@ID", record.ID); +// insertRngCmd.Parameters.AddWithValue("@OperationRecordsId", record.OperationRecordsId); +// insertRngCmd.Parameters.AddWithValue("@ProductionBatchNO", record.ProductionBatchNO); +// insertRngCmd.Parameters.AddWithValue("@PId", record.PId); +// insertRngCmd.Parameters.AddWithValue("@Time", record.Time); +// insertRngCmd.Parameters.AddWithValue("@Source", record.Source); +// insertRngCmd.Parameters.AddWithValue("@Result", record.Result); +// insertRngCmd.Parameters.AddWithValue("@DetectionTimes", record.DetectionTimes); +// insertRngCmd.Parameters.AddWithValue("@DetectionDetail", record.DetectionDetail); +// insertRngCmd.Parameters.AddWithValue("@X", record.X); +// insertRngCmd.Parameters.AddWithValue("@Y", record.Y); +// insertRngCmd.Parameters.AddWithValue("@UploadTime", record.UploadTime); +// insertRngCmd.Parameters.AddWithValue("@DequeueTime", record.DequeueTime); +// insertRngCmd.Parameters.AddWithValue("@UploadResult", record.UploadResult); +// insertRngCmd.Parameters.AddWithValue("@TBDList", record.TBDList); +// insertRngCmd.Parameters.AddWithValue("@InsideDiameter", record.InsideDiameter); +// insertRngCmd.Parameters.AddWithValue("@OutsideDiameter", record.OutsideDiameter); +// insertRngCmd.Parameters.AddWithValue("@Thickness", record.Thickness); +// insertRngCmd.Parameters.AddWithValue("@IS_DISABLED", record.IS_DISABLED); +// insertRngCmd.Parameters.AddWithValue("@IS_DELETED", record.IS_DELETED); +// insertRngCmd.Parameters.AddWithValue("@CREATE_USER", record.CREATE_USER); +// insertRngCmd.Parameters.AddWithValue("@CREATE_TIME", record.CREATE_TIME); +// insertRngCmd.Parameters.AddWithValue("@UPDATE_USER", record.UPDATE_USER); +// insertRngCmd.Parameters.AddWithValue("@UPDATE_TIME", record.UPDATE_TIME); +// insertRngCmd.ExecuteNonQuery(); +// } +// transaction.Commit(); +// } +// } +// } +// catch (Exception ex) +// { +// throw new ProcessException(ex.Message, null); +// } +// } + +// public List<ProductionDetectionRecords> GetProductionDetectionRecordsList(ProductionDetectionRecordsRequest request) +// { +// using (DBModel context = new DBModel()) +// { +// var list = context.ProductionDetectionRecords.Where(u => u.IS_DELETED == 0); + +// if (!string.IsNullOrWhiteSpace(request.ProductionBatchNO)) +// { +// list = list.Where(u => u.ProductionBatchNO.Contains(request.ProductionBatchNO)); +// } +// if (!string.IsNullOrWhiteSpace(request.PId)) +// { +// list = list.Where(u => u.PId.Contains(request.PId)); +// } +// if (!string.IsNullOrWhiteSpace(request.Result)) +// { +// list = list.Where(u => u.Result == request.Result); +// } +// if (request.StartTime != null) +// { +// list = list.Where(u => u.Time >= request.StartTime); +// } +// if (request.EndTime != null) +// { +// list = list.Where(u => u.Time <= request.EndTime); +// } +// var pageList = list.OrderBy(u => u.Time).ToPagedList(request); +// request.TotalNum = list.Count(); +// return pageList; +// } +// } + +// public ProductionDetectionRecords GetConfigByProductionCode(string productionCode) +// { +// using (DBModel context = new DBModel()) +// { +// //ProductionDetectionRecords RR= context.ProductionDetectionRecords.FirstOrDefault(u => u.IS_DELETED == 0 && u.PRODUCTION_CODE == productionCode); +// //return RR; +// return new ProductionDetectionRecords(); +// } +// } +// public bool IsExistId(string id) +// { +// using (DBModel context = new DBModel()) +// { +// ProductionDetectionRecords RR = context.ProductionDetectionRecords.FirstOrDefault(u => u.ID == id); +// return RR != null; +// } +// } + +// } + +// //public class ProductionManagerkey : ModelManager<PRODUCTION_SECRETKEY> +// //{ +// // public PRODUCTION_SECRETKEY GetConfig() +// // { +// // using (DBModel context = new DBModel()) +// // { +// // //return context.PRODUCTION_SECRETKEY.FirstOrDefault(u => u.RUNDAYNUMMAX > 0); +// // return new PRODUCTION_SECRETKEY(); +// // } +// // } +// //} +//} diff --git a/src/Bro.M071.Process.DBManager/Properties/AssemblyInfo.cs b/src/Bro.M071.Process.DBManager/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..8895ef9 --- /dev/null +++ b/src/Bro.M071.Process.DBManager/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +锘縰sing System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅 +// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼 +// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭�� +[assembly: AssemblyTitle("Bro.Process.DBManager")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Bro.Process.DBManager")] +[assembly: AssemblyCopyright("Copyright 漏 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷 +//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷 +//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆� +[assembly: ComVisible(false)] + +// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID +[assembly: Guid("230b0fff-f6af-45fe-aaf7-b4b66250dd58")] + +// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�: +// +// 涓荤増鏈� +// 娆$増鏈� +// 鐢熸垚鍙� +// 淇鍙� +// +// 鍙互鎸囧畾鎵�鏈夊�硷紝涔熷彲浠ヤ娇鐢ㄤ互涓嬫墍绀虹殑 "*" 棰勭疆鐗堟湰鍙峰拰淇鍙� +//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Bro.M071.Process.DBManager/packages.config b/src/Bro.M071.Process.DBManager/packages.config new file mode 100644 index 0000000..455fb3e --- /dev/null +++ b/src/Bro.M071.Process.DBManager/packages.config @@ -0,0 +1,10 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="EntityFramework" version="6.4.0" targetFramework="net452" /> + <package id="SQLite.CodeFirst" version="1.5.3.29" targetFramework="net452" /> + <package id="System.Data.SQLite" version="1.0.112.0" targetFramework="net452" /> + <package id="System.Data.SQLite.Core" version="1.0.112.0" targetFramework="net452" /> + <package id="System.Data.SQLite.EF6" version="1.0.112.0" targetFramework="net452" /> + <package id="System.Data.SQLite.EF6.Migrations" version="1.0.106" targetFramework="net452" /> + <package id="System.Data.SQLite.Linq" version="1.0.112.0" targetFramework="net452" /> +</packages> \ No newline at end of file diff --git a/src/Bro.M071.Process.Model/App.config b/src/Bro.M071.Process.Model/App.config new file mode 100644 index 0000000..06783b1 --- /dev/null +++ b/src/Bro.M071.Process.Model/App.config @@ -0,0 +1,43 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<configuration> + <configSections> + <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> + <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> + </configSections> + <entityFramework> + <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> + <providers> + <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> + <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> + <!--<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />--> + </providers> + </entityFramework> + <connectionStrings> + <!--<add name="DBSet" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=Bro.Process.Model.Model;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />--> + <!--<add name="DBModel" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=Bro.Process.Model.DBModel;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />--> + <add name="DBModel" connectionString="data source=D:\PROJECTS\M071\DataBase\M071.db;BinaryGUID=False" providerName="System.Data.SQLite" /> + </connectionStrings> + <system.data> + <DbProviderFactories> + <remove invariant="System.Data.SQLite.EF6" /> + <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> + <remove invariant="System.Data.SQLite" /> + <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /> + </DbProviderFactories> + </system.data> + <runtime> + <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> + <dependentAssembly> + <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-1.0.112.0" newVersion="1.0.112.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Data.SQLite.EF6" publicKeyToken="db937bc2d44ff139" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-1.0.112.0" newVersion="1.0.112.0" /> + </dependentAssembly> + </assemblyBinding> + </runtime> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> + </startup> +</configuration> \ No newline at end of file diff --git a/src/Bro.M071.Process.Model/BaseModel.cs b/src/Bro.M071.Process.Model/BaseModel.cs new file mode 100644 index 0000000..8bcf90b --- /dev/null +++ b/src/Bro.M071.Process.Model/BaseModel.cs @@ -0,0 +1,201 @@ +锘�//using System; +//using System.Collections.Generic; +//using System.ComponentModel; +//using System.ComponentModel.DataAnnotations; +//using System.Linq; +//using System.Reflection; +//using System.Text; +//using System.Threading.Tasks; + +//namespace Bro.M071.Process.Model +//{ +// public class BaseModel +// { +// /// <summary> +// /// 缂栧彿锛屽敮涓�鍊�,浣跨敤GUID +// /// </summary> +// [Key] +// [Required(ErrorMessage = "缂栧彿涓嶅彲涓虹┖锛�")] +// [StringLength(50)] +// public string ID { get; set; } = Guid.NewGuid().ToString().ToUpper(); + +// /// <summary> +// /// 绂佺敤鐘舵�� 0 鏈鐢� 1 宸茬鐢� +// /// </summary> +// [Required] +// public int IS_DISABLED { get; set; } = 0; + +// /// <summary> +// /// 鍒犻櫎鐘舵�� 0 鏈垹闄� 1 宸插垹闄� +// /// </summary> +// [Required] +// public int IS_DELETED { get; set; } = 0; + +// /// <summary> +// /// 鍒涘缓浜轰俊鎭� +// /// </summary> +// //[Required] +// [StringLength(50)] +// public string CREATE_USER { get; set; } + +// /// <summary> +// /// 鍒涘缓鏃堕棿 +// /// </summary> +// //[Required] +// public DateTime? CREATE_TIME { get; set; } = DateTime.Now; + +// /// <summary> +// /// 鏇存柊浜轰俊鎭� +// /// </summary> +// [StringLength(50)] +// public string UPDATE_USER { get; set; } + +// /// <summary> +// /// 鏇存柊鏃堕棿 +// /// </summary> +// public DateTime? UPDATE_TIME { get; set; } +// } + +// public static class BaseModelHelper +// { +// public static void SetNew<T>(this T t, string userId) where T : BaseModel +// { +// //t.ID = Guid.NewGuid().ToString().ToUpper(); +// t.CREATE_USER = userId; +// t.CREATE_TIME = DateTime.Now; +// } + +// public static void SetUpdate<T>(this T t, string userId) where T : BaseModel +// { +// t.UPDATE_USER = userId; +// t.UPDATE_TIME = DateTime.Now; +// } + +// static List<string> NoTransferProps = new List<string>() { "ID", "CREATE_USER", "CREATE_TIME", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED" }; +// public static void DataTransfer<T>(this T destT, T sourceT) where T : BaseModel +// { +// destT.DataFrom(sourceT, NoTransferProps); +// } + +// public static void DataFrom<T1, T2>(this T1 destT, T2 sourceT, List<string> exceptionProps = null) where T1 : class where T2 : class +// { +// PropertyInfo[] propDest = destT.GetType().GetProperties().Where(p => !(p.GetMethod.IsVirtual && !p.GetMethod.IsFinal)).ToArray(); +// PropertyInfo[] propSource = sourceT.GetType().GetProperties(); + +// Array.ForEach(propDest, prop => +// { +// if (exceptionProps == null || !exceptionProps.Contains(prop.Name)) +// { +// if (prop.CanWrite) +// { +// PropertyInfo propS = propSource.FirstOrDefault(p => p.Name == prop.Name); +// if (propS != null && propS.CanRead) +// { +// prop.SetValue(destT, propS.GetValue(sourceT)); +// } +// } +// } +// }); +// } + +// public static List<T> ToPagedList<T>(this IQueryable<T> orderQuery, BaseRequest request) where T : class +// { +// return orderQuery.Skip((request.PageNum - 1) * request.PageSize).Take(request.PageSize).ToList(); +// } +// } + +// public class BaseRequest : INotifyPropertyChanged +// { + +// private int pageNum = 1; +// /// <summary> +// /// 鏌ヨ缁撴灉椤垫暟 +// /// </summary> +// public int PageNum +// { +// get => pageNum; +// set +// { +// if (pageNum != value) +// { +// pageNum = value; +// PropertyChanged?.BeginInvoke(this, new PropertyChangedEventArgs("PageNum"), null, null); +// } +// } +// } + +// private int pageSize = 100; +// /// <summary> +// /// 姣忛〉鐨勬煡璇㈢粨鏋滄潯鏁� +// /// </summary> +// public int PageSize +// { +// get => pageSize; +// set +// { +// if (pageSize != value) +// { +// pageSize = value; +// PropertyChanged?.BeginInvoke(this, new PropertyChangedEventArgs("PageSize"), null, null); +// } +// } +// } + +// /// <summary> +// /// 鏌ヨ璧峰鏃堕棿 +// /// </summary> +// public DateTime? StartTime { get; set; } + +// /// <summary> +// /// 鏌ヨ缁撴潫鏃堕棿 +// /// </summary> +// public DateTime? EndTime { get; set; } + +// /// <summary> +// /// 鍚敤鐘舵�佽繃婊ゅ櫒 1锛氫粎鏈惎鐢� 0锛氫粎鍚敤 -1锛氬叏閮� +// /// </summary> +// public int DisableFilter { get; set; } = 0; + +// /// <summary> +// /// 鏌ヨ瀛楃涓� +// /// </summary> +// public string SearchTxt { get; set; } + +// private int totalNum = 0; +// /// <summary> +// /// 鏁版嵁鎬绘暟 +// /// </summary> +// public int TotalNum +// { +// get => totalNum; +// set +// { +// if (totalNum != value) +// { +// totalNum = value; +// PropertyChanged?.BeginInvoke(this, new PropertyChangedEventArgs("TotalNum"), null, null); +// } +// TotalPage = (int)Math.Ceiling((double)TotalNum / PageSize); +// } +// } + +// private int totalPage = 0; +// /// <summary> +// /// 鎬婚〉鏁� +// /// </summary> +// public int TotalPage +// { +// get => totalPage; +// set +// { +// if (totalPage != value) +// { +// totalPage = value; +// PropertyChanged?.BeginInvoke(this, new PropertyChangedEventArgs("TotalPage"), null, null); +// } +// } +// } + +// public event PropertyChangedEventHandler PropertyChanged; +// } +//} diff --git a/src/Bro.M071.Process.Model/Bro.M071.Process.Model.csproj b/src/Bro.M071.Process.Model/Bro.M071.Process.Model.csproj new file mode 100644 index 0000000..335fb1c --- /dev/null +++ b/src/Bro.M071.Process.Model/Bro.M071.Process.Model.csproj @@ -0,0 +1,95 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props" Condition="Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" /> + <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>{AD645C48-5811-4B1E-B81F-D35D5E6B577F}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Bro.Process.Model</RootNamespace> + <AssemblyName>Bro.Process.Model</AssemblyName> + <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <NuGetPackageImportStamp> + </NuGetPackageImportStamp> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <PlatformTarget>AnyCPU</PlatformTarget> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\..\packages\EntityFramework.6.4.0\lib\net45\EntityFramework.dll</HintPath> + </Reference> + <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\..\packages\EntityFramework.6.4.0\lib\net45\EntityFramework.SqlServer.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.ComponentModel.DataAnnotations" /> + <Reference Include="System.Core" /> + <Reference Include="System.Data.SQLite, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net451\System.Data.SQLite.dll</HintPath> + </Reference> + <Reference Include="System.Data.SQLite.EF6, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.EF6.1.0.112.0\lib\net451\System.Data.SQLite.EF6.dll</HintPath> + </Reference> + <Reference Include="System.Data.SQLite.EF6.Migrations, Version=1.0.106.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.EF6.Migrations.1.0.106\lib\System.Data.SQLite.EF6.Migrations.dll</HintPath> + </Reference> + <Reference Include="System.Data.SQLite.Linq, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.Linq.1.0.112.0\lib\net451\System.Data.SQLite.Linq.dll</HintPath> + </Reference> + <Reference Include="System.Runtime.Serialization" /> + <Reference Include="System.Security" /> + <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="BaseModel.cs" /> + <Compile Include="DBModel.cs" /> + <Compile Include="Migrations\Configuration.cs" /> + <Compile Include="Model\ManualDetectionRecords.cs" /> + <Compile Include="Model\EventTimeRecords.cs" /> + <Compile Include="Model\OperationRecords.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="App.config"> + <SubType>Designer</SubType> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Include="packages.config" /> + </ItemGroup> + <ItemGroup /> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> + <PropertyGroup> + </PropertyGroup> + <Error Condition="!Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props'))" /> + <Error Condition="!Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets'))" /> + <Error Condition="!Exists('..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets'))" /> + </Target> + <Import Project="..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets" Condition="Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" /> + <Import Project="..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets" Condition="Exists('..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets')" /> +</Project> \ No newline at end of file diff --git a/src/Bro.M071.Process.Model/DBModel.cs b/src/Bro.M071.Process.Model/DBModel.cs new file mode 100644 index 0000000..92ccb4a --- /dev/null +++ b/src/Bro.M071.Process.Model/DBModel.cs @@ -0,0 +1,67 @@ +锘�//using Bro.Process.Model.Migrations; +//using Bro.Process.Model.Model; +//using System; +//using System.Data.Entity; +//using System.Data.Entity.ModelConfiguration.Conventions; +//using System.Linq; + +//namespace Bro.M071.Process.Model +//{ +// public class DBModel : DbContext +// { +// //鎮ㄧ殑涓婁笅鏂囧凡閰嶇疆涓轰粠鎮ㄧ殑搴旂敤绋嬪簭鐨勯厤缃枃浠�(App.config 鎴� Web.config) +// //浣跨敤鈥淒BModel鈥濊繛鎺ュ瓧绗︿覆銆傞粯璁ゆ儏鍐典笅锛屾杩炴帴瀛楃涓查拡瀵规偍鐨� LocalDb 瀹炰緥涓婄殑 +// //鈥淏ro.Process.Model.DBModel鈥濇暟鎹簱銆� +// // +// //濡傛灉鎮ㄦ兂瑕侀拡瀵瑰叾浠栨暟鎹簱鍜�/鎴栨暟鎹簱鎻愪緵绋嬪簭锛岃鍦ㄥ簲鐢ㄧ▼搴忛厤缃枃浠朵腑淇敼鈥淒BModel鈥� +// //杩炴帴瀛楃涓层�� +// public DBModel() +// : base("name=DBModel") +// { +// ////鏁版嵁搴撹縼绉绘鏌ユ殏鏃舵斁鍦ㄦ瀯閫犲嚱鏁颁腑锛屽洖澶翠細鏀惧埌绋嬪簭鍒濆鍖栦腑 +// //Database.SetInitializer(new MigrateDatabaseToLatestVersion<DBModel, Configuration>()); +// } + +// //涓烘偍瑕佸湪妯″瀷涓寘鍚殑姣忕瀹炰綋绫诲瀷閮芥坊鍔� DbSet銆傛湁鍏抽厤缃拰浣跨敤 Code First 妯″瀷 +// //鐨勮缁嗕俊鎭紝璇峰弬闃� http://go.microsoft.com/fwlink/?LinkId=390109銆� + +// // public virtual DbSet<MyEntity> MyEntities { get; set; } +// //public virtual DbSet<PRODUCTION_SECRETKEY> PRODUCTION_SECRETKEY { get; set; } +// //public virtual DbSet<PRODUCTION_CONFIG> PRODUCTION_CONFIG { get; set; } + + +// public virtual DbSet<ProductionDetectionRecords> ProductionDetectionRecords { get; set; } +// public virtual DbSet<ProductionDetectionRecordsDetail> ProductionDetectionRecordsDetail { get; set; } +// public virtual DbSet<OperationRecords> OperationRecords { get; set; } +// public virtual DbSet<ProductionDetectionImageRecords> ProductionDetectionImageRecords { get; set; } +// public virtual DbSet<ManualDetectionRecords> ManualDetectionRecords { get; set; } +// public virtual DbSet<EventTimeRecords> EventTimeRecords { get; set; } + +// protected override void OnModelCreating(DbModelBuilder modelBuilder) +// { +// //base.OnModelCreating(modelBuilder); + +// #region for sqlite db +// modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); +// modelBuilder.Configurations.AddFromAssembly(typeof(DBModel).Assembly); +// #endregion +// } +// } + +// public static class DatabaseInitialize +// { +// public static void Initialize() +// { +// Database.SetInitializer(new MigrateDatabaseToLatestVersion<DBModel, Configuration>()); +// using (DbContext dbContext = new DBModel()) +// { +// dbContext.Database.Initialize(true); +// } +// } +// } +// //public class MyEntity +// //{ +// // public int Id { get; set; } +// // public string Name { get; set; } +// //} +//} \ No newline at end of file diff --git a/src/Bro.M071.Process.Model/Migrations/Configuration.cs b/src/Bro.M071.Process.Model/Migrations/Configuration.cs new file mode 100644 index 0000000..0f2bb06 --- /dev/null +++ b/src/Bro.M071.Process.Model/Migrations/Configuration.cs @@ -0,0 +1,37 @@ +//namespace Bro.M071.Process.Model.Migrations +//{ +// using System; +// using System.Data.Entity; +// using System.Data.Entity.Migrations; +// using System.Data.SQLite.EF6.Migrations; +// using System.Linq; + +// public sealed class Configuration : DbMigrationsConfiguration<Bro.Process.Model.DBModel> +// { +// public Configuration() +// { +// AutomaticMigrationsEnabled = true; +// AutomaticMigrationDataLossAllowed = true; + +// #region for sqlite db +// SetSqlGenerator("System.Data.SQLite", new SQLiteMigrationSqlGenerator()); +// #endregion +// } + +// protected override void Seed(Bro.Process.Model.DBModel context) +// { +// // This method will be called after migrating to the latest version. + +// // You can use the DbSet<T>.AddOrUpdate() helper extension method +// // to avoid creating duplicate seed data. E.g. +// // +// // context.People.AddOrUpdate( +// // p => p.FullName, +// // new Person { FullName = "Andrew Peters" }, +// // new Person { FullName = "Brice Lambson" }, +// // new Person { FullName = "Rowan Miller" } +// // ); +// // +// } +// } +//} diff --git a/src/Bro.M071.Process.Model/Model/EventTimeRecords.cs b/src/Bro.M071.Process.Model/Model/EventTimeRecords.cs new file mode 100644 index 0000000..c5fb1bc --- /dev/null +++ b/src/Bro.M071.Process.Model/Model/EventTimeRecords.cs @@ -0,0 +1,52 @@ +锘� +//using System; +//using System.ComponentModel.DataAnnotations; + +//namespace Bro.M071.Process.Model.Model +//{ +// /// <summary> +// /// 浜嬩欢鏃堕棿璁板綍 +// /// </summary> +// public class EventTimeRecords : BaseModel +// { +// /// <summary> +// /// 鎿嶄綔鍛樼紪鍙� +// /// </summary> +// [StringLength(64)] +// public string UserNO { get; set; } + +// /// <summary> +// /// 鐝 +// /// </summary> +// public int Shift { get; set; } + +// /// <summary> +// /// 浜嬩欢绫诲瀷锛堢┖闂� 鏁呴殰 姝e父杩愯锛� +// /// </summary> +// public int EventType { get; set; } + +// ///// <summary> +// ///// 浜嬩欢寮�濮�/缁撴潫 +// ///// </summary> +// //public int EventStatus { get; set; } + +// /// <summary> +// /// 浜嬩欢鏃堕棿 +// /// </summary> +// public DateTime EventTime { get; set; } + +// /// <summary> +// /// 浜嬩欢澶囨敞 +// /// </summary> +// [StringLength(256)] +// public string Remark { get; set; } +// } + +// public class EventTimeRecordsRequest : BaseRequest +// { +// public string UserNO { get; set; } +// public int Shift { get; set; } +// public int EventType { get; set; } +// } + +//} diff --git a/src/Bro.M071.Process.Model/Model/ManualDetectionRecords.cs b/src/Bro.M071.Process.Model/Model/ManualDetectionRecords.cs new file mode 100644 index 0000000..b0f221a --- /dev/null +++ b/src/Bro.M071.Process.Model/Model/ManualDetectionRecords.cs @@ -0,0 +1,58 @@ +锘�//using System; +//using System.Collections.Generic; +//using System.ComponentModel; +//using System.ComponentModel.DataAnnotations; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; + +//namespace Bro.M071.Process.Model.Model +//{ +// public class ManualDetectionRecords : BaseModel, INotifyPropertyChanged +// { +// /// <summary> +// /// 妫�娴嬪浘鐗囩殑璺緞锛堝師濮嬪浘鐗� 棰勫鐞嗗浘鐗囪矾寰勶級 鍏宠仈鍒版娴嬭褰曡〃锛堜竴寮犲浘鐗囧娆℃娴� 鍘熷璺緞涓嶅彉锛� +// /// </summary> +// [StringLength(512)] +// public string OriginalImgPath { get; set; } + + +// private string manualResult = null; +// /// <summary> +// /// 浜哄伐瀵规爣缁撴灉 +// /// </summary> +// [StringLength(64)] +// public string ManualResult +// { +// get => manualResult; +// set +// { +// if (manualResult != value) +// { +// manualResult = value; +// PropertyChanged?.BeginInvoke(this, new PropertyChangedEventArgs("ManualResult"), null, null); +// } +// } +// } + +// private string manualDefectNameList = null; +// /// <summary> +// /// 浜哄伐瀵规爣缂洪櫡鍚嶇О +// /// </summary> +// [StringLength(256)] +// public string ManualDefectNameList +// { +// get => manualDefectNameList; +// set +// { +// if (manualDefectNameList != value) +// { +// manualDefectNameList = value; +// PropertyChanged?.BeginInvoke(this, new PropertyChangedEventArgs("ManualDefectNameList"), null, null); +// } +// } +// } + +// public event PropertyChangedEventHandler PropertyChanged; +// } +//} diff --git a/src/Bro.M071.Process.Model/Model/OperationRecords.cs b/src/Bro.M071.Process.Model/Model/OperationRecords.cs new file mode 100644 index 0000000..aaad5ac --- /dev/null +++ b/src/Bro.M071.Process.Model/Model/OperationRecords.cs @@ -0,0 +1,60 @@ +锘� +//using System; +//using System.ComponentModel.DataAnnotations; + +//namespace Bro.M071.Process.Model.Model +//{ +// public class OperationRecords : BaseModel +// { +// /// <summary> +// /// 鎿嶄綔鍛樼紪鍙� +// /// </summary> +// [StringLength(64)] +// public string UserNO { get; set; } + +// /// <summary> +// /// 鎿嶄綔鍛樼敓浜х殑鎵规鍙� +// /// </summary> +// [StringLength(64)] +// public string ProductionBatchNO { get; set; } + +// /// <summary> +// /// 鎿嶄綔寮�濮嬫椂闂� +// /// </summary> +// public DateTime OperationStartTime { get; set; } + +// /// <summary> +// /// 鎿嶄綔缁撴潫鏃堕棿 +// /// </summary> +// public DateTime? OperationEndTime { get; set; } + + +// } + +// public class OperationRecordsRequest : BaseRequest +// { +// public string UserNO { get; set; } +// public string ProductionBatchNO { get; set; } +// } + +// public class ProductionStatistics_Dto +// { + +// public OperationRecords OperationRecordsRowData { get; set; } + +// public int BatchProductionTotalCount { get; set; } + +// public int BatchProductionOKCount { get; set; } + +// public int BatchProductionNGCount { get; set; } + +// public int BatchProductionTBDCount { get; set; } + +// public bool IsSelected { get; set; } + +// public ProductionStatistics_Dto() +// { + +// } +// } +//} diff --git a/src/Bro.M071.Process.Model/Properties/AssemblyInfo.cs b/src/Bro.M071.Process.Model/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..719162e --- /dev/null +++ b/src/Bro.M071.Process.Model/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +锘縰sing System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅 +// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼 +// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭�� +[assembly: AssemblyTitle("Bro.Process.Model")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Bro.Process.Model")] +[assembly: AssemblyCopyright("Copyright 漏 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷 +//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷 +//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆� +[assembly: ComVisible(false)] + +// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID +[assembly: Guid("ad645c48-5811-4b1e-b81f-d35d5e6b577f")] + +// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�: +// +// 涓荤増鏈� +// 娆$増鏈� +// 鐢熸垚鍙� +// 淇鍙� +// +// 鍙互鎸囧畾鎵�鏈夊�硷紝涔熷彲浠ヤ娇鐢ㄤ互涓嬫墍绀虹殑 "*" 棰勭疆鐗堟湰鍙峰拰淇鍙� +//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Bro.M071.Process.Model/packages.config b/src/Bro.M071.Process.Model/packages.config new file mode 100644 index 0000000..455fb3e --- /dev/null +++ b/src/Bro.M071.Process.Model/packages.config @@ -0,0 +1,10 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="EntityFramework" version="6.4.0" targetFramework="net452" /> + <package id="SQLite.CodeFirst" version="1.5.3.29" targetFramework="net452" /> + <package id="System.Data.SQLite" version="1.0.112.0" targetFramework="net452" /> + <package id="System.Data.SQLite.Core" version="1.0.112.0" targetFramework="net452" /> + <package id="System.Data.SQLite.EF6" version="1.0.112.0" targetFramework="net452" /> + <package id="System.Data.SQLite.EF6.Migrations" version="1.0.106" targetFramework="net452" /> + <package id="System.Data.SQLite.Linq" version="1.0.112.0" targetFramework="net452" /> +</packages> \ No newline at end of file diff --git a/src/Bro.Process.DBManager/App.config b/src/Bro.Process.DBManager/App.config new file mode 100644 index 0000000..acbf0ea --- /dev/null +++ b/src/Bro.Process.DBManager/App.config @@ -0,0 +1,36 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<configuration> + <configSections> + <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> + <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> + <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> + <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> + </configSections> + <system.data> + <DbProviderFactories> + <remove invariant="System.Data.SQLite.EF6" /> + <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> + <remove invariant="System.Data.SQLite" /> + <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /> + </DbProviderFactories> + </system.data> + <entityFramework> + <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> + <providers> + <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> + <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> + </providers> + </entityFramework> + <runtime> + <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> + <dependentAssembly> + <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-1.0.112.0" newVersion="1.0.112.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Data.SQLite.EF6" publicKeyToken="db937bc2d44ff139" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-1.0.112.0" newVersion="1.0.112.0" /> + </dependentAssembly> + </assemblyBinding> + </runtime> +<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /></startup></configuration> diff --git a/src/Bro.Process.DBManager/BaseModel.cs b/src/Bro.Process.DBManager/BaseModel.cs new file mode 100644 index 0000000..f827c7c --- /dev/null +++ b/src/Bro.Process.DBManager/BaseModel.cs @@ -0,0 +1,200 @@ +锘縰sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace Bro.Process.DataBase +{ + public class BaseModel + { + /// <summary> + /// 缂栧彿锛屽敮涓�鍊�,浣跨敤GUID + /// </summary> + [Key] + [Required(ErrorMessage = "缂栧彿涓嶅彲涓虹┖锛�")] + [StringLength(64)] + public string ID { get; set; } = Guid.NewGuid().ToString().ToUpper(); + + /// <summary> + /// 绂佺敤鐘舵�� 0 鏈鐢� 1 宸茬鐢� + /// </summary> + [Required] + public int IS_DISABLED { get; set; } = 0; + + /// <summary> + /// 鍒犻櫎鐘舵�� 0 鏈垹闄� 1 宸插垹闄� + /// </summary> + [Required] + public int IS_DELETED { get; set; } = 0; + + /// <summary> + /// 鍒涘缓浜轰俊鎭� + /// </summary> + //[Required] + [StringLength(64)] + public string CREATE_USER { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + //[Required] + public DateTime? CREATE_TIME { get; set; } = DateTime.Now; + + /// <summary> + /// 鏇存柊浜轰俊鎭� + /// </summary> + [StringLength(64)] + public string UPDATE_USER { get; set; } + + /// <summary> + /// 鏇存柊鏃堕棿 + /// </summary> + public DateTime? UPDATE_TIME { get; set; } + } + + public static class BaseModelHelper + { + public static void SetNew<T>(this T t, string userId) where T : BaseModel + { + t.CREATE_USER = userId; + t.CREATE_TIME = DateTime.Now; + } + + public static void SetUpdate<T>(this T t, string userId) where T : BaseModel + { + t.UPDATE_USER = userId; + t.UPDATE_TIME = DateTime.Now; + } + + static List<string> NoTransferProps = new List<string>() { "ID", "CREATE_USER", "CREATE_TIME", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED" }; + public static void DataTransfer<T>(this T destT, T sourceT) where T : BaseModel + { + destT.DataFrom(sourceT, NoTransferProps); + } + + public static void DataFrom<T1, T2>(this T1 destT, T2 sourceT, List<string> exceptionProps = null) where T1 : class where T2 : class + { + PropertyInfo[] propDest = destT.GetType().GetProperties().Where(p => !(p.GetMethod.IsVirtual && !p.GetMethod.IsFinal)).ToArray(); + PropertyInfo[] propSource = sourceT.GetType().GetProperties(); + + Array.ForEach(propDest, prop => + { + if (exceptionProps == null || !exceptionProps.Contains(prop.Name)) + { + if (prop.CanWrite) + { + PropertyInfo propS = propSource.FirstOrDefault(p => p.Name == prop.Name); + if (propS != null && propS.CanRead) + { + prop.SetValue(destT, propS.GetValue(sourceT)); + } + } + } + }); + } + + public static List<T> ToPagedList<T>(this IQueryable<T> orderQuery, BaseRequest request) where T : class + { + return orderQuery.Skip((request.PageNum - 1) * request.PageSize).Take(request.PageSize).ToList(); + } + } + + public class BaseRequest : INotifyPropertyChanged + { + + private int pageNum = 1; + /// <summary> + /// 鏌ヨ缁撴灉椤垫暟 + /// </summary> + public int PageNum + { + get => pageNum; + set + { + if (pageNum != value) + { + pageNum = value; + PropertyChanged?.BeginInvoke(this, new PropertyChangedEventArgs("PageNum"), null, null); + } + } + } + + private int pageSize = 100; + /// <summary> + /// 姣忛〉鐨勬煡璇㈢粨鏋滄潯鏁� + /// </summary> + public int PageSize + { + get => pageSize; + set + { + if (pageSize != value) + { + pageSize = value; + PropertyChanged?.BeginInvoke(this, new PropertyChangedEventArgs("PageSize"), null, null); + } + } + } + + /// <summary> + /// 鏌ヨ璧峰鏃堕棿 + /// </summary> + public DateTime? StartTime { get; set; } + + /// <summary> + /// 鏌ヨ缁撴潫鏃堕棿 + /// </summary> + public DateTime? EndTime { get; set; } + + /// <summary> + /// 鍚敤鐘舵�佽繃婊ゅ櫒 1锛氫粎鏈惎鐢� 0锛氫粎鍚敤 -1锛氬叏閮� + /// </summary> + public int DisableFilter { get; set; } = 0; + + /// <summary> + /// 鏌ヨ瀛楃涓� + /// </summary> + public string SearchTxt { get; set; } + + private int totalNum = 0; + /// <summary> + /// 鏁版嵁鎬绘暟 + /// </summary> + public int TotalNum + { + get => totalNum; + set + { + if (totalNum != value) + { + totalNum = value; + PropertyChanged?.BeginInvoke(this, new PropertyChangedEventArgs("TotalNum"), null, null); + } + TotalPage = (int)Math.Ceiling((double)TotalNum / PageSize); + } + } + + private int totalPage = 0; + /// <summary> + /// 鎬婚〉鏁� + /// </summary> + public int TotalPage + { + get => totalPage; + set + { + if (totalPage != value) + { + totalPage = value; + PropertyChanged?.BeginInvoke(this, new PropertyChangedEventArgs("TotalPage"), null, null); + } + } + } + + public event PropertyChangedEventHandler PropertyChanged; + } +} diff --git a/src/Bro.Process.DBManager/Bro.Process.DataBase.csproj b/src/Bro.Process.DBManager/Bro.Process.DataBase.csproj new file mode 100644 index 0000000..2988d92 --- /dev/null +++ b/src/Bro.Process.DBManager/Bro.Process.DataBase.csproj @@ -0,0 +1,104 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props" Condition="Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" /> + <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>{65302D6E-9918-4E4C-92B4-75C8830C6BA7}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Bro.Process.DBManager</RootNamespace> + <AssemblyName>Bro.Process.DBManager</AssemblyName> + <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <NuGetPackageImportStamp> + </NuGetPackageImportStamp> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\..\packages\EntityFramework.6.4.0\lib\net45\EntityFramework.dll</HintPath> + </Reference> + <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\..\packages\EntityFramework.6.4.0\lib\net45\EntityFramework.SqlServer.dll</HintPath> + </Reference> + <Reference Include="SQLite.CodeFirst, Version=1.5.3.29, Culture=neutral, PublicKeyToken=eb96ba0a78d831a7, processorArchitecture=MSIL"> + <HintPath>..\..\packages\SQLite.CodeFirst.1.5.3.29\lib\net45\SQLite.CodeFirst.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.ComponentModel.DataAnnotations" /> + <Reference Include="System.Configuration" /> + <Reference Include="System.Core" /> + <Reference Include="System.Data.SQLite, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net451\System.Data.SQLite.dll</HintPath> + </Reference> + <Reference Include="System.Data.SQLite.EF6, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.EF6.1.0.112.0\lib\net451\System.Data.SQLite.EF6.dll</HintPath> + </Reference> + <Reference Include="System.Data.SQLite.EF6.Migrations, Version=1.0.106.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.EF6.Migrations.1.0.106\lib\System.Data.SQLite.EF6.Migrations.dll</HintPath> + </Reference> + <Reference Include="System.Data.SQLite.Linq, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Data.SQLite.Linq.1.0.112.0\lib\net451\System.Data.SQLite.Linq.dll</HintPath> + </Reference> + <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="BaseModel.cs" /> + <Compile Include="DataBaseContext.cs" /> + <Compile Include="ModelManager.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="SQLiteHelper.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\Bro.Common.Model\Bro.Common.Model.csproj"> + <Project>{1A3CBFE7-3F78-42C3-95C5-10360450DBEA}</Project> + <Name>Bro.Common.Model</Name> + </ProjectReference> + <ProjectReference Include="..\Bro.Common.Device\Bro.Common.Device.csproj"> + <Project>{987308DD-8BAA-463A-94E2-77D62E01A5BF}</Project> + <Name>Bro.Common.Device</Name> + </ProjectReference> + <ProjectReference Include="..\Bro.M071.Process.Model\Bro.M071.Process.Model.csproj"> + <Project>{AD645C48-5811-4B1E-B81F-D35D5E6B577F}</Project> + <Name>Bro.M071.Process.Model</Name> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + <None Include="packages.config" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> + <PropertyGroup> + </PropertyGroup> + <Error Condition="!Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props'))" /> + <Error Condition="!Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets'))" /> + <Error Condition="!Exists('..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets'))" /> + </Target> + <Import Project="..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets" Condition="Exists('..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" /> + <Import Project="..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets" Condition="Exists('..\..\packages\System.Data.SQLite.Core.1.0.112.0\build\net451\System.Data.SQLite.Core.targets')" /> +</Project> \ No newline at end of file diff --git a/src/Bro.Process.DBManager/DataBaseContext.cs b/src/Bro.Process.DBManager/DataBaseContext.cs new file mode 100644 index 0000000..66cdc1e --- /dev/null +++ b/src/Bro.Process.DBManager/DataBaseContext.cs @@ -0,0 +1,67 @@ +锘�//using Bro.Process.Model.Migrations; +//using Bro.Process.Model.Model; +//using System; +//using System.Data.Entity; +//using System.Data.Entity.ModelConfiguration.Conventions; +//using System.Linq; + +//namespace Bro.Process.DataBase +//{ +// public class DataBaseContext : DbContext +// { +// //鎮ㄧ殑涓婁笅鏂囧凡閰嶇疆涓轰粠鎮ㄧ殑搴旂敤绋嬪簭鐨勯厤缃枃浠�(App.config 鎴� Web.config) +// //浣跨敤鈥淒BModel鈥濊繛鎺ュ瓧绗︿覆銆傞粯璁ゆ儏鍐典笅锛屾杩炴帴瀛楃涓查拡瀵规偍鐨� LocalDb 瀹炰緥涓婄殑 +// //鈥淏ro.Process.Model.DBModel鈥濇暟鎹簱銆� +// // +// //濡傛灉鎮ㄦ兂瑕侀拡瀵瑰叾浠栨暟鎹簱鍜�/鎴栨暟鎹簱鎻愪緵绋嬪簭锛岃鍦ㄥ簲鐢ㄧ▼搴忛厤缃枃浠朵腑淇敼鈥淒BModel鈥� +// //杩炴帴瀛楃涓层�� +// public DBModel() +// : base("name=DBModel") +// { +// ////鏁版嵁搴撹縼绉绘鏌ユ殏鏃舵斁鍦ㄦ瀯閫犲嚱鏁颁腑锛屽洖澶翠細鏀惧埌绋嬪簭鍒濆鍖栦腑 +// //Database.SetInitializer(new MigrateDatabaseToLatestVersion<DBModel, Configuration>()); +// } + +// //涓烘偍瑕佸湪妯″瀷涓寘鍚殑姣忕瀹炰綋绫诲瀷閮芥坊鍔� DbSet銆傛湁鍏抽厤缃拰浣跨敤 Code First 妯″瀷 +// //鐨勮缁嗕俊鎭紝璇峰弬闃� http://go.microsoft.com/fwlink/?LinkId=390109銆� + +// // public virtual DbSet<MyEntity> MyEntities { get; set; } +// //public virtual DbSet<PRODUCTION_SECRETKEY> PRODUCTION_SECRETKEY { get; set; } +// //public virtual DbSet<PRODUCTION_CONFIG> PRODUCTION_CONFIG { get; set; } + + +// public virtual DbSet<ProductionDetectionRecords> ProductionDetectionRecords { get; set; } +// public virtual DbSet<ProductionDetectionRecordsDetail> ProductionDetectionRecordsDetail { get; set; } +// public virtual DbSet<OperationRecords> OperationRecords { get; set; } +// public virtual DbSet<ProductionDetectionImageRecords> ProductionDetectionImageRecords { get; set; } +// public virtual DbSet<ManualDetectionRecords> ManualDetectionRecords { get; set; } +// public virtual DbSet<EventTimeRecords> EventTimeRecords { get; set; } + +// protected override void OnModelCreating(DbModelBuilder modelBuilder) +// { +// //base.OnModelCreating(modelBuilder); + +// #region for sqlite db +// modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); +// modelBuilder.Configurations.AddFromAssembly(typeof(DBModel).Assembly); +// #endregion +// } +// } + +// public static class DatabaseInitialize +// { +// public static void Initialize() +// { +// Database.SetInitializer(new MigrateDatabaseToLatestVersion<DBModel, Configuration>()); +// using (DbContext dbContext = new DBModel()) +// { +// dbContext.Database.Initialize(true); +// } +// } +// } +// //public class MyEntity +// //{ +// // public int Id { get; set; } +// // public string Name { get; set; } +// //} +//} \ No newline at end of file diff --git a/src/Bro.Process.DBManager/ModelManager.cs b/src/Bro.Process.DBManager/ModelManager.cs new file mode 100644 index 0000000..20855a6 --- /dev/null +++ b/src/Bro.Process.DBManager/ModelManager.cs @@ -0,0 +1,113 @@ +锘�//using Bro.Process.Model; +//using System; +//using System.Collections.Generic; +//using System.Configuration; +//using System.Data.Common; +//using System.Data.Entity; +//using System.Data.SQLite; +//using System.Linq; +//using System.Reflection; +//using System.Text; +//using System.Threading.Tasks; + +//namespace Bro.Process.DataBase +//{ +// public class ModelManager<T> where T : BaseModel, new() +// { +// private PropertyInfo TableProperty = null; +// public static string ConnectionString = ConfigurationManager.ConnectionStrings["DBModel"].ConnectionString; +// public ModelManager() +// { +// T t = new T(); +// using (DBModel db = new DBModel()) +// { +// TableProperty = db.GetType().GetProperties().FirstOrDefault(u => u.Name == t.GetType().Name); +// } +// } + +// public void NewModel(T t, string userId = "") +// { +// using (DBModel context = new DBModel()) +// { +// ActionBeforeNewModel(context, t); + +// t.SetNew(userId); +// (TableProperty.GetValue(context) as DbSet<T>).Add(t); + +// context.SaveChanges(); +// } +// } + +// public void BatchAdd(List<T> t, string userId = "") +// { +// using (DBModel context = new DBModel()) +// { +// (TableProperty.GetValue(context) as DbSet<T>).AddRange(t); +// context.SaveChanges(); +// } +// } + +// public void UpdateModel(T t, string userId = "") +// { +// using (DBModel context = new DBModel()) +// { +// ActionBeforeUpdateModel(context, t); + +// DbSet<T> set = TableProperty.GetValue(context) as DbSet<T>; +// T oldT = set.FirstOrDefault(u => u.ID == t.ID); + +// oldT.DataTransfer(t); +// oldT.SetUpdate(userId); +// context.SaveChanges(); +// } +// } + +// public void DeleteModel(string id, bool isDelete = true, string userId = "") +// { +// using (DBModel context = new DBModel()) +// { +// ActionBeforeDeleteModel(context, id); + +// DbSet<T> set = TableProperty.GetValue(context) as DbSet<T>; +// T oldT = set.FirstOrDefault(u => u.ID == id); +// oldT.IS_DELETED = isDelete ? 1 : 0; +// oldT.SetUpdate(userId); + +// context.SaveChanges(); +// } +// } + +// public void DisableModel(string id, bool isDisable = true, string userId = "") +// { +// using (DBModel context = new DBModel()) +// { +// ActionBeforeEnableModel(context, id); + +// DbSet<T> set = TableProperty.GetValue(context) as DbSet<T>; +// T oldT = set.FirstOrDefault(u => u.ID == id); +// oldT.IS_DISABLED = isDisable ? 1 : 0; +// oldT.SetUpdate(userId); + +// context.SaveChanges(); +// } +// } + +// #region "" +// protected virtual void ActionBeforeNewModel(DBModel context, T t) +// { +// } + +// protected virtual void ActionBeforeUpdateModel(DBModel context, T t) +// { +// } + +// protected virtual void ActionBeforeDeleteModel(DBModel context, string id) +// { +// } + +// protected virtual void ActionBeforeEnableModel(DBModel context, string id) +// { +// } +// #endregion +// } +//} diff --git a/src/Bro.Process.DBManager/Properties/AssemblyInfo.cs b/src/Bro.Process.DBManager/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..8895ef9 --- /dev/null +++ b/src/Bro.Process.DBManager/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +锘縰sing System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅 +// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼 +// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭�� +[assembly: AssemblyTitle("Bro.Process.DBManager")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Bro.Process.DBManager")] +[assembly: AssemblyCopyright("Copyright 漏 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷 +//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷 +//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆� +[assembly: ComVisible(false)] + +// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID +[assembly: Guid("230b0fff-f6af-45fe-aaf7-b4b66250dd58")] + +// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�: +// +// 涓荤増鏈� +// 娆$増鏈� +// 鐢熸垚鍙� +// 淇鍙� +// +// 鍙互鎸囧畾鎵�鏈夊�硷紝涔熷彲浠ヤ娇鐢ㄤ互涓嬫墍绀虹殑 "*" 棰勭疆鐗堟湰鍙峰拰淇鍙� +//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Bro.Process.DBManager/SQLiteHelper.cs b/src/Bro.Process.DBManager/SQLiteHelper.cs new file mode 100644 index 0000000..64e76a9 --- /dev/null +++ b/src/Bro.Process.DBManager/SQLiteHelper.cs @@ -0,0 +1,614 @@ + + +using System; +using System.Collections; +using System.Collections.Specialized; +using System.Data; +using System.Data.SQLite; +using System.Configuration; + +namespace Bro.Process.DataBase +{ + public class SQLiteHelper + { + //数据库连接字符串 + public static string connectionString = ConfigurationManager.ConnectionStrings["DBModel"].ConnectionString; + + public SQLiteHelper() { } + + #region 公用方法 + + public static int GetMaxID(string FieldName, string TableName) + { + string strsql = "select max(" + FieldName + ")+1 from " + TableName; + object obj = GetSingle(strsql); + if (obj == null) + { + return 1; + } + else + { + return int.Parse(obj.ToString()); + } + } + + public static bool Exists(string strSql) + { + object obj = GetSingle(strSql); + int cmdresult; + if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) + { + cmdresult = 0; + } + else + { + cmdresult = int.Parse(obj.ToString()); + } + if (cmdresult == 0) + { + return false; + } + else + { + return true; + } + } + + public static bool Exists(string strSql, params SQLiteParameter[] cmdParms) + { + object obj = GetSingle(strSql, cmdParms); + int cmdresult; + if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) + { + cmdresult = 0; + } + else + { + cmdresult = int.Parse(obj.ToString()); + } + if (cmdresult == 0) + { + return false; + } + else + { + return true; + } + } + + #endregion + + #region 执行简单SQL语句 + + /// <summary> + /// 执行SQL语句,返回影响的记录数 + /// </summary> + /// <param name="SQLString">SQL语句</param> + /// <returns>影响的记录数</returns> + public static int ExecuteSql(string SQLString) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection)) + { + try + { + connection.Open(); + int rows = cmd.ExecuteNonQuery(); + return rows; + } + catch (System.Data.SQLite.SQLiteException E) + { + connection.Close(); + throw new Exception(E.Message); + } + } + } + } + + /// <summary> + /// 执行SQL语句,设置命令的执行等待时间 + /// </summary> + /// <param name="SQLString"></param> + /// <param name="Times"></param> + /// <returns></returns> + public static int ExecuteSqlByTime(string SQLString, int Times) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection)) + { + try + { + connection.Open(); + cmd.CommandTimeout = Times; + int rows = cmd.ExecuteNonQuery(); + return rows; + } + catch (System.Data.SQLite.SQLiteException E) + { + connection.Close(); + throw new Exception(E.Message); + } + } + } + } + + /// <summary> + /// 执行多条SQL语句,实现数据库事务。 + /// </summary> + /// <param name="SQLStringList">多条SQL语句</param> + public static bool ExecuteSqlTran(ArrayList SQLStringList) + { + bool isSuccess = false; + using (SQLiteConnection conn = new SQLiteConnection(connectionString)) + { + conn.Open(); + SQLiteCommand cmd = new SQLiteCommand(); + cmd.Connection = conn; + cmd.CommandText = "PRAGMA synchronous = OFF;"; + cmd.ExecuteNonQuery(); + SQLiteTransaction tx = conn.BeginTransaction(); + cmd.Transaction = tx; + try + { + for (int n = 0; n < SQLStringList.Count; n++) + { + string strsql = SQLStringList[n].ToString(); + if (strsql.Trim().Length > 1) + { + cmd.CommandText = strsql; + cmd.ExecuteNonQuery(); + } + } + tx.Commit(); + isSuccess = true; + } + catch (System.Data.SQLite.SQLiteException E) + { + tx.Rollback(); + isSuccess = false; + throw new Exception(E.Message); + } + } + return isSuccess; + } + + /// <summary> + /// 执行带一个存储过程参数的的SQL语句。 + /// </summary> + /// <param name="SQLString">SQL语句</param> + /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param> + /// <returns>影响的记录数</returns> + public static int ExecuteSql(string SQLString, string content) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + SQLiteCommand cmd = new SQLiteCommand(SQLString, connection); + SQLiteParameter myParameter = new SQLiteParameter("@content", DbType.String); + myParameter.Value = content; + cmd.Parameters.Add(myParameter); + try + { + connection.Open(); + int rows = cmd.ExecuteNonQuery(); + return rows; + } + catch (System.Data.SQLite.SQLiteException E) + { + throw new Exception(E.Message); + } + finally + { + cmd.Dispose(); + connection.Close(); + } + } + } + + /// <summary> + /// 执行带一个存储过程参数的的SQL语句。 + /// </summary> + /// <param name="SQLString">SQL语句</param> + /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param> + /// <returns>影响的记录数</returns> + public static object ExecuteSqlGet(string SQLString, string content) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + SQLiteCommand cmd = new SQLiteCommand(SQLString, connection); + SQLiteParameter myParameter = new SQLiteParameter("@content", DbType.String); + myParameter.Value = content; + cmd.Parameters.Add(myParameter); + try + { + connection.Open(); + object obj = cmd.ExecuteScalar(); + if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) + { + return null; + } + else + { + return obj; + } + } + catch (System.Data.SQLite.SQLiteException E) + { + throw new Exception(E.Message); + } + finally + { + cmd.Dispose(); + connection.Close(); + } + } + } + + /// <summary> + /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例) + /// </summary> + /// <param name="strSQL">SQL语句</param> + /// <param name="fs">图像字节,数据库的字段类型为image的情况</param> + /// <returns>影响的记录数</returns> + public static int ExecuteSqlInsertImg(string strSQL, byte[] fs) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + SQLiteCommand cmd = new SQLiteCommand(strSQL, connection); + SQLiteParameter myParameter = new SQLiteParameter("@fs", DbType.Binary); + myParameter.Value = fs; + cmd.Parameters.Add(myParameter); + try + { + connection.Open(); + int rows = cmd.ExecuteNonQuery(); + return rows; + } + catch (System.Data.SQLite.SQLiteException E) + { + throw new Exception(E.Message); + } + finally + { + cmd.Dispose(); + connection.Close(); + } + } + } + + /// <summary> + /// 执行一条计算查询结果语句,返回查询结果(object)。 + /// </summary> + /// <param name="SQLString">计算查询结果语句</param> + /// <returns>查询结果(object)</returns> + public static object GetSingle(string SQLString) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection)) + { + try + { + connection.Open(); + object obj = cmd.ExecuteScalar(); + if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) + { + return null; + } + else + { + return obj; + } + } + catch (System.Data.SQLite.SQLiteException e) + { + connection.Close(); + throw new Exception(e.Message); + } + } + } + } + + /// <summary> + /// 执行查询语句,返回SQLiteDataReader(使用该方法切记要手工关闭SQLiteDataReader和连接) + /// </summary> + /// <param name="strSQL">查询语句</param> + /// <returns>SQLiteDataReader</returns> + public static SQLiteDataReader ExecuteReader(string strSQL) + { + SQLiteConnection connection = new SQLiteConnection(connectionString); + SQLiteCommand cmd = new SQLiteCommand(strSQL, connection); + try + { + connection.Open(); + SQLiteDataReader myReader = cmd.ExecuteReader(); + return myReader; + } + catch (System.Data.SQLite.SQLiteException e) + { + throw new Exception(e.Message); + } + //finally //不能在此关闭,否则,返回的对象将无法使用 + //{ + // cmd.Dispose(); + // connection.Close(); + //} + } + + /// <summary> + /// 执行查询语句,返回DataSet + /// </summary> + /// <param name="SQLString">查询语句</param> + /// <returns>DataSet</returns> + public static DataSet Query(string SQLString) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + DataSet ds = new DataSet(); + try + { + connection.Open(); + SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection); + command.Fill(ds, "ds"); + } + catch (System.Data.SQLite.SQLiteException ex) + { + throw new Exception(ex.Message); + } + return ds; + } + } + + public static DataSet Query(string SQLString, string TableName) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + DataSet ds = new DataSet(); + try + { + connection.Open(); + SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection); + command.Fill(ds, TableName); + } + catch (System.Data.SQLite.SQLiteException ex) + { + throw new Exception(ex.Message); + } + return ds; + } + } + + /// <summary> + /// 执行查询语句,返回DataSet,设置命令的执行等待时间 + /// </summary> + /// <param name="SQLString"></param> + /// <param name="Times"></param> + /// <returns></returns> + public static DataSet Query(string SQLString, int Times) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + DataSet ds = new DataSet(); + try + { + connection.Open(); + SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection); + command.SelectCommand.CommandTimeout = Times; + command.Fill(ds, "ds"); + } + catch (System.Data.SQLite.SQLiteException ex) + { + throw new Exception(ex.Message); + } + return ds; + } + } + + #endregion + + #region 执行带参数的SQL语句 + + /// <summary> + /// 执行SQL语句,返回影响的记录数 + /// </summary> + /// <param name="SQLString">SQL语句</param> + /// <returns>影响的记录数</returns> + public static int ExecuteSql(string SQLString, params SQLiteParameter[] cmdParms) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + using (SQLiteCommand cmd = new SQLiteCommand()) + { + try + { + PrepareCommand(cmd, connection, null, SQLString, cmdParms); + int rows = cmd.ExecuteNonQuery(); + cmd.Parameters.Clear(); + return rows; + } + catch (System.Data.SQLite.SQLiteException E) + { + throw new Exception(E.Message); + } + } + } + } + + /// <summary> + /// 执行多条SQL语句,实现数据库事务。 + /// </summary> + /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SQLiteParameter[])</param> + public static void ExecuteSqlTran(Hashtable SQLStringList) + { + using (SQLiteConnection conn = new SQLiteConnection(connectionString)) + { + conn.Open(); + using (SQLiteTransaction trans = conn.BeginTransaction()) + { + SQLiteCommand cmd = new SQLiteCommand(); + try + { + //循环 + foreach (DictionaryEntry myDE in SQLStringList) + { + string cmdText = myDE.Key.ToString(); + SQLiteParameter[] cmdParms = (SQLiteParameter[])myDE.Value; + PrepareCommand(cmd, conn, trans, cmdText, cmdParms); + int val = cmd.ExecuteNonQuery(); + cmd.Parameters.Clear(); + } + trans.Commit(); + } + catch (System.Data.SQLite.SQLiteException e) + { + trans.Rollback(); + throw new Exception(e.Message); + } + } + } + } + + /// <summary> + /// 执行一条计算查询结果语句,返回查询结果(object)。 + /// </summary> + /// <param name="SQLString">计算查询结果语句</param> + /// <returns>查询结果(object)</returns> + public static object GetSingle(string SQLString, params SQLiteParameter[] cmdParms) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + using (SQLiteCommand cmd = new SQLiteCommand()) + { + try + { + PrepareCommand(cmd, connection, null, SQLString, cmdParms); + object obj = cmd.ExecuteScalar(); + cmd.Parameters.Clear(); + if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) + { + return null; + } + else + { + return obj; + } + } + catch (System.Data.SQLite.SQLiteException e) + { + throw new Exception(e.Message); + } + } + } + } + + /// <summary> + /// 执行查询语句,返回SQLiteDataReader (使用该方法切记要手工关闭SQLiteDataReader和连接) + /// </summary> + /// <param name="strSQL">查询语句</param> + /// <returns>SQLiteDataReader</returns> + public static SQLiteDataReader ExecuteReader(string SQLString, params SQLiteParameter[] cmdParms) + { + SQLiteConnection connection = new SQLiteConnection(connectionString); + SQLiteCommand cmd = new SQLiteCommand(); + try + { + PrepareCommand(cmd, connection, null, SQLString, cmdParms); + SQLiteDataReader myReader = cmd.ExecuteReader(); + cmd.Parameters.Clear(); + return myReader; + } + catch (System.Data.SQLite.SQLiteException e) + { + throw new Exception(e.Message); + } + //finally //不能在此关闭,否则,返回的对象将无法使用 + //{ + // cmd.Dispose(); + // connection.Close(); + //} + + } + + /// <summary> + /// 执行查询语句,返回DataSet + /// </summary> + /// <param name="SQLString">查询语句</param> + /// <returns>DataSet</returns> + public static DataSet Query(string SQLString, params SQLiteParameter[] cmdParms) + { + using (SQLiteConnection connection = new SQLiteConnection(connectionString)) + { + SQLiteCommand cmd = new SQLiteCommand(); + PrepareCommand(cmd, connection, null, SQLString, cmdParms); + using (SQLiteDataAdapter da = new SQLiteDataAdapter(cmd)) + { + DataSet ds = new DataSet(); + try + { + da.Fill(ds, "ds"); + cmd.Parameters.Clear(); + } + catch (System.Data.SQLite.SQLiteException ex) + { + throw new Exception(ex.Message); + } + return ds; + } + } + } + + public static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, + SQLiteTransaction trans, string cmdText, SQLiteParameter[] cmdParms) + { + if (conn.State != ConnectionState.Open) + conn.Open(); + cmd.Connection = conn; + cmd.CommandText = cmdText; + if (trans != null) + cmd.Transaction = trans; + cmd.CommandType = CommandType.Text;//cmdType; + if (cmdParms != null) + { + foreach (SQLiteParameter parameter in cmdParms) + { + if ((parameter.Direction == ParameterDirection.InputOutput + || parameter.Direction == ParameterDirection.Input) && + (parameter.Value == null)) + { + parameter.Value = DBNull.Value; + } + cmd.Parameters.Add(parameter); + } + } + } + + #endregion + + #region 参数转换 + /// <summary> + /// 放回一个SQLiteParameter + /// </summary> + /// <param name="name">参数名字</param> + /// <param name="type">参数类型</param> + /// <param name="size">参数大小</param> + /// <param name="value">参数值</param> + /// <returns>SQLiteParameter的值</returns> + public static SQLiteParameter MakeSQLiteParameter(string name, + DbType type, int size, object value) + { + SQLiteParameter parm = new SQLiteParameter(name, type, size); + parm.Value = value; + return parm; + } + + public static SQLiteParameter MakeSQLiteParameter(string name, DbType type, object value) + { + SQLiteParameter parm = new SQLiteParameter(name, type); + parm.Value = value; + return parm; + } + + #endregion + } +} \ No newline at end of file diff --git a/src/Bro.Process.DBManager/packages.config b/src/Bro.Process.DBManager/packages.config new file mode 100644 index 0000000..455fb3e --- /dev/null +++ b/src/Bro.Process.DBManager/packages.config @@ -0,0 +1,10 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="EntityFramework" version="6.4.0" targetFramework="net452" /> + <package id="SQLite.CodeFirst" version="1.5.3.29" targetFramework="net452" /> + <package id="System.Data.SQLite" version="1.0.112.0" targetFramework="net452" /> + <package id="System.Data.SQLite.Core" version="1.0.112.0" targetFramework="net452" /> + <package id="System.Data.SQLite.EF6" version="1.0.112.0" targetFramework="net452" /> + <package id="System.Data.SQLite.EF6.Migrations" version="1.0.106" targetFramework="net452" /> + <package id="System.Data.SQLite.Linq" version="1.0.112.0" targetFramework="net452" /> +</packages> \ No newline at end of file -- Gitblit v1.8.0