6/14 초기화

This commit is contained in:
crusader 2019-06-16 14:12:09 +09:00
commit 60754b31f8
1547 changed files with 768988 additions and 0 deletions

261
.gitignore vendored Normal file
View File

@ -0,0 +1,261 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
project.fragment.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
#*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

View File

@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.Text;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : Database 관련 클래스 Activator
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
public class Activator : InitServiceAbstract
{
/// <summary>
/// 프로젝트 로드의 주진입점을 정의합니다.
/// </summary>
public Activator()
{
}
/// <summary>
///
/// </summary>
/// <param name="sClassNm"></param>
/// <returns></returns>
public override object InitServiceInstance(string sClassNm)
{
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Starting !!!");
object retObj = null;
//클래스 찾아오기 위함
switch (sClassNm)
{
case ServiceLists.AGENT_DATABASE.DATABASE_MSSQL:
{
Cosmos.Database.DatabaseMssql agentClass = new Cosmos.Database.DatabaseMssql();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_DATABASE.DATABASE_ORACLE:
{
//Cosmos.Database.DatabaseOracle agentClass = new Cosmos.Database.DatabaseOracle();
//retObj = agentClass;
break;
}
}
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Completed !!!");
return retObj;
}
}
}

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" 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>{057CA9DA-C2C8-4873-B914-92E115F94659}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Cosmos.Database</RootNamespace>
<AssemblyName>Agent.Database</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>Svn</SccProjectName>
<SccLocalPath>Svn</SccLocalPath>
<SccAuxPath>Svn</SccAuxPath>
<SccProvider>SubversionScc</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\BIN\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\..\BIN\Agent.Database.XML</DocumentationFile>
<PlatformTarget>x86</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="Cosmos.BaseFrame, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.BaseFrame.dll</HintPath>
</Reference>
<Reference Include="Cosmos.UserFrame, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.UserFrame.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Activator.cs" />
<Compile Include="DatabaseMssql.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Library\Common\Common.csproj">
<Project>{a5b7accd-79eb-4261-bd36-01ab484ad8e3}</Project>
<Name>Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>copy .\IC\Agent.Database.dll .\Agent.Database.dll</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>copy .\Agent.Database.dll .\IC\Agent.Database.dll</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1,132 @@
using System.Data.SqlClient;
using System.Data;
using System.Diagnostics;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : MSSQL DB 관련 처리
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Database
{
public class DatabaseMssql : IDatabaseSQL
{
private SqlDB sqlDb = null;
public bool Begin()
{
return sqlDb.DBBeginTransaction();
}
public bool Commit()
{
return sqlDb.DBTransactionCommit();
}
public bool Rollback()
{
return sqlDb.DBTransactionRollback();
}
public void Close()
{
sqlDb.DBClose();
}
/// <summary>
/// SQL DataTable를 이용한 Select
/// <para>return -> 1:OK, -1:Connection 정보 에러, -2:SQL 에러, -3:기타 에러, 0:Select 결과 없음</para>
/// </summary>
/// <param name="sQuery"></param>
/// <param name="outDtReturn"></param>
/// <returns></returns>
public int DBSelect(string sQuery, out DataTable outDtReturn)
{
int iReturn = -9;
DataTable dtReturn = null;
string strCommand = sQuery;
CommandType sqlCommandType = CommandType.Text;
//System.Diagnostics.Debug.Print("SQL=" + sQuery);
iReturn = sqlDb.DBDataTableSelect(strCommand, sqlCommandType, (SqlParameter[])null, out dtReturn);
outDtReturn = dtReturn;
return iReturn;
}
/// <summary>
/// return -> 1:OK, -1:Connection 에러, -2:SQL 에러, -3:기타 에러, -4:적용된 Row 없음
/// </summary>
/// <param name="sQuery"></param>
/// <returns></returns>
public int DBExecuteNonQuery(string sQuery)
{
int iReturn = 0;
CommandType sqlCommandType = CommandType.Text;
iReturn = sqlDb.DBExecuteNonQuery(sQuery, sqlCommandType, (SqlParameter[])null);
return iReturn;
}
/// <summary>
/// return -> 1:OK, -1:Connection 에러, -2:SQL 에러, -3:기타 에러, -4:적용된 Row 없음
/// </summary>
/// <param name="sQuery"></param>
/// <returns></returns>
public int DBExecuteNonQuery(string[] sQuery)
{
int iReturn = 0;
CommandType sqlCommandType = CommandType.Text;
iReturn = sqlDb.DBExecuteNonQuery(sQuery, sqlCommandType, (SqlParameter[])null);
return iReturn;
}
/// <summary>
/// return -> 1:OK, -1:Connection 에러, -2:SQL 에러, -3:기타 에러, -4:적용된 Row 없음
/// </summary>
/// <param name="sQuery"></param>
/// <returns></returns>
public int DBExecuteNonQuery(string[] sQuery, bool bStandAlone)
{
int iReturn = 0;
CommandType sqlCommandType = CommandType.Text;
iReturn = sqlDb.DBExecuteNonQuery(sQuery, sqlCommandType, (SqlParameter[])null, bStandAlone);
return iReturn;
}
/// <summary>
/// MSSQL Database Conntction String
/// </summary>
/// <param name="pDataSource"></param>
/// <param name="pInitialCatalog"></param>
/// <param name="pUID"></param>
/// <param name="pPassword"></param>
public bool SetDBConnectionString(string pDataSource, string pInitialCatalog, string pUID, string pPassword)
{
bool bReturn = false;
if(sqlDb != null)
{
if (sqlDb.IsDBOpen()) sqlDb.DBClose();
}
sqlDb = new SqlDB(pDataSource, pInitialCatalog, pUID, pPassword);
bReturn = sqlDb.IsDBOpen();
return bReturn;
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
// 어셈블리와 관련된 정보를 수정하려면
// 이 특성 값을 변경하십시오.
[assembly: AssemblyTitle("Database")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Database")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("dab8af19-a211-4c3f-87a1-79b22ffca956")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : TranInterfaceOutside 관련 클래스 Activator
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
public class Activator : InitServiceAbstract
{
/// <summary>
/// 프로젝트 로드의 주진입점을 정의합니다.
/// </summary>
public Activator()
{
}
/// <summary>
///
/// </summary>
/// <param name="sClassNm"></param>
/// <returns></returns>
public override object InitServiceInstance(string sClassNm)
{
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Starting !!!");
object retObj = null;
//클래스 찾아오기 위함
switch (sClassNm)
{
case ServiceLists.AGENT_TranInterfaceOutside.TIFO_MAIN:
{
Cosmos.TranInterfaceOutside.TranInterfaceOutside agentClass = new Cosmos.TranInterfaceOutside.TranInterfaceOutside();
retObj = agentClass;
break;
}
}
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Completed !!!");
return retObj;
}
}
}

View File

@ -0,0 +1,181 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Collections;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.Data;
using System.Net.Sockets;
using System.Threading;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : FTP 다운로드
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.TranInterfaceOutside
{
public class NetworkFtp : INetworkFTP
{
private readonly string LOCAL_DOWN_PATH = BaseCom.NxRootPath + @"DOWN\"; //Download File Location (다운로드 파일위치)
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// POS Status Value (POS 상태값)
/// </summary>
private PosStatus m_cPosStatus = null;
private FTP m_ClsFtp;
public NetworkFtp()
{
m_cPosStatus = (PosStatus)StateObject.POS;
}
/// <summary>
/// FTP 서버에 Connect
/// </summary>
/// <param name="sServer"></param>
/// <param name="sUserId"></param>
/// <param name="sPassword"></param>
/// <param name="iTimeOutSeconds"></param>
/// <param name="iPort"></param>
/// <returns>0 : 정상접속, -1:시간초과, -2:로그인 실패, -3:서버접속 실패, -4:지원하지 않는 시스템</returns>
public int Connect(string sServer, string sUserId, string sPassword, int iTimeOutSeconds, int iPort)
{
int nReturn = -9;
try
{
m_ClsFtp = new FTP((iPort == 0) ? sServer : sServer + ":" + iPort, sUserId, sPassword);
if (m_ClsFtp != null) nReturn = 0;
else nReturn = -1;
////m_ClsFtp = new ClsFtp(sServer, sUserId, sPassword, iTimeOutSeconds, iPort);
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// //MessageBox.Show("FTP Server Connect Error !!! [" + nReturn.ToString() + "]");
//// return nReturn;
////}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Connect()", e.Message);
return nReturn;
}
return nReturn;
}
/// <summary>
///
/// </summary>
/// <param name="sSvrDirectory"></param>
/// <param name="sLocalDirectory"></param>
/// <param name="sFileNm"></param>
/// <returns>0:정상종료, -1:Not Connected, -2:Binary Mode set failed, -3: failed local file Create, -4:socket 에러, -5:remote file 없슴, -6:정상수신실패, -7: 파일사이즈 틀림</returns>
public int Download(string sSvrDirectory, string sLocalDirectory, string sFileNm, string sFtpMode = PosConst.FTP_CONN_TYPE.PASSIVE)
{
string sMsg = "";
return Download(sSvrDirectory, sLocalDirectory, sFileNm, ref sMsg, sFtpMode);
}
public int Download(string sSvrDirectory, string sLocalDirectory, string sFileNm, ref string sMsg, string sFtpMode = PosConst.FTP_CONN_TYPE.PASSIVE)
{
int nReturn = -9;
bool bRet = false;
try
{
if (CmUtil.RightH(sLocalDirectory, 1) != "\\") sLocalDirectory += "\\";
if (Directory.Exists(sLocalDirectory) == false) Directory.CreateDirectory(sLocalDirectory);
bRet = m_ClsFtp.Download(sSvrDirectory + sFileNm, sLocalDirectory + sFileNm, ref sMsg, sFtpMode);
if (bRet) nReturn = 0;
else nReturn = -1;
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// return nReturn;
////}
////string sDir = m_ClsFtp.ChangeDir(sSvrDirectory);
////nReturn = m_ClsFtp.Download(sLocalDirectory, sFileNm, true);
////if (nReturn < 0 && File.Exists(BaseCom.NxDownPath + sFileNm + ".ftp") == true)
////{
//// File.Delete(BaseCom.NxDownPath + sFileNm + ".ftp");
////}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Download()", e.Message);
sMsg = sFileNm + " " + e.Message;
return nReturn;
}
return nReturn;
}
/// <summary>
/// FTP서버와의 연결을 종료
/// </summary>
public void Disconnect()
{
//m_ClsFtp.Close();
//m_ClsFtp.cleanup();
}
/// <summary>
/// 정해진 디렉토리에 정해진 파일을 업로드
/// </summary>
/// <param name="sSvrDirectory"></param>
/// <param name="sLocalDirectory"></param>
/// <param name="sFileNm"></param>
/// <returns>0:정상완료, -1:Not Connected, -2: data socket create error, -3: file write 실패, -4:socket error, -5: 정상처리 실패(서버)</returns>
public int Upload(string sSvrDirectory, string sLocalDirectory, string sFileNm)
{
int nReturn = -9;
bool bRet = false;
try
{
bRet = m_ClsFtp.Upload(sLocalDirectory + sFileNm, sSvrDirectory + sFileNm);
if (bRet) nReturn = 0;
else nReturn = -1;
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// return nReturn;
////}
////string sDir = m_ClsFtp.ChangeDir(sSvrDirectory);
////nReturn = m_ClsFtp.Upload(sLocalDirectory, sFileNm, true);
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Upload()", e.Message);
return nReturn;
}
return nReturn;
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
// 어셈블리와 관련된 정보를 수정하려면
// 이 특성 값을 변경하십시오.
[assembly: AssemblyTitle("TranInterfaceOutside")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TranInterfaceOutside")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("21f97fce-451b-4bfd-922a-565e98bf87c6")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" 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>{7BA1E882-7E84-4A09-AE93-0447624BB13E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Cosmos.TranInterfaceOutside</RootNamespace>
<AssemblyName>Agent.TranInterfaceOutside</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
<SccProjectName>Svn</SccProjectName>
<SccLocalPath>Svn</SccLocalPath>
<SccAuxPath>Svn</SccAuxPath>
<SccProvider>SubversionScc</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\BIN\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</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="Cosmos.BaseFrame">
<HintPath>..\..\..\BIN\Cosmos.BaseFrame.dll</HintPath>
</Reference>
<Reference Include="Cosmos.ServiceProvider">
<HintPath>..\..\..\BIN\Cosmos.ServiceProvider.dll</HintPath>
</Reference>
<Reference Include="Cosmos.UserFrame">
<HintPath>..\..\..\BIN\Cosmos.UserFrame.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Runtime.Serialization.Formatters.Soap" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Activator.cs" />
<Compile Include="NetworkFtp.cs" />
<Compile Include="TranInterfaceOutside.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Library\Common\Common.csproj">
<Project>{a5b7accd-79eb-4261-bd36-01ab484ad8e3}</Project>
<Name>Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>copy .\IC\Agent.TranInterfaceOutside.dll .\Agent.TranInterfaceOutside.dll</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>copy .\Agent.TranInterfaceOutside.dll .\IC\Agent.TranInterfaceOutside.dll</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

56
Agent/KDS/Activator.cs Normal file
View File

@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : KDS 관련 클래스 Activator
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
public class Activator : InitServiceAbstract
{
/// <summary>
/// 프로젝트 로드의 주진입점을 정의합니다.
/// </summary>
public Activator()
{
}
/// <summary>
///
/// </summary>
/// <param name="sClassNm"></param>
/// <returns></returns>
public override object InitServiceInstance(string sClassNm)
{
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Starting !!!");
object retObj = null;
//클래스 찾아오기 위함
switch (sClassNm)
{
case ServiceLists.AGENT_KDS.KDS_MAIN:
{
Cosmos.KDS.KDSMain agentClass = new Cosmos.KDS.KDSMain();
retObj = agentClass;
break;
}
}
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Completed !!!");
return retObj;
}
}
}

45
Agent/KDS/Common.cs Normal file
View File

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Cosmos.KDS
{
public class KDSItem
{
public string sOrderType;
public string sFloorCd;
public string sTableNo;
public string sKtchSysCd;
public int nSeq;
public string sCmpCd;
public string sBrandCd;
public string sStorCd;
public string sPosNo;
public string sTradeNo;
public string sSaleDt;
public string sPosType;
public string sItemCd;
public string sItemDiv;
public string sItemNm;
public int nQty;
public string sPackDiv;
public string sSetMenuCd;
public string sOrdTime;
public string sCancelDiv;
public string sOrgBillPosNo;
public string sOrgBillDt;
public string sOrgBillNo;
public string sKtchSysUseDiv;
public string sKtchKdsIp;
public string sKtchKdsPort;
public string sErrorCd;
public string sSendYn;
public string sResendYn;
public string sFiller1;
public string sFiller2;
public string sFiller3;
public string sFiller4;
public string sFiller5;
}
}

89
Agent/KDS/KDS.csproj Normal file
View File

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" 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>{DF8A2088-9F76-47DE-9B50-7AA93FE359A4}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Cosmos.KDS</RootNamespace>
<AssemblyName>Agent.KDS</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>Svn</SccProjectName>
<SccLocalPath>Svn</SccLocalPath>
<SccAuxPath>Svn</SccAuxPath>
<SccProvider>SubversionScc</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\BIN\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</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="Cosmos.BaseFrame">
<HintPath>..\..\..\BIN\Cosmos.BaseFrame.dll</HintPath>
</Reference>
<Reference Include="Cosmos.ServiceProvider">
<HintPath>..\..\..\BIN\Cosmos.ServiceProvider.dll</HintPath>
</Reference>
<Reference Include="Cosmos.UserFrame">
<HintPath>..\..\..\BIN\Cosmos.UserFrame.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Activator.cs" />
<Compile Include="Common.cs" />
<Compile Include="KDSMain.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Library\CommonManager\CommonManager.csproj">
<Project>{670a81be-cee3-4c29-846d-a37652ca270d}</Project>
<Name>CommonManager</Name>
</ProjectReference>
<ProjectReference Include="..\..\Library\Common\Common.csproj">
<Project>{a5b7accd-79eb-4261-bd36-01ab484ad8e3}</Project>
<Name>Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>copy .\IC\Agent.KDS.dll .\Agent.KDS.dll</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>copy .\Agent.KDS.dll .\IC\Agent.KDS.dll</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

1145
Agent/KDS/KDSMain.cs Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
// 어셈블리와 관련된 정보를 수정하려면
// 이 특성 값을 변경하십시오.
[assembly: AssemblyTitle("KDS")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("KDS")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("cca78233-98fd-4127-8d4a-4f468cedfe3f")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

57
Agent/KPS/Activator.cs Normal file
View File

@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : KPS 관련 클래스 Activator
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
public class Activator : InitServiceAbstract
{
/// <summary>
/// Define main entrance point of project load. (프로젝트 로드의 주진입점을 정의합니다.)
/// </summary>
public Activator()
{
}
/// <summary>
///
/// </summary>
/// <param name="sClassNm"></param>
/// <returns></returns>
public override object InitServiceInstance(string sClassNm)
{
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Starting !!!");
object retObj = null;
//클래스 찾아오기 위함
switch (sClassNm)
{
case ServiceLists.AGENT_KPS.KPS_MAIN:
{
Cosmos.KPS.KPSMain agentClass = new Cosmos.KPS.KPSMain();
retObj = agentClass;
break;
}
}
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Completed !!!");
return retObj;
}
}
}

595
Agent/KPS/Common.cs Normal file
View File

@ -0,0 +1,595 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Cosmos.KPS
{
/// <summary>
/// Kitchen Device Status
/// </summary>
public class KTCH_SYS_STATUS
{
public string sSubShopCd;
public string sKtchSysCd;
public int nErrorCd;
}
public class KPSItem
{
/// <summary>
/// 연습모드구분 0:일반, 1:연습모드
/// </summary>
public string sTrainMode;
public string sOrderType;
public string sFloorCd;
public string sTableNo;
public string sSubShopCd; // Add, 2017.02.06
public string sKtchSysCd;
public int nSeq;
public string sOrderNo;
public string sPosType;
public string sItemCd;
public string sItemNm;
/// <summary>
/// 상품구분(0:일반, 1:세트, 2:세트자식, 3:부가상품, 4:세트할인, 5:상품권(추가))
/// </summary>
public string sItemDiv;
public int nQty;
public string sPackDiv;
public string sSetMenuCd;
public string sOrdTime;
public string sCancelDiv;
/// <summary>
/// 0:정상 1:재전송
/// </summary>
public string sResendYn;
public string sKtchSysUseDiv;
public int nKpsComPort;
public int nKpsComBaudrate;
public string sKpsOposName;
public string sKpsIp;
public string sKpsPort;
/// <summary>
/// 0:미전송 1:전송
/// 7:영수증프린터출력(주방프린터와 영수증프린터가 동일장치)
/// 8:영수증프린터출력(주방출력오류)
/// </summary>
public string sSendYn;
/// <summary>
/// 0000 : 정상
///
/// </summary>
public string sErrorCd;
//public string sKpsCdBackup1;
//public string sKpsCdBackup2;
//public string sKpsCdBackup3;
//public string sKpsCdBackup4;
//public string sKpsCdBackup5;
//public string sKpsCdBackup6;
/// <summary>
/// 반복출력 횟수
/// </summary>
public string sFiller1;
/// <summary>
/// 기타주문구분
/// 1:후불일반판매, 2:해피오더
/// </summary>
public string sFiller2;
/// <summary>
/// 추가주문구분 (NEW,ADD,DEL)
/// </summary>
public string sFiller3;
/// <summary>
/// 부가메뉴구분 (SUBPRC_MENU_KEY_DIV)
///
/// </summary>
public string sFiller4;
public string sFiller5;
/// <summary>
/// 수동출력일때 주방메모
/// </summary>
public string sKtchMemo = string.Empty;
/// <summary>
/// 상품메모
/// </summary>
public string sItemMemo = string.Empty;
/// <summary>
/// 주문담당자
/// </summary>
public string sOrdPicNm = string.Empty;
/// <summary>
/// 장치명
/// </summary>
public string sKtchSysNm = string.Empty; // Add, 2017.04.07
/// <summary>
/// 최종주문POS
/// </summary>
public string sOrdPosNo = string.Empty; // Add, 2017.04.10
// 2017.09.06 레시피 추가
/// <summary>
/// 레시피
/// </summary>
public string sRecipe= string.Empty;
//#20180515 KPS 출력시 라벨프린터 출력 start
/// <summary>
/// 라벨프린터 출력여부(0:미전송, 1:전송)
/// </summary>
public string sLblSendYn = string.Empty;
/// <summary>
/// 라벨프린터 총출력 해야 할 건수
/// </summary>
public int iTOTCNT = 0;
/// <summary>
/// 라벨프린터 QRCODE URL
/// </summary>
public string sQrcodeUrl = "";
/// <summary>
/// 라벨프린터 QRCODE MSG
/// </summary>
public string sQrcodeMsg = "";
/// <summary>
/// 라벨프린터 TOP MSG
/// </summary>
public string sTopMsg = "";
/// <summary>
/// 라벨프린터 BTM MSG
/// </summary>
public string sBtmMsg = "";
//#20180515 KPS 출력시 라벨프린터 출력 end
}
/// <summary>
/// Table Master
/// </summary>
public class TableMaster
{
public string sFloorCd;
public string sTableNo;
public string sTableNm;
public string sTableDispDiv;
}
//public class TABLE_DISP_FLAG
//{
// public const string TABLE_NO = "0"; // 테이블 번호
// public const string TABLE_NAME = "1"; // 테이블 이름
// public const string TABLE_NO_NAME = "2"; // 테이블 번호 + 이름
//}
public class KPSOrderMessage
{
/// <summary>
/// 연습모드구분 0:일반, 1:연습모드
/// </summary>
public string sTrainMode; // Add, 2017.03.03
public string sOrderType;
public string sFloorCd;
public string sTableNo;
public int nSeq;
public string sSubShopCd; // Add, 2017.02.06
public string sKtchSysCd;
public string sItemCd;
public string sItemNm;
public string sMsgId;
public string sMsg1;
public string sMsg2;
public string sMsg3;
public string sMsgRegTime;
public string sKtchSysUseDiv;
public int nKpsComPort;
public int nKpsComBaudrate;
public string sKpsOposName;
public string sKpsIp;
public string sKpsPort;
public string sSendYn;
public string sResendYn;
public string sErrorCd;
public int printCount = 1;
//public string sKpsCdBackup1;
//public string sKpsCdBackup2;
//public string sKpsCdBackup3;
//public string sKpsCdBackup4;
//public string sKpsCdBackup5;
//public string sKpsCdBackup6;
public string sRegDate;
/// <summary>
/// 장치명
/// </summary>
public string sKtchSysNm = string.Empty; // Add, 2017.04.07
/// <summary>
/// 마지막주문POS
/// </summary>
public string sOrdPosNo = string.Empty; // Add, 2017.04.10
}
public class OPOS
{
public const int CASH_SUE_DRAWERCLOSED = 0;
public const int CASH_SUE_DRAWEROPEN = 1;
public const int CHAN_STATUS_ASYNC = 91;
public const int CHAN_STATUS_EMPTY = 11;
public const int CHAN_STATUS_EMPTYOK = 13;
public const int CHAN_STATUS_FULL = 21;
public const int CHAN_STATUS_FULLOK = 23;
public const int CHAN_STATUS_JAM = 31;
public const int CHAN_STATUS_JAMOK = 32;
public const int CHAN_STATUS_NEAREMPTY = 12;
public const int CHAN_STATUS_NEARFULL = 22;
public const int CHAN_STATUS_OK = 0;
public const int COIN_STATUS_EMPTY = 2;
public const int COIN_STATUS_JAM = 4;
public const int COIN_STATUS_NEAREMPTY = 3;
public const int COIN_STATUS_OK = 1;
public const int DISP_CB_BLINKALL = 1;
public const int DISP_CB_BLINKEACH = 2;
public const int DISP_CB_NOBLINK = 0;
public const int DISP_CCS_ALPHA = 1;
public const int DISP_CCS_ASCII = 998;
public const int DISP_CCS_KANA = 10;
public const int DISP_CCS_KANJI = 11;
public const int DISP_CCS_NUMERIC = 0;
public const int DISP_CS_ASCII = 998;
public const int DISP_CS_WINDOWS = 999;
public const int DISP_DT_BLINK = 1;
public const int DISP_DT_NORMAL = 0;
public const int DISP_MF_PLACE = 1;
public const int DISP_MF_WALK = 0;
public const int DISP_MT_DOWN = 2;
public const int DISP_MT_INIT = 5;
public const int DISP_MT_LEFT = 3;
public const int DISP_MT_NONE = 0;
public const int DISP_MT_RIGHT = 4;
public const int DISP_MT_UP = 1;
public const int DISP_SD_BLINK = 2;
public const int DISP_SD_OFF = 0;
public const int DISP_SD_ON = 1;
public const int DISP_ST_DOWN = 2;
public const int DISP_ST_LEFT = 3;
public const int DISP_ST_RIGHT = 4;
public const int DISP_ST_UP = 1;
public const int FPTR_AT_AMOUNT_DISCOUNT = 1;
public const int FPTR_AT_AMOUNT_SURCHARGE = 2;
public const int FPTR_AT_PERCENTAGE_DISCOUNT = 3;
public const int FPTR_AT_PERCENTAGE_SURCHARGE = 4;
public const int FPTR_CC_BRAZIL = 1;
public const int FPTR_CC_GREECE = 2;
public const int FPTR_CC_HUNGARY = 3;
public const int FPTR_CC_ITALY = 4;
public const int FPTR_CC_POLAND = 5;
public const int FPTR_CC_TURKEY = 6;
public const int FPTR_EL_BLOCKED = 4;
public const int FPTR_EL_FATAL = 3;
public const int FPTR_EL_NONE = 1;
public const int FPTR_EL_RECOVERABLE = 2;
public const int FPTR_GD_CURRENT_TOTAL = 1;
public const int FPTR_GD_DAILY_TOTAL = 2;
public const int FPTR_GD_FIRMWARE = 10;
public const int FPTR_GD_GRAND_TOTAL = 8;
public const int FPTR_GD_MID_VOID = 6;
public const int FPTR_GD_NOT_PAID = 5;
public const int FPTR_GD_PRINTER_ID = 9;
public const int FPTR_GD_RECEIPT_NUMBER = 3;
public const int FPTR_GD_REFUND = 4;
public const int FPTR_GD_RESTART = 11;
public const int FPTR_GD_Z_REPORT = 7;
public const int FPTR_PS_FISCAL_DOCUMENT = 5;
public const int FPTR_PS_FISCAL_RECEIPT = 2;
public const int FPTR_PS_FISCAL_RECEIPT_ENDING = 4;
public const int FPTR_PS_FISCAL_RECEIPT_TOTAL = 3;
public const int FPTR_PS_FIXED_OUTPUT = 6;
public const int FPTR_PS_ITEM_LIST = 7;
public const int FPTR_PS_LOCKED = 8;
public const int FPTR_PS_MONITOR = 1;
public const int FPTR_PS_NONFISCAL = 9;
public const int FPTR_PS_REPORT = 10;
public const int FPTR_RT_DATE = 2;
public const int FPTR_RT_ORDINAL = 1;
public const int FPTR_S_JOURNAL = 1;
public const int FPTR_S_RECEIPT = 2;
public const int FPTR_S_SLIP = 4;
public const int FPTR_SS_FULL_LENGTH = 1;
public const int FPTR_SS_VALIDATION = 2;
public const int FPTR_SUE_COVER_OK = 12;
public const int FPTR_SUE_COVER_OPEN = 11;
public const int FPTR_SUE_IDLE = 1001;
public const int FPTR_SUE_JRN_EMPTY = 21;
public const int FPTR_SUE_JRN_NEAREMPTY = 22;
public const int FPTR_SUE_JRN_PAPEROK = 23;
public const int FPTR_SUE_REC_EMPTY = 24;
public const int FPTR_SUE_REC_NEAREMPTY = 25;
public const int FPTR_SUE_REC_PAPEROK = 26;
public const int FPTR_SUE_SLP_EMPTY = 27;
public const int FPTR_SUE_SLP_NEAREMPTY = 28;
public const int FPTR_SUE_SLP_PAPEROK = 29;
public const int KBD_ET_DOWN = 1;
public const int KBD_ET_DOWN_UP = 2;
public const int KBD_KET_KEYDOWN = 1;
public const int KBD_KET_KEYUP = 2;
public const int LOCK_KP_ANY = 0;
public const int LOCK_KP_LOCK = 1;
public const int LOCK_KP_NORM = 2;
public const int LOCK_KP_SUPR = 3;
public const int MICR_CC_CANADA = 2;
public const int MICR_CC_MEXICO = 3;
public const int MICR_CC_UNKNOWN = 99;
public const int MICR_CC_USA = 1;
public const int MICR_CT_BUSINESS = 2;
public const int MICR_CT_PERSONAL = 1;
public const int MICR_CT_UNKNOWN = 99;
public const int MSR_ERT_CARD = 0;
public const int MSR_ERT_TRACK = 1;
public const int MSR_TR_1 = 1;
public const int MSR_TR_2 = 2;
public const int MSR_TR_3 = 4;
public const int OPOS_BC_DECIMAL = 2;
public const int OPOS_BC_NIBBLE = 1;
public const int OPOS_BC_NONE = 0;
public const int OPOS_CH_EXTERNAL = 2;
public const int OPOS_CH_INTERACTIVE = 3;
public const int OPOS_CH_INTERNAL = 1;
public const int OPOS_E_BUSY = 113;
public const int OPOS_E_CLAIMED = 102;
public const int OPOS_E_CLOSED = 101;
public const int OPOS_E_DISABLED = 105;
public const int OPOS_E_EXISTS = 110;
public const int OPOS_E_EXTENDED = 114;
public const int OPOS_E_FAILURE = 111;
public const int OPOS_E_ILLEGAL = 106;
public const int OPOS_E_NOEXIST = 109;
public const int OPOS_E_NOHARDWARE = 107;
public const int OPOS_E_NOSERVICE = 104;
public const int OPOS_E_NOTCLAIMED = 103;
public const int OPOS_E_OFFLINE = 108;
public const int OPOS_E_TIMEOUT = 112;
public const int OPOS_ECHAN_OVERDISPENSE = 201;
public const int OPOS_EFPTR_BAD_DATE = 219;
public const int OPOS_EFPTR_BAD_ITEM_AMOUNT = 214;
public const int OPOS_EFPTR_BAD_ITEM_DESCRIPTION = 215;
public const int OPOS_EFPTR_BAD_ITEM_QUANTITY = 213;
public const int OPOS_EFPTR_BAD_PRICE = 218;
public const int OPOS_EFPTR_BAD_VAT = 217;
public const int OPOS_EFPTR_CLOCK_ERROR = 209;
public const int OPOS_EFPTR_COVER_OPEN = 201;
public const int OPOS_EFPTR_FISCAL_MEMORY_DISCONNECTED = 211;
public const int OPOS_EFPTR_FISCAL_MEMORY_FULL = 210;
public const int OPOS_EFPTR_FISCAL_TOTALS_ERROR = 212;
public const int OPOS_EFPTR_JRN_EMPTY = 202;
public const int OPOS_EFPTR_MISSING_DEVICES = 206;
public const int OPOS_EFPTR_NEGATIVE_TOTAL = 220;
public const int OPOS_EFPTR_REC_EMPTY = 203;
public const int OPOS_EFPTR_RECEIPT_TOTAL_OVERFLOW = 216;
public const int OPOS_EFPTR_SLP_EMPTY = 204;
public const int OPOS_EFPTR_SLP_FORM = 205;
public const int OPOS_EFPTR_TECHNICAL_ASSISTANCE = 208;
public const int OPOS_EFPTR_WORD_NOT_ALLOWED = 221;
public const int OPOS_EFPTR_WRONG_STATE = 207;
public const int OPOS_EL_INPUT = 2;
public const int OPOS_EL_INPUT_DATA = 3;
public const int OPOS_EL_OUTPUT = 1;
public const int OPOS_EMICR_CHECK = 202;
public const int OPOS_EMICR_NOCHECK = 201;
public const int OPOS_EMSR_END = 202;
public const int OPOS_EMSR_LRC = 204;
public const int OPOS_EMSR_PARITY = 203;
public const int OPOS_EMSR_START = 201;
public const int OPOS_EPTR_BADFORMAT = 207;
public const int OPOS_EPTR_COVER_OPEN = 201;
public const int OPOS_EPTR_JRN_EMPTY = 202;
public const int OPOS_EPTR_REC_EMPTY = 203;
public const int OPOS_EPTR_SLP_EMPTY = 204;
public const int OPOS_EPTR_SLP_FORM = 205;
public const int OPOS_EPTR_TOOBIG = 206;
public const int OPOS_ER_CLEAR = 12;
public const int OPOS_ER_CONTINUEINPUT = 13;
public const int OPOS_ER_RETRY = 11;
public const int OPOS_EROD_BADCLK = 201;
public const int OPOS_EROD_NOBUFFERS = 204;
public const int OPOS_EROD_NOCLOCKS = 202;
public const int OPOS_EROD_NOREGION = 203;
public const int OPOS_EROD_NOROOM = 205;
public const int OPOS_ESCAL_OVERWEIGHT = 201;
public const int OPOS_ETOT_NOROOM = 201;
public const int OPOS_ETOT_VALIDATION = 202;
public const int OPOS_FOREVER = -1;
public const int OPOS_PN_DISABLED = 0;
public const int OPOS_PN_ENABLED = 1;
public const int OPOS_PR_ADVANCED = 2;
public const int OPOS_PR_NONE = 0;
public const int OPOS_PR_STANDARD = 1;
public const int OPOS_PS_OFF = 2002;
public const int OPOS_PS_OFF_OFFLINE = 2004;
public const int OPOS_PS_OFFLINE = 2003;
public const int OPOS_PS_ONLINE = 2001;
public const int OPOS_PS_UNKNOWN = 2000;
public const int OPOS_S_BUSY = 3;
public const int OPOS_S_CLOSED = 1;
public const int OPOS_S_ERROR = 4;
public const int OPOS_S_IDLE = 2;
public const int OPOS_SUCCESS = 0;
public const int OPOS_SUE_POWER_OFF = 2002;
public const int OPOS_SUE_POWER_OFF_OFFLINE = 2004;
public const int OPOS_SUE_POWER_OFFLINE = 2003;
public const int OPOS_SUE_POWER_ONLINE = 2001;
public const int OPOSERR = 100;
public const int OPOSERREXT = 200;
public const int PPAD_CANCEL = 2;
public const int PPAD_DISP_PINRESTRICTED = 2;
public const int PPAD_DISP_RESTRICTEDLIST = 3;
public const int PPAD_DISP_RESTRICTEDORDER = 4;
public const int PPAD_DISP_UNRESTRICTED = 1;
public const int PPAD_EFT_ABNORMAL = 2;
public const int PPAD_EFT_NORMAL = 1;
public const int PPAD_LANG_NONE = 1;
public const int PPAD_LANG_ONE = 2;
public const int PPAD_LANG_PINRESTRICTED = 3;
public const int PPAD_LANG_UNRESTRICTED = 4;
public const int PPAD_MSG_AMOUNTOK = 8;
public const int PPAD_MSG_APPROVED = 5;
public const int PPAD_MSG_CANCELED = 7;
public const int PPAD_MSG_DECLINED = 6;
public const int PPAD_MSG_ENTERPIN = 1;
public const int PPAD_MSG_ENTERVALIDPIN = 3;
public const int PPAD_MSG_IDLE = 10;
public const int PPAD_MSG_INSERTCARD = 12;
public const int PPAD_MSG_NOTREADY = 9;
public const int PPAD_MSG_PLEASEWAIT = 2;
public const int PPAD_MSG_RETRIESEXCEEDED = 4;
public const int PPAD_MSG_SELECTCARDTYPE = 13;
public const int PPAD_MSG_SLIDE_CARD = 11;
public const int PPAD_SUCCESS = 1;
public const int PPAD_TRANS_ADMIN = 5;
public const int PPAD_TRANS_CREDIT = 2;
public const int PPAD_TRANS_DEBIT = 1;
public const int PPAD_TRANS_INQ = 3;
public const int PPAD_TRANS_RECONCILE = 4;
public const int PTR_BC_CENTER = -2;
public const int PTR_BC_LEFT = -1;
public const int PTR_BC_RIGHT = -3;
public const int PTR_BC_TEXT_ABOVE = -12;
public const int PTR_BC_TEXT_BELOW = -13;
public const int PTR_BC_TEXT_NONE = -11;
public const int PTR_BCS_Codabar = 107;
public const int PTR_BCS_Code128 = 110;
public const int PTR_BCS_Code39 = 108;
public const int PTR_BCS_Code93 = 109;
public const int PTR_BCS_EAN128 = 120;
public const int PTR_BCS_EAN13 = 104;
public const int PTR_BCS_EAN13_S = 119;
public const int PTR_BCS_EAN8 = 103;
public const int PTR_BCS_EAN8_S = 118;
public const int PTR_BCS_ITF = 106;
public const int PTR_BCS_JAN13 = 104;
public const int PTR_BCS_JAN8 = 103;
public const int PTR_BCS_MAXICODE = 202;
public const int PTR_BCS_OCRA = 121;
public const int PTR_BCS_OCRB = 122;
public const int PTR_BCS_OTHER = 501;
public const int PTR_BCS_PDF417 = 201;
public const int PTR_BCS_TF = 105;
public const int PTR_BCS_UPCA = 101;
public const int PTR_BCS_UPCA_S = 111;
public const int PTR_BCS_UPCD1 = 113;
public const int PTR_BCS_UPCD2 = 114;
public const int PTR_BCS_UPCD3 = 115;
public const int PTR_BCS_UPCD4 = 116;
public const int PTR_BCS_UPCD5 = 117;
public const int PTR_BCS_UPCE = 102;
public const int PTR_BCS_UPCE_S = 112;
public const int PTR_BM_ASIS = -11;
public const int PTR_BM_CENTER = -2;
public const int PTR_BM_LEFT = -1;
public const int PTR_BM_RIGHT = -3;
public const int PTR_CCS_ALPHA = 1;
public const int PTR_CCS_ASCII = 998;
public const int PTR_CCS_KANA = 10;
public const int PTR_CCS_KANJI = 11;
public const int PTR_CP_FULLCUT = 100;
public const int PTR_CS_ASCII = 998;
public const int PTR_CS_WINDOWS = 999;
public const int PTR_EL_FATAL = 3;
public const int PTR_EL_NONE = 1;
public const int PTR_EL_RECOVERABLE = 2;
public const int PTR_L_BOTTOM = 2;
public const int PTR_L_TOP = 1;
public const int PTR_MM_DOTS = 1;
public const int PTR_MM_ENGLISH = 3;
public const int PTR_MM_METRIC = 4;
public const int PTR_MM_TWIPS = 2;
public const char PTR_RP_LEFT90 = 'f';
public const char PTR_RP_NORMAL = '';
public const char PTR_RP_RIGHT90 = 'e';
public const char PTR_RP_ROTATE180 = 'g';
public const int PTR_S_JOURNAL = 1;
public const int PTR_S_RECEIPT = 2;
public const int PTR_S_SLIP = 4;
public const int PTR_SUE_COVER_OK = 12;
public const int PTR_SUE_COVER_OPEN = 11;
public const int PTR_SUE_IDLE = 1001;
public const int PTR_SUE_JRN_EMPTY = 21;
public const int PTR_SUE_JRN_NEAREMPTY = 22;
public const int PTR_SUE_JRN_PAPEROK = 23;
public const int PTR_SUE_REC_EMPTY = 24;
public const int PTR_SUE_REC_NEAREMPTY = 25;
public const int PTR_SUE_REC_PAPEROK = 26;
public const int PTR_SUE_SLP_EMPTY = 27;
public const int PTR_SUE_SLP_NEAREMPTY = 28;
public const int PTR_SUE_SLP_PAPEROK = 29;
public const int PTR_TP_NORMAL = 12;
public const int PTR_TP_TRANSACTION = 11;
public const int ROD_BDR_DOUBLE = 2;
public const int ROD_BDR_SINGLE = 1;
public const int ROD_BDR_SOLID = 3;
public const int ROD_CLK_MOVE = 4;
public const int ROD_CLK_PAUSE = 2;
public const int ROD_CLK_RESUME = 3;
public const int ROD_CLK_START = 1;
public const int ROD_CLK_STOP = 5;
public const int ROD_CRS_BLOCK = 3;
public const int ROD_CRS_BLOCK_BLINK = 4;
public const int ROD_CRS_LINE = 1;
public const int ROD_CRS_LINE_BLINK = 2;
public const int ROD_CRS_OFF = 5;
public const int ROD_CS_ASCII = 998;
public const int ROD_CS_WINDOWS = 999;
public const char ROD_DE_TOUCH_DOWN = '';
public const char ROD_DE_TOUCH_MOVE = '';
public const char ROD_DE_TOUCH_UP = '';
public const int ROD_TD_NORMAL = 12;
public const int ROD_TD_TRANSACTION = 11;
public const int ROD_UA_BLINK_OFF = 7;
public const int ROD_UA_BLINK_ON = 6;
public const int ROD_UA_INTENSITY_OFF = 3;
public const int ROD_UA_INTENSITY_ON = 2;
public const int ROD_UA_REVERSE_OFF = 5;
public const int ROD_UA_REVERSE_ON = 4;
public const int ROD_UA_SET = 1;
public const int SCAL_WU_GRAM = 1;
public const int SCAL_WU_KILOGRAM = 2;
public const int SCAL_WU_OUNCE = 3;
public const int SCAL_WU_POUND = 4;
public const int SCAN_SDT_Codabar = 107;
public const int SCAN_SDT_Code128 = 110;
public const int SCAN_SDT_Code39 = 108;
public const int SCAN_SDT_Code93 = 109;
public const int SCAN_SDT_EAN128 = 120;
public const int SCAN_SDT_EAN13 = 104;
public const int SCAN_SDT_EAN13_S = 119;
public const int SCAN_SDT_EAN8 = 103;
public const int SCAN_SDT_EAN8_S = 118;
public const int SCAN_SDT_ITF = 106;
public const int SCAN_SDT_JAN13 = 104;
public const int SCAN_SDT_JAN8 = 103;
public const int SCAN_SDT_MAXICODE = 202;
public const int SCAN_SDT_OCRA = 121;
public const int SCAN_SDT_OCRB = 122;
public const int SCAN_SDT_OTHER = 501;
public const int SCAN_SDT_PDF417 = 201;
public const int SCAN_SDT_TF = 105;
public const int SCAN_SDT_UNKNOWN = 0;
public const int SCAN_SDT_UPCA = 101;
public const int SCAN_SDT_UPCA_S = 111;
public const int SCAN_SDT_UPCD1 = 113;
public const int SCAN_SDT_UPCD2 = 114;
public const int SCAN_SDT_UPCD3 = 115;
public const int SCAN_SDT_UPCD4 = 116;
public const int SCAN_SDT_UPCD5 = 117;
public const int SCAN_SDT_UPCE = 102;
public const int SCAN_SDT_UPCE_S = 112;
}
}

122
Agent/KPS/KPS.csproj Normal file
View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" 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>{5D91CC0D-EB29-405A-BF21-3C52ADA8CC76}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Cosmos.KPS</RootNamespace>
<AssemblyName>Agent.KPS</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>Svn</SccProjectName>
<SccLocalPath>Svn</SccLocalPath>
<SccAuxPath>Svn</SccAuxPath>
<SccProvider>SubversionScc</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\BIN\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</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="Cosmos.BaseFrame">
<HintPath>..\..\..\BIN\Cosmos.BaseFrame.dll</HintPath>
</Reference>
<Reference Include="Cosmos.ServiceProvider">
<HintPath>..\..\..\BIN\Cosmos.ServiceProvider.dll</HintPath>
</Reference>
<Reference Include="Cosmos.UserFrame">
<HintPath>..\..\..\BIN\Cosmos.UserFrame.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Activator.cs" />
<Compile Include="Common.cs" />
<Compile Include="frmKPS.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmKPS.Designer.cs">
<DependentUpon>frmKPS.cs</DependentUpon>
</Compile>
<Compile Include="KPSMain.cs" />
<Compile Include="LabelPrinter.cs" />
<Compile Include="LANPrint.cs" />
<Compile Include="OPOSPrint.cs" />
<Compile Include="PrinterCommand.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SerialPrint.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="frmKPS.resx">
<DependentUpon>frmKPS.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<COMReference Include="AxOposPOSPrinter_CCO">
<Guid>{CCB90150-B81E-11D2-AB74-0040054C3719}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>aximp</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
<COMReference Include="OposPOSPrinter_CCO">
<Guid>{CCB90150-B81E-11D2-AB74-0040054C3719}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Library\CommonManager\CommonManager.csproj">
<Project>{670a81be-cee3-4c29-846d-a37652ca270d}</Project>
<Name>CommonManager</Name>
</ProjectReference>
<ProjectReference Include="..\..\Library\Common\Common.csproj">
<Project>{a5b7accd-79eb-4261-bd36-01ab484ad8e3}</Project>
<Name>Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>copy .\IC\Agent.KPS.dll .\Agent.KPS.dll</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>copy .\Agent.KPS.dll .\IC\Agent.KPS.dll</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

3986
Agent/KPS/KPSMain.cs Normal file

File diff suppressed because it is too large Load Diff

548
Agent/KPS/LANPrint.cs Normal file
View File

@ -0,0 +1,548 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.Common;
using Cosmos.UserFrame;
using Cosmos.BaseFrame;
namespace Cosmos.KPS
{
class LANPrint
{
PrinterCommand prtCmd = new PrinterCommand();
private TcpSocket m_cKtchSocket = null;
#region Printer OPEN / CLOSE
public int OpenDevice(string sIp, int iPort)
{
int iRet = UserCom.NG;
try
{
// PING 테스트로 프린터 가능여부 확인(2017.05.30)
if (CmUtil.PingTest(sIp) == false)
{
if (CmUtil.PingTest(sIp) == false) return iRet;
}
m_cKtchSocket = new TcpSocket(sIp, iPort, 5000);
if(m_cKtchSocket == null)
{
return -9;
}
// 주방프린터 접속 3회 시도
for(int nLoop = 0;nLoop < 1;nLoop++)
{
try
{
iRet = m_cKtchSocket.Connect(-1);
}
catch (Exception ex)
{
iRet = UserCom.NG;
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"KPS Exception Error=" + ex.Message);
m_cKtchSocket.Close();
continue;
}
// 접속 실패
if (iRet != UserCom.OK)
{
iRet = UserCom.NG;
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"KPS(Ethernet) Connect Error");
m_cKtchSocket.Close();
continue;
}
/*
// Cover Check
iRet = PrinterStatusCheckByLan("CHK1");
if (iRet != UserCom.OK)
{
iRet = UserCom.NG;
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"KPS(Ethernet) Cover Check Error");
m_cKtchSocket.Close();
continue;
}
// Paper Check
iRet = PrinterStatusCheckByLan("CHK2");
if (iRet != UserCom.OK)
{
iRet = UserCom.NG;
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"KPS(Ethernet) Paper Check Error");
m_cKtchSocket.Close();
continue;
}
*/
break;
}
return iRet;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
return -99;
}
}
public void CloseDevice()
{
try
{
if(m_cKtchSocket != null)
{
m_cKtchSocket.Close();
m_cKtchSocket = null;
}
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
#region Status Check
public int PrinterStatusCheckByLan(string sType)
{
int iRet = 0;
string sRet = string.Empty;
byte[] recvData = null;
try
{
#region Printer CHK1
if (sType == "CHK1")
{
iRet = m_cKtchSocket.SendReceiveFoodPrintData(PosConst.ESCP_COMMAND.TRANSMIT_OFFLINE_STATUS, ref recvData, 5000);
if (recvData != null)
{
if (recvData[0] == PosConst.ESCP_COMMAND.STATUS_OK[0])
{
iRet = UserCom.OK;
}
else
{
iRet = UserCom.NG;
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"COVER Opened");
}
}
return iRet;
}
#endregion
#region Printer CHK2
if (sType == "CHK2")
{
iRet = m_cKtchSocket.SendReceiveFoodPrintData(PosConst.ESCP_COMMAND.TRANSMIT_CONTINUOUS_PAPER_DETECTOR_STATUS, ref recvData, 5000);
if (recvData != null)
{
if (recvData[0] == PosConst.ESCP_COMMAND.STATUS_OK[0])
{
iRet = UserCom.OK;
}
else
{
iRet = UserCom.NG;
string sRecvData = Encoding.Default.GetString(recvData);
string NEAR_END = Encoding.Default.GetString(new byte[] { 0x1E });
string NOT_PRESENT = Encoding.Default.GetString(new byte[] { 0x72 });
string sErrMsg = string.Empty;
if (sRecvData == NEAR_END)
{
iRet = UserCom.OK;
sErrMsg = "PAPER_NEAR_END";
}
else if (sRecvData == NOT_PRESENT) sErrMsg = "PAPER_NOT_PRESENT";
else sErrMsg = "ETC_ERROR";
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
sErrMsg);
}
}
return iRet;
}
#endregion
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"StatusCheck Failed");
}
return iRet;
}
#endregion
#region Cut Paper
public bool CutPaper(int LineFeedCnt)
{
long nRet = -1;
try
{
for(int i = 0;i < LineFeedCnt;i++)
{
nRet = m_cKtchSocket.SendFoodPrintData(Encoding.Default.GetBytes("\r\n"));
}
if(m_cKtchSocket.SendFoodPrintData(PosConst.ESCP_COMMAND.PAPER_CUT) == BaseCom.OK)
{
nRet = m_cKtchSocket.SendFoodPrintData(Encoding.Default.GetBytes("\r\n"));
}
// BEEP 커맨더 전송(2017.05.30)
byte[] bytBEEP = new byte[] { 0x1B, 0x70, 0x01, 0x20, 0x80 };
m_cKtchSocket.SendFoodPrintData(bytBEEP);
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Cut Paper Exception");
}
return nRet == BaseCom.OK ? true : false;
}
#endregion
#region
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eVerticalSize"></param>
/// <param name="eHorizontalSize"></param>
/// <param name="eBold"></param>
/// <param name="eTextUnderLine"></param>
/// <param name="eTextReverseMode"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.CharactersizeV eVerticalSize, PrinterCommand.CharactersizeH eHorizontalSize, PrinterCommand.TextBold eBold, PrinterCommand.TextUnderLine eTextUnderLine, PrinterCommand.TextReverseMode eTextReverseMode, bool bLineFeed)
{
bool bRet = false;
string sCmdctrlTmp = "";
try
{
// 확대 Command를 설정
sCmdctrlTmp = GetCharactersizeCmd(eVerticalSize, eHorizontalSize);
// UnerLine
sCmdctrlTmp += GetUnderLineCmd(eTextUnderLine);
// Bold
sCmdctrlTmp += GetBoldCmd(eBold);
// 정렬
sCmdctrlTmp += GetAlignment(eAlignment);
// Reverse
sCmdctrlTmp += GetReverseCmd(eTextReverseMode);
// 출력
byte[] byteCmdctrl = Encoding.Default.GetBytes(sCmdctrlTmp);
if (m_cKtchSocket.SendFoodPrintData(byteCmdctrl) != BaseCom.OK) bRet = false; // Command 전송
byte[] byteData = Encoding.Default.GetBytes(sValue);
if (m_cKtchSocket.SendFoodPrintData(byteData) != BaseCom.OK) bRet = false; // 출력 Data 전송
if (bLineFeed == true && m_cKtchSocket.SendFoodPrintData(Encoding.Default.GetBytes("\n")) != BaseCom.OK) bRet = false;
}
catch(Exception ex)
{
}
return bRet;
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eVerticalSize"></param>
/// <param name="eHorizontalSize"></param>
/// <param name="eBold"></param>
/// <param name="eTextUnderLine"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.CharactersizeV eVerticalSize, PrinterCommand.CharactersizeH eHorizontalSize, PrinterCommand.TextBold eBold, PrinterCommand.TextUnderLine eTextUnderLine, bool bLineFeed)
{
return TextPrint(sValue, eAlignment, eVerticalSize, eHorizontalSize, eBold, eTextUnderLine, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, bool bLineFeed)
{
return TextPrint(sValue, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, PrinterCommand.TextBold.Nomal, PrinterCommand.TextUnderLine.Nomal, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, bool bLineFeed)
{
return TextPrint(sValue, eAlignment, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, PrinterCommand.TextBold.Nomal, PrinterCommand.TextUnderLine.Nomal, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eVerticalSize"></param>
/// <param name="eHorizontalSize"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.CharactersizeV eVerticalSize, PrinterCommand.CharactersizeH eHorizontalSize, bool bLineFeed)
{
return TextPrint(sValue, eAlignment, eVerticalSize, eHorizontalSize, PrinterCommand.TextBold.Nomal, PrinterCommand.TextUnderLine.Nomal, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eBold"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.TextBold eBold, bool bLineFeed)
{
return TextPrint(sValue, eAlignment, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, eBold, PrinterCommand.TextUnderLine.Nomal, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eTextUnderLine"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.TextUnderLine eTextUnderLine, bool bLineFeed)
{
return TextPrint(sValue, eAlignment, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, PrinterCommand.TextBold.Nomal, eTextUnderLine, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eTextReverseMode"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.TextReverseMode eTextReverseMode, bool bLineFeed)
{
return TextPrint(sValue, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, PrinterCommand.TextBold.Nomal, PrinterCommand.TextUnderLine.Nomal, eTextReverseMode, bLineFeed);
}
private string GetCharactersizeCmd(PrinterCommand.CharactersizeV eVerticalSize, PrinterCommand.CharactersizeH eHorizontalSize)
{
string sRet = "";
try
{
int Hvalue = 0;
int Vvalue = 0;
switch(eVerticalSize)
{
case PrinterCommand.CharactersizeV.V_1: Vvalue = 0; break;
case PrinterCommand.CharactersizeV.V_2: Vvalue = 1; break;
case PrinterCommand.CharactersizeV.V_3: Vvalue = 2; break;
case PrinterCommand.CharactersizeV.V_4: Vvalue = 3; break;
case PrinterCommand.CharactersizeV.V_5: Vvalue = 4; break;
case PrinterCommand.CharactersizeV.V_6: Vvalue = 5; break;
case PrinterCommand.CharactersizeV.V_7: Vvalue = 6; break;
case PrinterCommand.CharactersizeV.V_8: Vvalue = 7; break;
default: Vvalue = 0; break;
}
switch(eHorizontalSize)
{
case PrinterCommand.CharactersizeH.H_1: Hvalue = 16 * 0; break;
case PrinterCommand.CharactersizeH.H_2: Hvalue = 16 * 1; break;
case PrinterCommand.CharactersizeH.H_3: Hvalue = 16 * 2; break;
case PrinterCommand.CharactersizeH.H_4: Hvalue = 16 * 3; break;
case PrinterCommand.CharactersizeH.H_5: Hvalue = 16 * 4; break;
case PrinterCommand.CharactersizeH.H_6: Hvalue = 16 * 5; break;
case PrinterCommand.CharactersizeH.H_7: Hvalue = 16 * 6; break;
case PrinterCommand.CharactersizeH.H_8: Hvalue = 16 * 7; break;
default: Hvalue = 16 * 0; break;
}
sRet = Encoding.Default.GetString(prtCmd.ESC_VHMAG) + Convert.ToChar(Vvalue + Hvalue).ToString();
}
catch (Exception ex)
{
}
return sRet;
}
/// <summary>
/// 진한 문자(Bold)
/// </summary>
/// <param name="eBold"></param>
/// <returns></returns>
private string GetBoldCmd(PrinterCommand.TextBold eBold)
{
string sRet = "";
try
{
switch(eBold)
{
case PrinterCommand.TextBold.Nomal: sRet = Encoding.Default.GetString(prtCmd.ESC_BOLD_OFF); break;
case PrinterCommand.TextBold.Bold: sRet = Encoding.Default.GetString(prtCmd.ESC_BOLD_ON); break;
default: sRet = Encoding.Default.GetString(prtCmd.ESC_BOLD_OFF); break;
}
}
catch (Exception ex)
{
}
return sRet;
}
/// <summary>
/// UnderLine
/// </summary>
/// <param name="eUnderLine"></param>
/// <param name="nDot"></param>
/// <returns></returns>
private string GetUnderLineCmd(PrinterCommand.TextUnderLine eUnderLine, int nDot)
{
string sRet = "";
try
{
if(eUnderLine == PrinterCommand.TextUnderLine.UnderLine)
{
if(nDot == 2)
{
sRet = Encoding.Default.GetString(prtCmd.ESC_UNDERLINEON1DOT);
}
else
{
sRet = Encoding.Default.GetString(prtCmd.ESC_UNDERLINEON2DOT);
}
}
else
{
sRet = Encoding.Default.GetString(prtCmd.ESC_UNDERLINEOFF);
}
}
catch(Exception ex)
{
}
return sRet;
}
/// <summary>
/// UnderLine Text
/// </summary>
/// <param name="eUnderLine"></param>
/// <returns></returns>
private string GetUnderLineCmd(PrinterCommand.TextUnderLine eUnderLine)
{
return GetUnderLineCmd(eUnderLine, 1);
}
/// <summary>
/// 반전 텍스트
/// </summary>
/// <param name="eTextReverseMode"></param>
/// <returns></returns>
private string GetReverseCmd(PrinterCommand.TextReverseMode eTextReverseMode)
{
string sRet = "";
try
{
switch(eTextReverseMode)
{
case PrinterCommand.TextReverseMode.ReverseMode: sRet = Encoding.Default.GetString(prtCmd.ESC_REVERSE_MODE_ON); break;
default: sRet = Encoding.Default.GetString(prtCmd.ESC_REVERSE_MODE_OFF); break;
}
}
catch(Exception ex)
{
}
return sRet;
}
/// <summary>
/// 정렬 Command를 가져온다.
/// </summary>
/// <param name="eAlignment"></param>
/// <returns></returns>
private string GetAlignment(PrinterCommand.Alignment eAlignment)
{
string sRet = "";
try
{
switch(eAlignment)
{
case PrinterCommand.Alignment.Center:
sRet = Encoding.Default.GetString(prtCmd.ESC_CENTER);
break;
case PrinterCommand.Alignment.Right:
sRet = Encoding.Default.GetString(prtCmd.ESC_RIGHT);
break;
case PrinterCommand.Alignment.Left:
default:
sRet = Encoding.Default.GetString(prtCmd.ESC_LEFT);
break;
}
}
catch (Exception ex)
{
}
return sRet;
}
#endregion
}
}

385
Agent/KPS/LabelPrinter.cs Normal file
View File

@ -0,0 +1,385 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.ComponentModel;
using Cosmos.CommonManager;
using Cosmos.UserFrame;
namespace Cosmos.KPS
{
public class LabelPrinter
{
#region
private static SerialPort m_cSerialPort = null;
#endregion
#region
public LabelPrinter()
{
}
#endregion
#region OPEN / CLOSE
public bool OpenLabelPrinter(string sSerialPort, long lBaudrate)
{
bool bRet = false;
try
{
#region log
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [OPEN]");
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
#endregion
if (m_cSerialPort != null)
{
//grayber@20180307 시리얼 포트 flush 추가 start - Open 함수 Input Output 버퍼 삭제 (주석처리)
// 추가
if (m_cSerialPort.IsOpen != true) // 시리얼포트 오픈 실패
{
m_cSerialPort.Open(); // 시리얼포트 오픈
}
//m_cSerialPort.DiscardOutBuffer();
//m_cSerialPort.DiscardInBuffer();
//UserLog.WriteLogFile(UserCom.LOG_OP,
// System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
// System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
// "▶▶ [Open InOut Buffer Clear]");
bRet = true;
//grayber@20180307 시리얼 포트 flush 추가 end
return bRet;
}
if(m_cSerialPort == null)
{
m_cSerialPort = new SerialPort();
if(m_cSerialPort == null)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"SERIAL PORT ERROR");
return bRet;
}
m_cSerialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
m_cSerialPort.PinChanged += new SerialPinChangedEventHandler(serialPort_PinChanged);
m_cSerialPort.ErrorReceived += new SerialErrorReceivedEventHandler(serialPort_ErrorReceived);
m_cSerialPort.NewLine = "\r\n";
m_cSerialPort.Encoding = System.Text.Encoding.GetEncoding("ks_c_5601-1987");
m_cSerialPort.WriteBufferSize = 1024 * 1024;
m_cSerialPort.PortName = sSerialPort;
m_cSerialPort.BaudRate = (int)lBaudrate;
m_cSerialPort.DataBits = 8;
m_cSerialPort.StopBits = StopBits.One;
m_cSerialPort.Parity = Parity.None;
m_cSerialPort.Handshake = Handshake.None;
m_cSerialPort.ReadTimeout = 500;
m_cSerialPort.WriteTimeout = 2000;
m_cSerialPort.Open();
if(m_cSerialPort.IsOpen == false)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"SERIAL PORT OPEN ERROR");
return bRet;
}
bRet = true;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
#region log
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [OPEN]" + bRet);
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
#endregion
return bRet;
}
public bool CloseLabelPrinter()
{
bool bRet = false;
try
{
if (m_cSerialPort == null)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Close fail(m_cSerialPort == null)");
return bRet;
}
//grayber@20180307 시리얼 포트 flush 추가 start - Close 함수 Input Output 버퍼 삭제
// 추가
m_cSerialPort.DiscardOutBuffer();
m_cSerialPort.DiscardInBuffer();
//grayber@20180307 시리얼 포트 flush 추가 end
m_cSerialPort.Close();
bRet = true;
//grayber@20180307 시리얼 포트 flush 추가 start - try 문 밖으로 이동 (기존)
//m_cSerialPort = null;
//grayber@20180307 시리얼 포트 flush 추가 end
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
#region log
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [CLOSE] Close InOut Buffer Clear :" + bRet);
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
#endregion
//grayber@20180307 시리얼 포트 flush 추가 start - try 문 밖으로 이동 (변경)
m_cSerialPort = null;
//grayber@20180307 시리얼 포트 flush 추가 end
return bRet;
}
#endregion OPEN / CLOSE
#region SerialPort
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort serialPort = (SerialPort)sender;
try
{
byte[] bytRecvBuf = new byte[serialPort.BytesToRead];
//grayber@20180307 시리얼 포트 flush 추가 start - DataReceived 시리얼 포트 null check
// 기존
//serialPort.Read(bytRecvBuf, 0, bytRecvBuf.Length);
// 변경
if (serialPort != null && serialPort.IsOpen == true) // 시리얼포트 객체 및 오픈 확인
{
serialPort.Read(bytRecvBuf, 0, bytRecvBuf.Length);
#region log
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [RECV] " + Encoding.UTF8.GetString(bytRecvBuf));
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
#endregion
}
//grayber@20180307 시리얼 포트 flush 추가 end
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
private void serialPort_PinChanged(object sender, SerialPinChangedEventArgs e)
{
}
private void serialPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
{
}
#endregion SerialPort
#region
/// <summary>
/// 중량 출력
/// </summary>
/// <param name="sContent">상품명 : 중량g</param>
/// <param name="iWeight">중량</param>
/// <param name="sDateTime">YYYY-MM-DD HH:MM:SS</param>
/// <param name="sStoreNm">점포명</param>
public void PrintLabelInfoPrintWeightInfo(string sContent, string sDateTime, string sStoreNm)
{
string[] sCommands = null;
try
{
sCommands = new string[] { "CLL\r\n" // 메모리 클리어
, "NEW\r\n" // 새로운 명령어 시작
, "CLIP ON\r\n"
, "FONT \"HYGothic-Medium\",12\r\n"
, "NASC 949\r\n" // intermec 한글폰트 설정
, "PRPOS 0,150\r\n"
, "PRTXT \"" + sContent + "\"\r\n"
, "FONT \"HYGothic-Medium\",9\r\n"
, "PRPOS 0,110\r\n"
, "PRTXT \"" + sDateTime + "\"\r\n"
, "PRPOS 0,70\r\n"
, "PRTXT \"" + sStoreNm + "\"\r\n"
, "PRPOS 0,30\r\n"
, "PRTXT \"배달은 해피오더 / 1670-3131\"\r\n" //#10856_[BR] 저울 중량 라벨프린터 양식 변경_hs
, "PF\r\n" };
if (sCommands != null)
WriteCommand(sCommands);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
public void PrintWeightInfo(string sContent, string sFlavour1, string sFlavour2, string sOrdDateTime, string sPckDateTime)
{
string[] sCommands = null;
try
{
// EX)
// 패밀리 / 980g (5516)
// 플레이버1/플레이버2/플레이버3
// 플레이버4/플레이버5/플레이버6
//
// 주문 YYYY-MM-DD HH시MM분
// 포장 YYYY-MM-DD HH시MM분
sCommands = new string[] { "CLL\r\n" // 메모리 클리어
, "NEW\r\n" // 새로운 명령어 시작
, "CLIP ON\r\n"
, "FONT \"HYGothic-Medium\",12\r\n"
, "NASC 949\r\n"
, "PRPOS 0,190\r\n"
, "PRTXT \"" + sContent + "\"\r\n"
, "FONT \"HYGothic-Medium\",9\r\n"
, "PRPOS 0,150\r\n"
, "PRTXT \"" + sFlavour1 + "\"\r\n"
, "PRPOS 0,110\r\n"
, "PRTXT \"" + sFlavour2 + "\"\r\n"
, "PRPOS 0,50\r\n"
, "PRTXT \"" + sOrdDateTime + "\"\r\n"
, "PRPOS 0,10\r\n"
, "PRTXT \"" + sPckDateTime + "\"\r\n"
, "PF\r\n" };
if (sCommands != null)
WriteCommand(sCommands);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
//#20180515 KPS 출력시 라벨프린터 출력 start
#region KPS
/// <summary>
/// 중량 출력KPS 출력시 라벨프린터 출력
/// </summary>
/// <param name="sContent">출력데이터</param>
public void PrintLabelInfo(string sContent)
{
string[] sCommands = null;
try
{
sCommands = new string[] { sContent };
if (sCommands != null)
WriteCommand(sCommands);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
//#20180515 KPS 출력시 라벨프린터 출력 end
#region
/// <summary>
/// 시리얼포트에 명령어를 전송
/// </summary>
/// <param name="sCommands"></param>
private void WriteCommand(string[] sCommands)
{
try
{
foreach(string cmd in sCommands)
{
m_cSerialPort.Write(cmd);
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
}
}

333
Agent/KPS/OPOSPrint.cs Normal file
View File

@ -0,0 +1,333 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Cosmos.KPS
{
class OPOSPrint
{
#region
public enum Position
{
Top,
Buttom,
TopAndButtom
}
public enum Alignment
{
Center,
Left,
Right
}
#endregion
#region Character size/Filter
/// <summary>
/// Character size horizontal [넓이 배율 1~8]
/// </summary>
public enum CharactersizeH
{
H_1,
H_2,
H_3,
H_4,
H_5,
H_6,
H_7,
H_8
}
/// <summary>
/// Character size vertical [높이 배율 1~8]
/// </summary>
public enum CharactersizeV
{
V_1,
V_2,
V_3,
V_4,
V_5,
V_6,
V_7,
V_8
}
/// <summary>
/// Bold 체 여부
/// </summary>
public enum TextBold
{
Nomal,
Bold
}
/// <summary>
/// 밑줄(UnderLine)
/// </summary>
public enum TextUnderLine
{
Nomal,
UnderLine
}
/// <summary>
/// 반전 Text 효과
/// </summary>
public enum TextReverseMode
{
Nomal,
ReverseMode
}
#endregion
#region OposPrint
/// <summary>
/// Text Print
/// 문자열을 출력 합니다.
/// </summary>
/// <param name="sValue">출력할 문자</param>
/// <param name="eAlignment">정렬(Left, Center, Right)</param>
/// <param name="eVerticalSize">세로확대(1배~8배)</param>
/// <param name="eHorizontalSize">가로확대(1배~8배)</param>
/// <param name="bBold">굵은글씨(BOLD)</param>
/// <param name="bUnderLine">밑줄(UnderLine)</param>
/// <param name="bLineFeed">LineFeed 여부</param>
/// <returns></returns>
public static bool OposTextPrint(AxOposPOSPrinter_CCO.AxOPOSPOSPrinter pOPOSPrint, string sValue, Alignment eAlignment, CharactersizeV eVerticalSize, CharactersizeH eHorizontalSize, TextBold eBold, TextUnderLine eTextUnderLine, TextReverseMode eTextReverseMode, bool bLineFeed)
{
bool bRet = false;
string sCmdctrlTmp = "";
string ESC = String.Format("{0}", (char)27);
string SP = String.Format("{0}", (char)20);
//string ESC_CUT = Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + ESC + "|P";
//string ESC_FEEDCUT = Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + ESC + "|fP";
string ESC_CUT = ESC + "|50P";
string ESC_FEEDCUT = ESC + "|100fP";
string ESC_BITMAP1 = ESC + "|1B";
string ESC_BITMAP2 = ESC + "|2B";
string ESC_TOPLOGO = ESC + "|tL";
string ESC_BTMLOGO = ESC + "|bL";
string ESC_LINEFEED = ESC + "|lF";
string ESC_FEED = ESC + "|uF";
//string ESC_BOLD = ESC + "|bC";
//string ESC_NOT_BOLD = ESC + "|!bC";
string ESC_UNDERLINE = ESC + "|uC";
string ESC_COLOR = ESC + "|rC";
//string ESC_REVERSE = ESC + "|rvC";
//string ESC_NOT_REVERSE = ESC + "|!rvC";
string ESC_1MAG = ESC + "|1C";
string ESC_2MAG = ESC + "|4C";
string ESC_HMAG = ESC + "|2C";
string ESC_VMAG = ESC + "|3C";
string ESC_H1MAG = ESC + "|1hC";
string ESC_V1MAG = ESC + "|1vC";
string ESC_H2MAG = ESC + "|2hC";
string ESC_V2MAG = ESC + "|2vC";
string ESC_H3MAG = ESC + "|3hC";
string ESC_V3MAG = ESC + "|3vC";
string ESC_H4MAG = ESC + "|4hC";
string ESC_V4MAG = ESC + "|4vC";
string ESC_H5MAG = ESC + "|5hC";
string ESC_V5MAG = ESC + "|5vC";
string ESC_H6MAG = ESC + "|6hC";
string ESC_V6MAG = ESC + "|6vC";
string ESC_H7MAG = ESC + "|7hC";
string ESC_V7MAG = ESC + "|7vC";
string ESC_H8MAG = ESC + "|8hC";
string ESC_V8MAG = ESC + "|8vC";
string ESC_CENTER = ESC + "|cA";
string ESC_RIGHT = ESC + "|rA";
string ESC_NORMAL = ESC + "|N";
sCmdctrlTmp = "";
//정렬
switch (eAlignment)
{
case Alignment.Center: sCmdctrlTmp += ESC_CENTER; break;
case Alignment.Right: sCmdctrlTmp += ESC_RIGHT; break;
case Alignment.Left: sCmdctrlTmp += ESC_NORMAL; break;
}
//확대 Command를 설정.
//sCmdctrlTmp = GetCharactersizeCmd(eVerticalSize, eHorizontalSize);
switch (eVerticalSize)
{
case CharactersizeV.V_2: sCmdctrlTmp += ESC_V2MAG; break;
case CharactersizeV.V_3: sCmdctrlTmp += ESC_V3MAG; break;
case CharactersizeV.V_4: sCmdctrlTmp += ESC_V3MAG; break;
case CharactersizeV.V_5: sCmdctrlTmp += ESC_V4MAG; break;
case CharactersizeV.V_6: sCmdctrlTmp += ESC_V5MAG; break;
case CharactersizeV.V_7: sCmdctrlTmp += ESC_V7MAG; break;
case CharactersizeV.V_8: sCmdctrlTmp += ESC_V8MAG; break;
default: sCmdctrlTmp += ESC_V1MAG; break;
}
switch (eHorizontalSize)
{
case CharactersizeH.H_2: sCmdctrlTmp += ESC_H2MAG; break;
case CharactersizeH.H_3: sCmdctrlTmp += ESC_H3MAG; break;
case CharactersizeH.H_4: sCmdctrlTmp += ESC_H3MAG; break;
case CharactersizeH.H_5: sCmdctrlTmp += ESC_H4MAG; break;
case CharactersizeH.H_6: sCmdctrlTmp += ESC_H5MAG; break;
case CharactersizeH.H_7: sCmdctrlTmp += ESC_H7MAG; break;
case CharactersizeH.H_8: sCmdctrlTmp += ESC_H8MAG; break;
default: sCmdctrlTmp += ESC_H1MAG; break;
}
//UnderLine
if (eTextUnderLine == TextUnderLine.UnderLine)
sCmdctrlTmp += ESC_UNDERLINE;
//Bold
//if (TextBold.Bold == eBold)
// sCmdctrlTmp += ESC_BOLD;
//else
// sCmdctrlTmp += ESC_NOT_BOLD;
//Reverse
//if (TextReverseMode.ReverseMode == eTextReverseMode)
// sCmdctrlTmp += ESC_REVERSE;
//else
// sCmdctrlTmp += ESC_NOT_REVERSE;
if (sValue != "")
{
}
if (bLineFeed == true)
{
sValue = sCmdctrlTmp + sValue + "\r\n";
}
//출력
int nRet = pOPOSPrint.PrintNormal(OPOS.PTR_S_RECEIPT, sValue);
return bRet;
}
/// <summary>
/// Text Print
/// 문자열을 출력 합니다.
/// </summary>
/// <param name="sValue">출력할 문자</param>
/// <param name="eAlignment">정렬(Left, Center, Right)</param>
/// <param name="eVerticalSize">세로확대(1배~8배)</param>
/// <param name="eHorizontalSize">가로확대(1배~8배)</param>
/// <param name="bBold">굵은글씨(BOLD)</param>
/// <param name="bUnderLine">밑줄(UnderLine)</param>
/// <param name="bLineFeed">LineFeed 여부</param>
/// <returns></returns>
public static bool OposTextPrint(AxOposPOSPrinter_CCO.AxOPOSPOSPrinter pOPOSPrint, string sValue, Alignment eAlignment, CharactersizeV eVerticalSize, CharactersizeH eHorizontalSize, TextBold eBold, TextUnderLine eTextUnderLine, bool bLineFeed)
{
return OposTextPrint(pOPOSPrint, sValue, eAlignment, eVerticalSize, eHorizontalSize, eBold, eTextUnderLine, TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// 문자열을 출력 합니다.
/// </summary>
/// <param name="sValue">출력할 문자</param>
/// <param name="bLineFeed">LineFeed 여부</param>
/// <returns></returns>
public static bool OposTextPrint(AxOposPOSPrinter_CCO.AxOPOSPOSPrinter pOPOSPrint, string sValue, bool bLineFeed)
{
return OposTextPrint(pOPOSPrint, sValue, Alignment.Left, CharactersizeV.V_1, CharactersizeH.H_1, TextBold.Nomal, TextUnderLine.Nomal, TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// 문자열을 출력 합니다.
/// </summary>
/// <param name="sValue">출력할 문자</param>
/// <param name="eAlignment">정렬(Left, Center, Right)</param>
/// <param name="bLineFeed">LineFeed 여부</param>
/// <returns></returns>
public static bool OposTextPrint(AxOposPOSPrinter_CCO.AxOPOSPOSPrinter pOPOSPrint, string sValue, Alignment eAlignment, bool bLineFeed)
{
return OposTextPrint(pOPOSPrint, sValue, eAlignment, CharactersizeV.V_1, CharactersizeH.H_1, TextBold.Nomal, TextUnderLine.Nomal, TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// 문자열을 출력 합니다.
/// </summary>
/// <param name="sValue">출력할 문자</param>
/// <param name="eAlignment">정렬(Left, Center, Right)</param>
/// <param name="eVerticalSize">세로확대(1배~8배)</param>
/// <param name="eHorizontalSize">가로확대(1배~8배)</param>
/// <param name="bLineFeed">LineFeed 여부</param>
/// <returns></returns>
public static bool OposTextPrint(AxOposPOSPrinter_CCO.AxOPOSPOSPrinter pOPOSPrint, string sValue, Alignment eAlignment, CharactersizeV eVerticalSize, CharactersizeH eHorizontalSize, bool bLineFeed)
{
return OposTextPrint(pOPOSPrint, sValue, eAlignment, eVerticalSize, eHorizontalSize, TextBold.Nomal, TextUnderLine.Nomal, TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// 문자열을 출력 합니다.
/// 진한문자열을 출력 할 수 있습니다.
/// </summary>
/// <param name="sValue">출력할 문자</param>
/// <param name="eAlignment">정렬(Left, Center, Right)</param>
/// <param name="bBold">굵은글씨(BOLD)</param>
/// <param name="bLineFeed">LineFeed 여부</param>
/// <returns></returns>
public static bool OposTextPrint(AxOposPOSPrinter_CCO.AxOPOSPOSPrinter pOPOSPrint, string sValue, Alignment eAlignment, TextBold eBold, bool bLineFeed)
{
return OposTextPrint(pOPOSPrint, sValue, eAlignment, CharactersizeV.V_1, CharactersizeH.H_1, eBold, TextUnderLine.Nomal, TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// 문자열을 출력 합니다.
/// 진한문자열을 출력 할 수 있습니다.
/// </summary>
/// <param name="sValue">출력할 문자</param>
/// <param name="eAlignment">정렬(Left, Center, Right)</param>
/// <param name="bBold">굵은글씨(BOLD)</param>
/// <param name="bLineFeed">LineFeed 여부</param>
/// <returns></returns>
public static bool OposTextPrint(AxOposPOSPrinter_CCO.AxOPOSPOSPrinter pOPOSPrint, string sValue, Alignment eAlignment, TextUnderLine eTextUnderLine, bool bLineFeed)
{
return OposTextPrint(pOPOSPrint, sValue, eAlignment, CharactersizeV.V_1, CharactersizeH.H_1, TextBold.Nomal, eTextUnderLine, TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// 문자열을 출력 합니다.
/// 역상 출력을 합니다.
/// </summary>
/// <param name="sValue">출력 할 문자</param>
/// <param name="eAlignment">정렬(Left, Center, Right)</param>
/// <param name="eTextReverseMode">반전출력 모드 설정(Reverse Mode)</param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public static bool OposTextPrint(AxOposPOSPrinter_CCO.AxOPOSPOSPrinter pOPOSPrint, string sValue, Alignment eAlignment, TextReverseMode eTextReverseMode, bool bLineFeed)
{
return OposTextPrint(pOPOSPrint, sValue, Alignment.Left, CharactersizeV.V_1, CharactersizeH.H_1, TextBold.Nomal, TextUnderLine.Nomal, eTextReverseMode, bLineFeed);
}
#endregion
/// <summary>
/// 문자열을 출력 합니다.
/// 역상 출력을 합니다.
/// </summary>
/// <param name="sValue">출력 할 문자</param>
/// <param name="eAlignment">정렬(Left, Center, Right)</param>
/// <param name="eTextReverseMode">반전출력 모드 설정(Reverse Mode)</param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public static bool OposBarPrint(AxOposPOSPrinter_CCO.AxOPOSPOSPrinter pOPOSPrint, string sValue)
{
int nStat = 0;
if (sValue.Length % 2 == 0)
{
nStat = pOPOSPrint.PrintBarCode(OPOS.PTR_S_RECEIPT, sValue, OPOS.PTR_BCS_ITF, 50, 368, OPOS.PTR_BC_CENTER, OPOS.PTR_BC_TEXT_BELOW);
}
else
{
nStat = pOPOSPrint.PrintBarCode(OPOS.PTR_S_RECEIPT, "0" + sValue, OPOS.PTR_BCS_ITF, 50, 368, OPOS.PTR_BC_CENTER, OPOS.PTR_BC_TEXT_BELOW);
}
return true;
}
}
}

878
Agent/KPS/PrinterCommand.cs Normal file
View File

@ -0,0 +1,878 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
namespace Cosmos.KPS
{
[Serializable]
public class PrinterCommand
{
#region
public enum Position
{
Top,
Buttom,
TopAndButtom,
None
}
public enum Alignment
{
Center,
Left,
Right
}
#endregion
#region Character size/Filter
/// <summary>
/// Character size horizontal [넓이 배율 1~8]
/// </summary>
public enum CharactersizeH
{
H_1,
H_2,
H_3,
H_4,
H_5,
H_6,
H_7,
H_8
}
/// <summary>
/// Character size vertical [높이 배율 1~8]
/// </summary>
public enum CharactersizeV
{
V_1,
V_2,
V_3,
V_4,
V_5,
V_6,
V_7,
V_8
}
/// <summary>
/// Bold 체 여부
/// </summary>
public enum TextBold
{
Nomal,
Bold
}
/// <summary>
/// 밑줄(UnderLine)
/// </summary>
public enum TextUnderLine
{
Nomal,
UnderLine
}
/// <summary>
/// 반전 Text 효과
/// </summary>
public enum TextReverseMode
{
Nomal,
ReverseMode
}
#endregion
#region Barcode Type
/// <summary>
/// Print Barcode
/// 1Dh, 6BH, m, d1, ...dk, 00H [0 ≤ m ≤ 6, 32 ≤ k ≤ 126, 1 ≤ k ≤ 255]
/// 1Dh, 6BH, m, n, d1, ...dn [65 ≤ m ≤ 73, 1 ≤ n ≤ 255, 0 ≤ d ≤ 127]
/// </summary>
public enum BarcodeType : int
{
UPC_A = 0, //m = 0, 65,
UPC_E = 1, //m = 1, 66
EAN13_KAN13 = 2, //m = 2, 67
EAN8_KAN8 = 3, //m = 3, 68
COE39 = 4, //m = 4, 69
ITF = 5, //m = 5, 70
CODEBAR = 6, //m = 6, 71
CODE93 = 72, //m = 72
CODE128 = 73 //m = 73
}
#endregion
#region Error Code
public const int PRT_SUCCESS = 0;
#endregion
#region "StatusUpdateEvent" Event: "Data" Parameter Constants
public const int PTR_SUE_COVER_OPEN = 11;
public const int PTR_SUE_COVER_OK = 12;
public const int PTR_SUE_JRN_EMPTY = 21;
public const int PTR_SUE_JRN_NEAREMPTY = 22;
public const int PTR_SUE_JRN_PAPEROK = 23;
public const int PTR_SUE_REC_EMPTY = 24;
public const int PTR_SUE_REC_NEAREMPTY = 25;
public const int PTR_SUE_REC_PAPEROK = 26;
public const int PTR_SUE_SLP_EMPTY = 27;
public const int PTR_SUE_SLP_NEAREMPTY = 28;
public const int PTR_SUE_SLP_PAPEROK = 29;
public const int PTR_SUE_JRN_CARTRIDGE_EMPTY = 41;
public const int PTR_SUE_JRN_CARTRIDGE_NEAREMPTY = 42;
public const int PTR_SUE_JRN_HEAD_CLEANING = 43;
public const int PTR_SUE_JRN_CARTRIDGE_OK = 44;
public const int PTR_SUE_REC_CARTRIDGE_EMPTY = 45;
public const int PTR_SUE_REC_CARTRIDGE_NEAREMPTY = 46;
public const int PTR_SUE_REC_HEAD_CLEANING = 47;
public const int PTR_SUE_REC_CARTRIDGE_OK = 48;
public const int PTR_Sue_Slp_CARTRIDGE_EMPTY = 49;
public const int PTR_Sue_Slp_CARTRIDGE_NEAREMPTY = 50;
public const int PTR_SUE_SLP_HEAD_CLEANING = 51;
public const int PTR_SUE_SLP_CARTRIDGE_OK = 52;
public const int PTR_SUE_IDLE = 1001;
#endregion
#region Default
public byte ESC = 0x1B;
public byte SP = 0x14;
public byte ESC_CR = 0x0D;
public byte ESC_LF = 0x0A;
public byte ESC_FF = 0xFF;
public byte[] ESC_INITPRINTER = { 0x1B, 0x40 }; //Printer 초기화
//1BH, 74H, n n=1(Katakana)
//1BH, 52H, n n=0(USA), n=8(Japan), n=13(korea) 'Select an international characer set
//1CH, 43H, n n=0,48 JIS code system , n=1,49 Shift JIS code system.
public byte[] ESC_LANGE = { 0x1B, 0x74, 0x01,
0x1B, 0x52, 0x08,
0x1C, 0x43, 0x01,
0x1C, 0x26 };
/// <summary>
/// Buffer clear
/// [10H, 14H, 08H, d1......d7]
/// [d1=1, d2=3, d3=20, d4=1, d5=6, d6=2, d7=8]
/// </summary>
public byte[] ESC_BUFFERCLEAR = { 0x10, 0x14, 0x08, 0x01, 0x03, 0x14, 0x01, 0x06, 0x02, 0x08 };
#endregion
#region Request Status ( )
public byte[] ESC_REQ_SUATUS_PAPER_SENSOR = { 0x1D, 0x72, 0x01 }; //용지 센서 상태를 송신합니다
public byte[] ESC_REQ_SUATUS_PAPER_SENSOR1 = { 0x1D, 0x72, 0x31 }; //용지 센서 상태를 송신합니다
public byte[] ESC_REQ_SUATUS_DRAW_CON = { 0x1D, 0x72, 0x02 }; //캐쉬 드로어 커넥터 상태를 송신 합니다.
public byte[] ESC_REQ_SUATUS_DRAW_CON1 = { 0x1D, 0x72, 0x32 }; //캐쉬 드로어 커넥터 상태를 송신 합니다.
//public byte[] ESC_REQ_SUATUS_PAPER_SENSOR2 = { 0x1B, 0x63, 0x33 }; //용지 센서 상태를 송신합니다
#endregion
#region BarCode Commad
//Select printing position for HRI character
/// <summary>
/// HRI Print 안함
/// </summary>
public byte[] ESC_HRI_NOTPRINT = { 0x1D, 0x48, 0x00 };
/// <summary>
/// Barcode 상단에 HRI Print
/// </summary>
public byte[] ESC_HRI_TOPPRINT = { 0x1D, 0x48, 0x01 };
/// <summary>
/// Barcode 아래에 HRI Print
/// </summary>
public byte[] ESC_HRI_BELOWPRINT = { 0x1D, 0x48, 0x02 };
/// <summary>
/// Barcode 위,아래에 HRI Print
/// </summary>
public byte[] ESC_HRI_TOPANDBELOWPRINT = { 0x1D, 0x48, 0x03 };
#endregion
#region Alignment
public byte[] ESC_CENTER = { 0x1B, 0x61, 0x01 }; // CENTER 정렬
public byte[] ESC_RIGHT = { 0x1B, 0x61, 0x02 }; // 오른쪽 정렬
public byte[] ESC_LEFT = { 0x1B, 0x61, 0x00 }; // 왼쪽 정렬
#endregion
#region Text
public byte[] ESC_NORMAL = { 0x1B, 0x21, 0x00, 0x1C, 0x21, 0x00 }; //보통문자
#region Select print mode
// [Format] 1BH, 21H, n
// [Valid limits] 0<=n<=255
// [Initial value] n=0
//┌──┬────────────┬────────────────────┐
//│ │ │ Value │
//│Bit │ Function ├─────────┬──────────┤
//│ │ │ 0 │ 1 │
//├──┼────────────┼─────────┼──────────┤
//│ 0 │Character font │Font A is selected│Font B/C is selected│
//├──┼────────────┼─────────┼──────────┤
//│ 1 │To be defined │ -- │ -- │
//├──┼────────────┼─────────┼──────────┤
//│ 2 │To be defined │ -- │ -- │
//├──┼────────────┼─────────┼──────────┤
//│ 3 │Emphasized printing │ Candel │ Specify │
//├──┼────────────┼─────────┼──────────┤
//│ 4 │Double character height │ Candel │ Specify │
//├──┼────────────┼─────────┼──────────┤
//│ 5 │Double character width │ Candel │ Specify │
//├──┼────────────┼─────────┼──────────┤
//│ 6 │To be defined │ -- │ -- │
//├──┼────────────┼─────────┼──────────┤
//│ 7 │Underline │ Candel │ Specify │
//└──┴────────────┴─────────┴──────────┘
public byte[] ESC_FontA = { 0x1B, 0x21, 0x00 }; // Font A 인쇄
public byte[] ESC_FontBC = { 0x1B, 0x21, 0x01 }; // Font B/C 인쇄
public byte[] ESC_DOUBLE = { 0x1B, 0x21, 0x30, 0x1C, 0x57, 0x01 }; // 가로세로 2배 확대
public byte[] ESC_DBLHEIGH = { 0x1B, 0x21, 0x10, 0x1C, 0x21, 0x08 }; // 세로 2배 확대
public byte[] ESC_DBLWIDTH = { 0x1B, 0x21, 0x20, 0x1C, 0x21, 0x04 }; // 가로 2배 확대 ESC + "|2hC"
public byte[] ESC_UNDERLINE = { 0x1B, 0x21, 0x80 }; // UnderLine ESC + "|uC"
public byte[] ESC_UNDERLINEON1DOT = { 0x1B, 0x2D, 0x01 }; // UnderLine Mode On 1Dot
public byte[] ESC_UNDERLINEON2DOT = { 0x1B, 0x2D, 0x02 }; // UnderLine Mode On 2Dot
public byte[] ESC_UNDERLINEOFF = { 0x1B, 0x2D, 0x00 }; // UnderLine Mode Off
#endregion
#region Set Character size
public byte[] ESC_VHMAG = { 0x1D, 0x21 }; // 배율확대확대 인쇄(FontSize)
public byte[] ESC_H1MAG = { 0x1D, 0x21, 0x00 }; // 가로 1배확대 인쇄(FontSize)
public byte[] ESC_V1MAG = { 0x1D, 0x21, 0x00 }; // 세로 1배확대 인쇄(FontSize)
public byte[] ESC_H2Y2MAG = { 0x1D, 0x21, 0x11 }; // 가로/세로 2배 확대
public byte[] ESC_H2MAG = { 0x1D, 0x21, 0x10 }; // 가로 2배확대 인쇄(FontSize)
public byte[] ESC_V2MAG = { 0x1D, 0x21, 0x01 }; // 세로 2배확대 인쇄(FontSize)
public byte[] ESC_H3MAG = { 0x1D, 0x21, 0x20 }; // 가로 3배확대 인쇄(FontSize)
public byte[] ESC_V3MAG = { 0x1D, 0x21, 0x02 }; // 세로 3배확대 인쇄(FontSize)
public byte[] ESC_H4MAG = { 0x1D, 0x21, 0x30 }; // 가로 4배확대 인쇄(FontSize)
public byte[] ESC_V4MAG = { 0x1D, 0x21, 0x03 }; // 세로 4배확대 인쇄(FontSize)
public byte[] ESC_H5MAG = { 0x1D, 0x21, 0x40 }; // 가로 5배확대 인쇄(FontSize)
public byte[] ESC_V5MAG = { 0x1D, 0x21, 0x04 }; // 세로 5배확대 인쇄(FontSize)
public byte[] ESC_H6MAG = { 0x1D, 0x21, 0x50 }; // 가로 6배확대 인쇄(FontSize)
public byte[] ESC_V6MAG = { 0x1D, 0x21, 0x05 }; // 세로 6배확대 인쇄(FontSize)
public byte[] ESC_H7MAG = { 0x1D, 0x21, 0x60 }; // 가로 7배확대 인쇄(FontSize)
public byte[] ESC_V7MAG = { 0x1D, 0x21, 0x06 }; // 세로 7배확대 인쇄(FontSize)
public byte[] ESC_H8MAG = { 0x1D, 0x21, 0x70 }; // 가로 8배확대 인쇄(FontSize)
public byte[] ESC_V8MAG = { 0x1D, 0x21, 0x07 }; // 세로 8배확대 인쇄(FontSize)
#endregion
#region Set Bold On/Off
public byte[] ESC_BOLD_ON = { 0x1B, 0x45, 0x01 }; // 진하게 인쇄선언
public byte[] ESC_BOLD_OFF = { 0x1B, 0x45, 0x00 }; // 진하게 인쇄선언해제
public byte[] ESC_BOLD = { 0x1B, 0x21, 0x08 }; //'진하게 ESC + "|bC"
#endregion
#region Set Reverse Mode On/Off
/// <summary>
/// On Reverse Mode
/// </summary>
public byte[] ESC_REVERSE_MODE_ON = { 0x1D, 0x42, 0x01 };//ESC + "|rvC"
/// <summary>
/// Off Revers Mode
/// </summary>
public byte[] ESC_REVERSE_MODE_OFF = { 0x1D, 0x42, 0x00 };//ESC + "|!rvC"
#endregion
/*
'ESC_CUT = Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + ESC + "|P"
ESC_CUT = ESC + "|50P"
'ESC_FEEDCUT = Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + Chr(&HA) + ESC + "|fP"
ESC_FEEDCUT = ESC + "|100fP"
ESC_BITMAP1 = ESC + "|1B"
ESC_BITMAP2 = ESC + "|2B"
ESC_TOPLOGO = ESC + "|tL"
ESC_BTMLOGO = ESC + "|bL"
ESC_LINEFEED = ESC + "|lF"
ESC_FEED = ESC + "|uF"
ESC_NOT_BOLD = ESC + "|!bC"
ESC_COLOR = ESC + "|rC"
ESC_1MAG = ESC + "|1C"
ESC_2MAG = ESC + "|4C"
ESC_HMAG = ESC + "|2C"
ESC_VMAG = ESC + "|3C"
ESC_CENTER = ESC + "|cA"
ESC_RIGHT = ESC + "|rA"
*/
#endregion
#region Cut paper
[Browsable(false), Category("Exception"),
Description("Cutting Command"),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[AmbientValue("")]
public byte[] ESC_CUT = { 0x1D, 0x56, 0x31 }; //Convert.ToByte(49) };
public byte[] ESC_FULLCUT = { 0x1B, 0x69 };
public byte[] ESC_PARTCUT = { 0x1B, 0x6D };
#endregion
#region Paper sensor to outpu paper out signals
//용지부족/용지없음 Sensor
public byte[] ESC_PAPERSENSOR_OFF = { 0x1B, 0x63, 0x33, 0x00 };
public byte[] ESC_PAPERSENSOR_ON = { 0x1B, 0x63, 0x33, 0x0F };
#endregion
#region Paper sensor to stop printing
/// <summary>
/// Paper near end detector Valid
/// </summary>
public byte[] ESC_PAPER_NEAREND_0N = { 0x1B, 0x63, 0x34, 0x01 };
/// <summary>
/// Paper near end detector InValid
/// </summary>
public byte[] ESC_PAPER_NEAREND_0FF = { 0x1B, 0x63, 0x34, 0x01 };
#endregion
#region Real-time status transmission
public byte[] ESC_TRANS_STATUS = { 0x10, 0x04, 0x01 };
/// <summary>
/// Cover 상태 체크 명령어
/// </summary>
public byte[] ESC_TRANS_OFFLINE = { 0x10, 0x04, 0x02 };
public byte[] ESC_TRANS_ERR_STUS = { 0x10, 0x04, 0x03 };
/// <summary>
/// Paper 상태 체크 명령어
/// </summary>
public byte[] ESC_TRANS_CONTI_STATUS = { 0x10, 0x04, 0x04 };
#endregion
#region Enable/disable automatic status back
public byte[] ESC_STATUSBACK = { 0x1d, 0x61, 0xCF };
#endregion
#region Select peripheral device
public byte[] ESC_DEVICE_PRT = { 0x1B, 0x3D, 0x01 };
#endregion
#region Open CashDrawer
public byte[] cmd_OpenCashDraerBox = { 0x1B, 0x70, 0x30 };
#endregion
#region Print Type
public enum PRT_CMD
{
NONE, //미지원 형식
PRT_IMG, //Image
PRT_BAR, //바코드
PRT_CUT, //CUT
PRT_NOR, //일반 문자
PRT_BLD, //진하게
PRT_VER, //세로확대
PRT_HOR, //가로확대
PRT_BIG, //가로/세로확대
PRT_CNT, //가로확대+가운데 정렬
PRT_JNL, //저널데이터
PRT_DRW, //돈통열림
ERROR //Error
}
public string PRT_IMG = "[IMG]"; //Image
public string PRT_BAR = "[BAR]"; //바코드
public string PRT_CUT = "[CUT]"; //CUT
public string PRT_NOR = "[NOR]"; //일반 문자
public string PRT_BLD = "[BLD]"; //진하게
public string PRT_VER = "[VER]"; //세로확대
public string PRT_HOR = "[HOR]"; //가로확대
public string PRT_BIG = "[BIG]"; //가로/세로확대
public string PRT_CNT = "[CNT]"; //가로확대+가운데 정렬
public string PRT_JNL = "[JNL]"; //저널데이터
public string PRT_DRW = "[DRW]"; //돈통열림
#endregion
#region
/// <summary>
/// 상태체크(Paper, Drawer 상태 )
/// Drawer 상태는 상태체크가 가능한 돈통에 한함.
/// </summary>
public enum CHK_PRT_STATUS
{
CHK_PAPER,
CHK_DRAWER
}
#endregion
}
/// <summary>
/// Printer Status Information
/// </summary>
[Serializable]
public class PrinterInformation
{
#region Printer Event
private bool[,] Infomation = new bool[8 * 4, 2];
private enum eStatusInfo : int
{
//Event First Byte
/// <summary>
/// State of the drawer kick connector pin 3 [false:Low, true: High]
/// </summary>
DrwKickLH = 7 - 2,
/// <summary>
/// Online.offline [false: Online, true: Offline]
/// </summary>
OnOffLine = 7 - 3,
/// <summary>
/// Cover state [false:Closed, true : Open]
/// </summary>
Coverstate = 7 - 5,
/// <summary>
/// Paper feed by paper feed switch [false:Stopped, true : Operation]
/// </summary>
feedswitch = 7 - 6,
//Event Second Byte(error information)
/// <summary>
/// Macro executing [false:Not execute, true : execute]
/// </summary>
MacroExecuting = 8 + 7 - 0,
/// <summary>
/// Panel switch[false:Off, true:On]
/// </summary>
Panelswitch = 8 + 7 - 1,
/// <summary>
/// Mechanical error(cover Open, Cutter Jam) [false:No, true: Yes]
/// </summary>
MechanicalErr = 8 * 7 - 2,
/// <summary>
/// Cutter jam [false:No, true: Yes]
/// </summary>
CutterJam = 8 * 7 - 3,
/// <summary>
/// Unrecoverable error[false:No, true:Yes]
/// </summary>
UnrecoverableErr = 8 + 7 - 5,
/// <summary>
/// Auto-recoverrable error detected [false:No, true:Yes]
/// </summary>
AutoRecoverableErr = 8 + 7 - 6,
//Third byte(paper detector information)
/// <summary>
/// Roll Paper Near end detecter[false:Paper present, true Nopaper]
/// </summary>
PaperNearEnd_1 = 16 + 7 - 0,
/// <summary>
/// Roll Paper Near end detecter[false:Paper present, true Nopaper]
/// </summary>
PaperNearEnd_2 = 16 + 7 - 0,
/// <summary>
/// Roll Paper end detecter[false:Paper present, true Nopaper]
/// </summary>
PaperEnd_1 = 16 + 7 - 2,
/// <summary>
/// Roll Paper end detecter[false:Paper present, true Nopaper]
/// </summary>
PaperEnd_2 = 16 + 7 - 3,
//Fourth byte (paper detector information)
/// <summary>
/// F/W down load Fail[false: Not Fail, true: Fail]
/// </summary>
FWdownLoadFail = 24 + 7 - 5
}
public enum eSetStatusType : int
{
/// <summary>
/// PRINTER STATUS[First Byte]
/// </summary>
PRT_PRINTERINFOMATION,
/// <summary>
/// ERROR INFOMATION[Second Byte]
/// </summary>
PRT_ERRINFOMATION,
/// <summary>
/// Paper Status[Third Byte]
/// </summary>
PRT_PAPERINFOMATION,
/// <summary>
/// Firm Ware[Fourth Byte]
/// </summary>
PRT_FIRMWAREDOWN
}
#endregion
#region All Set
public void SetAllData(char[] szData)
{
char[] szEvt = szData;
//string bitStringFirst = str2bitstr(szData[0].ToString(), 1);
//string bitStringSecond = str2bitstr(szData[1].ToString(), 1);
//string bitStringThird = str2bitstr(szData[2].ToString(), 1);
//string bitStringFourth = str2bitstr(szData[3].ToString(), 1);
//string sBitInfo = bitStringFirst + bitStringSecond + bitStringThird + bitStringFourth;
string sBitInfo = "";
sBitInfo = str2bitstr(szData[0].ToString(), 1);
sBitInfo += str2bitstr(szData[1].ToString(), 1);
sBitInfo += str2bitstr(szData[2].ToString(), 1);
sBitInfo += str2bitstr(szData[3].ToString(), 1);
string sValue = "";
for (int nRow = 0; nRow < Infomation.GetLength(0); nRow++)
{
sValue = sBitInfo.Substring(nRow, 1);
Infomation[nRow, 1] = Infomation[nRow, 0] == (sValue == "1" ? true : false) ? false : true;
Infomation[nRow, 0] = sValue == "1" ? true : false;
}
//bool DrawerKick = Infomation[eStatusInfo.DrwKickLH];
}
public char[] GetAllData()
{
string sRet = "";
string szTemp = "";
for (int nRow = 0; nRow < Infomation.Length; nRow++)
{
szTemp += Infomation[nRow, 1] == true ? "1" : "0";
}
return sRet.ToCharArray();
}
#endregion
#region Printer Status First/Second/Third/Fourth Byte Set
public void SetPrintStatus(eSetStatusType eType, char szData)
{
string sBitInfo = str2bitstr(szData.ToString(), 1);
int nStart = 0;
switch (eType)
{
case eSetStatusType.PRT_PRINTERINFOMATION: nStart = 0; break;
case eSetStatusType.PRT_ERRINFOMATION: nStart = 8; break;
case eSetStatusType.PRT_PAPERINFOMATION: nStart = 16; break;
case eSetStatusType.PRT_FIRMWAREDOWN: nStart = 24; break;
default: return;
}
string sValue = "";
for (int nRow = 0; nRow < 8; nRow++)
{
sValue = sBitInfo.Substring(nRow, 1);
Infomation[nStart + nRow, 1] = Infomation[nStart + nRow, 0] == (sValue == "1" ? true : false) ? false : true;
Infomation[nStart + nRow, 0] = sValue == "1" ? true : false;
}
}
#endregion
#region First Byte(Printer Infomation)
/// <summary>
/// [Printer Status Infomation]
/// State of the drawer kick connector pin3
/// FALSE: Low, TRUE : High
/// </summary>
public bool IsDrawerKickLoHi { get { return Infomation[(int)eStatusInfo.DrwKickLH, 0]; } set { Infomation[(int)eStatusInfo.DrwKickLH, 0] = value; } }
public bool IsDrawerKickLoHiChange { get { bool bRet = Infomation[(int)eStatusInfo.DrwKickLH, 1]; Infomation[(int)eStatusInfo.DrwKickLH, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.DrwKickLH, 1] = value; } }
/// <summary>
/// [Printer Status Infomation]
/// OnLine / OffLine
/// FALSE : OnLine, TRUE ; OffLine
/// </summary>
public bool IsOffLine { get { return Infomation[(int)eStatusInfo.OnOffLine, 0]; } set { Infomation[(int)eStatusInfo.OnOffLine, 0] = value; } }
public bool IsOffLineChange { get { bool bRet = Infomation[(int)eStatusInfo.OnOffLine, 1]; Infomation[(int)eStatusInfo.OnOffLine, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.OnOffLine, 1] = value; } }
/// <summary>
/// [Printer Status Infomation]
/// Cover Open
/// FALSE : Closed, TRUE : Open
/// </summary>
public bool IsCoverOpen { get { return Infomation[(int)eStatusInfo.Coverstate, 0]; } set { Infomation[(int)eStatusInfo.Coverstate, 0] = value; } }
public bool IsCoverOpenChange { get { bool bRet = Infomation[(int)eStatusInfo.Coverstate, 1]; Infomation[(int)eStatusInfo.Coverstate, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.Coverstate, 1] = value; } }
/// <summary>
/// [Printer Status Infomation]
/// Feed Switch
/// FALSE : stop, TRUE : operating
/// </summary>
public bool Isfeedswitch { get { return Infomation[(int)eStatusInfo.feedswitch, 0]; } set { Infomation[(int)eStatusInfo.feedswitch, 0] = value; } }
public bool IsfeedswitchChange { get { bool bRet = Infomation[(int)eStatusInfo.feedswitch, 1]; Infomation[(int)eStatusInfo.feedswitch, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.feedswitch, 1] = value; } }
#endregion
#region Second Byte(error information)
/// <summary>
/// [Error Information]
/// IsMacroExecuting
/// FALSE : Not Excuting, TRUE : Excuting
/// </summary>
public bool IsMacroExecuting { get { return Infomation[(int)eStatusInfo.MacroExecuting, 0]; } set { Infomation[(int)eStatusInfo.MacroExecuting, 0] = value; } }
public bool IsMacroExecutingChange { get { bool bRet = Infomation[(int)eStatusInfo.MacroExecuting, 1]; Infomation[(int)eStatusInfo.MacroExecuting, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.MacroExecuting, 1] = value; } }
/// <summary>
/// [Error Information]
/// Panel switch
/// FALSE : OFF, TRUE : ON
/// </summary>
public bool IsPanelswitch { get { return Infomation[(int)eStatusInfo.Panelswitch, 0]; } set { Infomation[(int)eStatusInfo.Panelswitch, 0] = value; } }
public bool IsPanelswitchChange { get { bool bRet = Infomation[(int)eStatusInfo.Panelswitch, 1]; Infomation[(int)eStatusInfo.Panelswitch, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.Panelswitch, 1] = value; } }
/// <summary>
/// [Error Information]
/// Mechanical Error
/// (Cover oen, Cutter jam)
/// FALSE : No, TRUE : Yes
/// </summary>
public bool IsMechanicalError { get { return Infomation[(int)eStatusInfo.MechanicalErr, 0]; } set { Infomation[(int)eStatusInfo.MechanicalErr, 0] = value; } }
public bool IsMechanicalErrorChange { get { bool bRet = Infomation[(int)eStatusInfo.MechanicalErr, 1]; Infomation[(int)eStatusInfo.MechanicalErr, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.MechanicalErr, 1] = value; } }
/// <summary>
/// [Error Information]
/// Cutter jam
/// FALSE : No, TRUE : Yes
/// </summary>
public bool IsCutterJam { get { return Infomation[(int)eStatusInfo.CutterJam, 0]; } set { Infomation[(int)eStatusInfo.CutterJam, 0] = value; } }
public bool IsCutterJamChange { get { bool bRet = Infomation[(int)eStatusInfo.CutterJam, 1]; Infomation[(int)eStatusInfo.CutterJam, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.CutterJam, 1] = value; } }
/// <summary>
/// [Error Information]
/// Unrecoverable Error
/// FALSE : No, TRUE : Yes
/// </summary>
public bool IsUnrecoverableErr { get { return Infomation[(int)eStatusInfo.UnrecoverableErr, 0]; } set { Infomation[(int)eStatusInfo.UnrecoverableErr, 0] = value; } }
public bool IsUnrecoverableErrChange { get { bool bRet = Infomation[(int)eStatusInfo.UnrecoverableErr, 1]; Infomation[(int)eStatusInfo.UnrecoverableErr, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.UnrecoverableErr, 1] = value; } }
/// <summary>
/// [Error Information]
/// Auto-Recoverable Error detected
/// FALSE : No, TRUE : Yes
/// </summary>
public bool IsAutoRecoverableErr { get { return Infomation[(int)eStatusInfo.AutoRecoverableErr, 0]; } set { Infomation[(int)eStatusInfo.AutoRecoverableErr, 0] = value; } }
public bool IsAutoRecoverableErrChange { get { bool bRet = Infomation[(int)eStatusInfo.AutoRecoverableErr, 1]; Infomation[(int)eStatusInfo.AutoRecoverableErr, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.AutoRecoverableErr, 1] = value; } }
#endregion
#region Third byte(paper detector information)
/// <summary>
/// [paper detector information]
/// Roll paper near end detector
/// FALSE : Paper present , TRUE : No paper
/// </summary>
private bool IsPaperNearEnd_1 { get { return Infomation[(int)eStatusInfo.PaperNearEnd_1, 0]; } set { Infomation[(int)eStatusInfo.PaperNearEnd_1, 0] = value; } }
private bool IsPaperNearEnd_1Change { get { bool bRet = Infomation[(int)eStatusInfo.PaperNearEnd_1, 1]; Infomation[(int)eStatusInfo.PaperNearEnd_1, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.PaperNearEnd_1, 1] = value; } }
/// <summary>
/// [paper detector information]
/// Roll paper near end detector
/// FALSE : Paper present , TRUE : No paper
/// </summary>
private bool IsPaperNearEnd_2 { get { return Infomation[(int)eStatusInfo.PaperNearEnd_2, 0]; } set { Infomation[(int)eStatusInfo.PaperNearEnd_2, 0] = value; } }
private bool IsPaperNearEnd_2Change { get { bool bRet = Infomation[(int)eStatusInfo.PaperNearEnd_2, 1]; Infomation[(int)eStatusInfo.PaperNearEnd_2, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.PaperNearEnd_2, 1] = value; } }
/// <summary>
/// [paper detector information]
/// Roll paper near end detector
/// FALSE : Paper present , TRUE : No paper
/// </summary>
public bool IsPaperNearEnd { get { if (IsPaperNearEnd_1 && IsPaperNearEnd_2)return true; else return false; } set { IsPaperNearEnd_1 = value; IsPaperNearEnd_2 = value; } }
public bool IsPaperNearEndChange { get { if (IsPaperNearEnd_1Change && IsPaperNearEnd_2Change)return true; else return false; } set { IsPaperNearEnd_1Change = value; IsPaperNearEnd_2Change = value; } }
/// <summary>
/// [paper detector information]
/// Roll paper end detector
/// FALSE : Paper present , TRUE : No paper
/// </summary>
private bool IsPaperEnd_1 { get { return Infomation[(int)eStatusInfo.PaperEnd_1, 0]; } set { Infomation[(int)eStatusInfo.PaperEnd_1, 0] = value; } }
private bool IsPaperEnd_1Change { get { bool bRet = Infomation[(int)eStatusInfo.PaperEnd_1, 1]; Infomation[(int)eStatusInfo.PaperEnd_1, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.PaperEnd_1, 1] = value; } }
/// <summary>
/// [paper detector information]
/// Roll paper end detector
/// FALSE : Paper present, TRUE : No paper
/// </summary>
private bool IsPaperEnd_2 { get { return Infomation[(int)eStatusInfo.PaperEnd_2, 0]; } set { Infomation[(int)eStatusInfo.PaperEnd_2, 0] = value; } }
private bool IsPaperEnd_2Change { get { bool bRet = Infomation[(int)eStatusInfo.PaperEnd_2, 1]; Infomation[(int)eStatusInfo.PaperEnd_2, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.PaperEnd_2, 1] = value; } }
/// <summary>
/// [paper detector information]
/// Roll paper end detector
/// FALSE : Paper present, TRUE : No paper
/// </summary>
public bool IsPaperEnd { get { if (IsPaperEnd_1 && IsPaperEnd_2) return true; else return false; } set { IsPaperEnd_1 = value; IsPaperEnd_2 = value; } }
public bool IsPaperEndChange { get { if (IsPaperEnd_1Change && IsPaperEnd_2Change) return true; else return false; } set { IsPaperEnd_1Change = value; IsPaperEnd_2Change = value; } }
#endregion
#region Fourth byte (paper detector information)
/// <summary>
/// [paper detector information]
/// paper detector information
/// FW down load Fail
/// FALSE : Not Fail, TRUE : Fail
/// </summary>
public bool IsFWdownLoadFail { get { return Infomation[(int)eStatusInfo.FWdownLoadFail, 0]; } set { Infomation[(int)eStatusInfo.FWdownLoadFail, 0] = value; } }
public bool IsFWdownLoadFailChange { get { bool bRet = Infomation[(int)eStatusInfo.FWdownLoadFail, 1]; Infomation[(int)eStatusInfo.FWdownLoadFail, 1] = false; return bRet; } set { Infomation[(int)eStatusInfo.FWdownLoadFail, 1] = value; } }
#endregion
#region
private long chararry2Hexstr(char[] src, int st, out string dest)
{
long nRet = 0;
char[] temp = null;
dest = "";
if (src.Length < 1)
return 0;
temp = new char[src.Length - st];
for (int i = 0; i < src.Length - st; i++)
{
temp[i] = src[i + st];
string tt = src[i + st].ToString();
dest += String.Format("{0:X}", tt);
}
//temp.CopyTo(src, st);
//bit
//string sbit = int.Parse("0100", System.Globalization.NumberStyles.AllowHexSpecifier) & (2 ^ 0);
return nRet;
}
// String To Hex
private int string2Hex(string src)
{
return int.Parse(src, System.Globalization.NumberStyles.HexNumber);
}
public string string2Hexstr(string src)
{
string sRet = "";
char[] values = src.ToCharArray();
foreach (char letter in values)
{
uint value = Convert.ToUInt32(letter);
string hexstr = string.Format("{0:X2}", value);
sRet += hexstr;
}
return sRet;
}
// Hex To String
private string Hex2string(int number)
{
return Convert.ToString(number, 16).ToUpper().PadLeft(2, '0');
}
// Byte[] To UInt32
private UInt32 Byte2UInt32SmallEndian(byte[] src, int i)
{
return Convert.ToUInt32(src[i] + (src[i + 1] << 8) + (src[i + 2] << 16) + (src[i + 3] << 24));
}
// Byte[] To UInt32
private UInt32 Byte2UInt32BigEndian(byte[] src, int i)
{
return Convert.ToUInt32(src[i + 3] + (src[i + 2] << 8) + (src[i + 1] << 16) + (src[i] << 24));
}
//UInt32 To Byte[] Small-Endian
private void Uint322Byte(byte[] dstByte, UInt32 srcuint, int start)
{
dstByte[3 + start] = (byte)((srcuint & 0xff000000) >> 24);
dstByte[2 + start] = (byte)((srcuint & 0x00ff0000) >> 16);
dstByte[1 + start] = (byte)((srcuint & 0x0000ff00) >> 8);
dstByte[0 + start] = (byte)((srcuint & 0x000000ff));
}
//UInt32 To Byte[] Big-Endian
private void UInt32ToByteBif(byte[] dstByte, UInt32 srcuint, int start)
{
dstByte[0 + start] = (byte)((srcuint & 0xff000000) >> 24);
dstByte[1 + start] = (byte)((srcuint & 0x00ff0000) >> 16);
dstByte[2 + start] = (byte)((srcuint & 0x0000ff00) >> 8);
dstByte[3 + start] = (byte)((srcuint & 0x000000ff));
}
//byte[] To string
public String Byte2string(byte[] src)
{
//string sRet = Encoding.Default.GetString(src);
return Encoding.Default.GetString(src);// UnicodeEncoding.ASCII.GetString(src);
}
public String Byte2string(byte[] src, int index, int size)
{
string sRet = "";
char sz;
for (int i = index; i < src.Length; i++)
{
sz = Convert.ToChar(src[i]);
sRet += sz.ToString();
}
return sRet;// UnicodeEncoding.ASCII.GetString(src, index, size);
}
//string To Byte[]
public Byte[] string2byte(String src)
{
return Encoding.Default.GetBytes(src); //UnicodeEncoding.ASCII.GetBytes(src);
}
//string To Byte[]
public int string2byte(String src, int sindex, int slength, byte[] dst, int bindex)
{
return UnicodeEncoding.ASCII.GetBytes(src, sindex, slength, dst, bindex);
}
/// <summary>
/// 문자열을 byte[]으로 변환
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
private byte[] ConvertToByteArrayFromString(string str)
{
byte[] temp = Encoding.Default.GetBytes(str);
if (temp.Length % 16 != 0)
{
byte[] temp2 = new byte[((temp.Length / 16) + 1) * 16];
Buffer.BlockCopy(temp, 0, temp2, 0, temp.Length);
return temp2;
}
else
{
return temp;
}
}
public byte[] hex2Byte(string hex)
{
byte[] bytes = new byte[hex.Length / 2];
for (int i = 0; i < bytes.Length; i++)
{
try
{
bytes[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
}
catch
{
throw new ArgumentException("hex is not a valid hex number!", "hex");
}
} return bytes;
}
public string str2bitstr(string sValue, int nByteLen)
{
//char bit;
string sRet = "";
string hexstr = string2Hexstr(sValue);
long value = string2Hex(hexstr);
sRet += Convert.ToString(value, 2).PadLeft(8, '0');
int d = Math.Abs((sRet.Length % 8) - 8);
if (d != 8 && d != 0)
sRet = sRet.PadLeft(d + sRet.Length, '0');
return sRet;
}
#endregion
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
// 어셈블리와 관련된 정보를 수정하려면
// 이 특성 값을 변경하십시오.
[assembly: AssemblyTitle("KPS")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("KPS")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("aff75872-6f40-425a-8ddc-1126ea9b3a9c")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

587
Agent/KPS/SerialPrint.cs Normal file
View File

@ -0,0 +1,587 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using Cosmos.Common;
using Cosmos.UserFrame;
using Cosmos.BaseFrame;
namespace Cosmos.KPS
{
class SerialPrint
{
PrinterCommand prtCmd = new PrinterCommand();
private SerialPort ComPort;
public bool IsPortOpened
{
get { if (ComPort == null) { return false; } else { return ComPort.IsOpen; } }
}
#region Printer OPEN / CLOSE
public int DeviceOpen(string sPortNum, int iBaudRate)
{
int iRet = UserCom.NG;
try
{
if(ComPort == null)
{
ComPort = new SerialPort();
ComPort.DataReceived += new SerialDataReceivedEventHandler(ComPort_DataReceived);
ComPort.PinChanged += new SerialPinChangedEventHandler(ComPort_PinChanged);
ComPort.ErrorReceived += new SerialErrorReceivedEventHandler(ComPort_ErrorReceived);
ComPort.NewLine = "\r\n";
ComPort.Encoding = System.Text.Encoding.GetEncoding("ks_c_5601-1987");
}
if (!IsPortOpened) DeviceClose();
ComPort.WriteBufferSize = 1024 * 1024;
ComPort.PortName = sPortNum;
ComPort.BaudRate = iBaudRate;
ComPort.DataBits = 8;
ComPort.StopBits = StopBits.One;
ComPort.Parity = Parity.None;
ComPort.Handshake = Handshake.RequestToSend;
ComPort.ReadTimeout = 500;
ComPort.WriteTimeout = 2000;
ComPort.RtsEnable = true;
ComPort.DtrEnable = true;
if(!ComPort.IsOpen)
{
ComPort.Open();
}
iRet = ComPort.IsOpen == true ? UserCom.OK : UserCom.NG;
return iRet;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
return -99;
}
}
public int DeviceClose()
{
int iRet = UserCom.NG;
try
{
if(!IsPortOpened)
{
return UserCom.OK;
}
ComPort.Close();
if(IsPortOpened)
{
System.Threading.Thread.Sleep(1000);
ComPort.Close();
}
iRet = IsPortOpened == false ? UserCom.OK : UserCom.NG;
return iRet;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_DEBUG,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
return -99;
}
}
#endregion
#region Serial Port Event
void ComPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
}
void ComPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
{
}
void ComPort_PinChanged(object sender, SerialPinChangedEventArgs e)
{
}
#endregion
#region Status Check
public int PrinterStatusCheckBySerial(string sType)
{
int iRet = UserCom.NG;
string sResp = "";
try
{
#region Printer CHK1
if(sType == "CHK1")
{
// 프린터 초기화
TransmitCommand(PosConst.ESCP_COMMAND.INITIALIZE_PRINTER);
System.Threading.Thread.Sleep(50);
// Cover Check
TransmitCommand(PosConst.ESCP_COMMAND.TRANSMIT_OFFLINE_STATUS);
System.Threading.Thread.Sleep(50);
sResp = ComPort.ReadExisting();
if(sResp.Length > 0)
{
byte[] respByte = Encoding.Default.GetBytes(sResp);
if(respByte[0] == PosConst.ESCP_COMMAND.STATUS_OK[0])
{
iRet = UserCom.OK;
}
else
{
iRet = UserCom.NG;
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"COVER Opened");
}
}
return iRet;
}
#endregion
#region Printer CHK2
if(sType == "CHK2")
{
// 프린터 초기화
TransmitCommand(PosConst.ESCP_COMMAND.INITIALIZE_PRINTER);
System.Threading.Thread.Sleep(50);
// Paper Check
TransmitCommand(PosConst.ESCP_COMMAND.TRANSMIT_CONTINUOUS_PAPER_DETECTOR_STATUS);
System.Threading.Thread.Sleep(50);
sResp = ComPort.ReadExisting();
if(sResp.Length > 0)
{
byte[] respByte = Encoding.Default.GetBytes(sResp);
if(respByte[0] == PosConst.ESCP_COMMAND.STATUS_OK[0])
{
iRet = UserCom.OK;
}
else
{
iRet = UserCom.NG;
String sRecvData = Encoding.Default.GetString(respByte);
string NEAR_END = Encoding.Default.GetString(new byte[] { 0x1E });
string NOT_PRESENT = Encoding.Default.GetString(new byte[] { 0x72 });
string sErrMsg = "";
if (sRecvData == NEAR_END) sErrMsg = "PAPER_NEAR_END";
else if (sRecvData == NOT_PRESENT) sErrMsg = "PAPER_NOT_PRESENT";
else sErrMsg = "ERC_ERROR";
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
sErrMsg);
}
}
return iRet;
}
#endregion
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"StatusCheck 실패");
}
return iRet;
}
#endregion
#region
private void TransmitCommand(byte[] aCmd)
{
if(IsPortOpened)
{
ComPort.Write(aCmd, 0, aCmd.Length);
}
}
#endregion
#region Cut Paper
public bool CutPaper(int LineFeedCnt)
{
long nRet = -1;
try
{
for (int i = 0; i < LineFeedCnt; i++)
{
TransmitCommand(PosConst.ESCP_COMMAND.LINE_FEED);
}
TransmitCommand(PosConst.ESCP_COMMAND.PAPER_CUT);
System.Threading.Thread.Sleep(10);
TransmitCommand(PosConst.ESCP_COMMAND.LINE_FEED);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Cut Paper Exception");
}
return nRet == BaseCom.OK ? true : false;
}
#endregion
#region
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eVerticalSize"></param>
/// <param name="eHorizontalSize"></param>
/// <param name="eBold"></param>
/// <param name="eTextUnderLine"></param>
/// <param name="eTextReverseMode"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.CharactersizeV eVerticalSize, PrinterCommand.CharactersizeH eHorizontalSize, PrinterCommand.TextBold eBold, PrinterCommand.TextUnderLine eTextUnderLine, PrinterCommand.TextReverseMode eTextReverseMode, bool bLineFeed)
{
bool bRet = false;
string sCmdctrlTmp = "";
try
{
// 확대 Command를 설정
sCmdctrlTmp = GetCharactersizeCmd(eVerticalSize, eHorizontalSize);
// UnerLine
sCmdctrlTmp += GetUnderLineCmd(eTextUnderLine);
// Bold
sCmdctrlTmp += GetBoldCmd(eBold);
// 정렬
sCmdctrlTmp += GetAlignment(eAlignment);
// Reverse
sCmdctrlTmp += GetReverseCmd(eTextReverseMode);
// 출력
byte[] byteCmdctrl = Encoding.Default.GetBytes(sCmdctrlTmp);
TransmitCommand(byteCmdctrl); // Command 전송
byte[] byteData = Encoding.Default.GetBytes(sValue);
TransmitCommand(byteData); // 출력 Data 전송
if(bLineFeed == true)
{
TransmitCommand(PosConst.ESCP_COMMAND.LINE_FEED);
}
bRet = true;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eVerticalSize"></param>
/// <param name="eHorizontalSize"></param>
/// <param name="eBold"></param>
/// <param name="eTextUnderLine"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.CharactersizeV eVerticalSize, PrinterCommand.CharactersizeH eHorizontalSize, PrinterCommand.TextBold eBold, PrinterCommand.TextUnderLine eTextUnderLine, bool bLineFeed)
{
return TextPrint(sValue, eAlignment, eVerticalSize, eHorizontalSize, eBold, eTextUnderLine, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, bool bLineFeed)
{
return TextPrint(sValue, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, PrinterCommand.TextBold.Nomal, PrinterCommand.TextUnderLine.Nomal, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, bool bLineFeed)
{
return TextPrint(sValue, eAlignment, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, PrinterCommand.TextBold.Nomal, PrinterCommand.TextUnderLine.Nomal, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eVerticalSize"></param>
/// <param name="eHorizontalSize"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.CharactersizeV eVerticalSize, PrinterCommand.CharactersizeH eHorizontalSize, bool bLineFeed)
{
return TextPrint(sValue, eAlignment, eVerticalSize, eHorizontalSize, PrinterCommand.TextBold.Nomal, PrinterCommand.TextUnderLine.Nomal, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eBold"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.TextBold eBold, bool bLineFeed)
{
return TextPrint(sValue, eAlignment, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, eBold, PrinterCommand.TextUnderLine.Nomal, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eTextUnderLine"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.TextUnderLine eTextUnderLine, bool bLineFeed)
{
return TextPrint(sValue, eAlignment, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, PrinterCommand.TextBold.Nomal, eTextUnderLine, PrinterCommand.TextReverseMode.Nomal, bLineFeed);
}
/// <summary>
/// Print Text
/// </summary>
/// <param name="sValue"></param>
/// <param name="eAlignment"></param>
/// <param name="eTextReverseMode"></param>
/// <param name="bLineFeed"></param>
/// <returns></returns>
public bool TextPrint(string sValue, PrinterCommand.Alignment eAlignment, PrinterCommand.TextReverseMode eTextReverseMode, bool bLineFeed)
{
return TextPrint(sValue, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, PrinterCommand.TextBold.Nomal, PrinterCommand.TextUnderLine.Nomal, eTextReverseMode, bLineFeed);
}
private string GetCharactersizeCmd(PrinterCommand.CharactersizeV eVerticalSize, PrinterCommand.CharactersizeH eHorizontalSize)
{
string sRet = "";
try
{
int Hvalue = 0;
int Vvalue = 0;
switch (eVerticalSize)
{
case PrinterCommand.CharactersizeV.V_1: Vvalue = 0; break;
case PrinterCommand.CharactersizeV.V_2: Vvalue = 1; break;
case PrinterCommand.CharactersizeV.V_3: Vvalue = 2; break;
case PrinterCommand.CharactersizeV.V_4: Vvalue = 3; break;
case PrinterCommand.CharactersizeV.V_5: Vvalue = 4; break;
case PrinterCommand.CharactersizeV.V_6: Vvalue = 5; break;
case PrinterCommand.CharactersizeV.V_7: Vvalue = 6; break;
case PrinterCommand.CharactersizeV.V_8: Vvalue = 7; break;
default: Vvalue = 0; break;
}
switch (eHorizontalSize)
{
case PrinterCommand.CharactersizeH.H_1: Hvalue = 16 * 0; break;
case PrinterCommand.CharactersizeH.H_2: Hvalue = 16 * 1; break;
case PrinterCommand.CharactersizeH.H_3: Hvalue = 16 * 2; break;
case PrinterCommand.CharactersizeH.H_4: Hvalue = 16 * 3; break;
case PrinterCommand.CharactersizeH.H_5: Hvalue = 16 * 4; break;
case PrinterCommand.CharactersizeH.H_6: Hvalue = 16 * 5; break;
case PrinterCommand.CharactersizeH.H_7: Hvalue = 16 * 6; break;
case PrinterCommand.CharactersizeH.H_8: Hvalue = 16 * 7; break;
default: Hvalue = 16 * 0; break;
}
sRet = Encoding.Default.GetString(prtCmd.ESC_VHMAG) + Convert.ToChar(Vvalue + Hvalue).ToString();
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sRet;
}
/// <summary>
/// 진한 문자(Bold)
/// </summary>
/// <param name="eBold"></param>
/// <returns></returns>
private string GetBoldCmd(PrinterCommand.TextBold eBold)
{
string sRet = "";
try
{
switch (eBold)
{
case PrinterCommand.TextBold.Nomal: sRet = Encoding.Default.GetString(prtCmd.ESC_BOLD_OFF); break;
case PrinterCommand.TextBold.Bold: sRet = Encoding.Default.GetString(prtCmd.ESC_BOLD_ON); break;
default: sRet = Encoding.Default.GetString(prtCmd.ESC_BOLD_OFF); break;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sRet;
}
/// <summary>
/// UnderLine
/// </summary>
/// <param name="eUnderLine"></param>
/// <param name="nDot"></param>
/// <returns></returns>
private string GetUnderLineCmd(PrinterCommand.TextUnderLine eUnderLine, int nDot)
{
string sRet = "";
try
{
if (eUnderLine == PrinterCommand.TextUnderLine.UnderLine)
{
if (nDot == 2)
{
sRet = Encoding.Default.GetString(prtCmd.ESC_UNDERLINEON1DOT);
}
else
{
sRet = Encoding.Default.GetString(prtCmd.ESC_UNDERLINEON2DOT);
}
}
else
{
sRet = Encoding.Default.GetString(prtCmd.ESC_UNDERLINEOFF);
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sRet;
}
/// <summary>
/// UnderLine Text
/// </summary>
/// <param name="eUnderLine"></param>
/// <returns></returns>
private string GetUnderLineCmd(PrinterCommand.TextUnderLine eUnderLine)
{
return GetUnderLineCmd(eUnderLine, 1);
}
/// <summary>
/// 반전 텍스트
/// </summary>
/// <param name="eTextReverseMode"></param>
/// <returns></returns>
private string GetReverseCmd(PrinterCommand.TextReverseMode eTextReverseMode)
{
string sRet = "";
try
{
switch (eTextReverseMode)
{
case PrinterCommand.TextReverseMode.ReverseMode: sRet = Encoding.Default.GetString(prtCmd.ESC_REVERSE_MODE_ON); break;
default: sRet = Encoding.Default.GetString(prtCmd.ESC_REVERSE_MODE_OFF); break;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sRet;
}
/// <summary>
/// 정렬 Command를 가져온다.
/// </summary>
/// <param name="eAlignment"></param>
/// <returns></returns>
private string GetAlignment(PrinterCommand.Alignment eAlignment)
{
string sRet = "";
try
{
switch (eAlignment)
{
case PrinterCommand.Alignment.Center:
sRet = Encoding.Default.GetString(prtCmd.ESC_CENTER);
break;
case PrinterCommand.Alignment.Right:
sRet = Encoding.Default.GetString(prtCmd.ESC_RIGHT);
break;
case PrinterCommand.Alignment.Left:
default:
sRet = Encoding.Default.GetString(prtCmd.ESC_LEFT);
break;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sRet;
}
#endregion
}
}

64
Agent/KPS/frmKPS.Designer.cs generated Normal file
View File

@ -0,0 +1,64 @@
namespace Cosmos.KPS
{
partial class frmKPS
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmKPS));
this.oposPrinter = new AxOposPOSPrinter_CCO.AxOPOSPOSPrinter();
((System.ComponentModel.ISupportInitialize)(this.oposPrinter)).BeginInit();
this.SuspendLayout();
//
// oposPrinter
//
this.oposPrinter.Enabled = true;
this.oposPrinter.Location = new System.Drawing.Point(30, 46);
this.oposPrinter.Name = "oposPrinter";
this.oposPrinter.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("oposPrinter.OcxState")));
this.oposPrinter.Size = new System.Drawing.Size(129, 52);
this.oposPrinter.TabIndex = 0;
//
// frmKPS
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 262);
this.Controls.Add(this.oposPrinter);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "frmKPS";
this.ShowInTaskbar = false;
this.Text = "frmKPS";
((System.ComponentModel.ISupportInitialize)(this.oposPrinter)).EndInit();
this.ResumeLayout(false);
}
#endregion
private AxOposPOSPrinter_CCO.AxOPOSPOSPrinter oposPrinter;
}
}

30
Agent/KPS/frmKPS.cs Normal file
View File

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Cosmos.KPS
{
public partial class frmKPS : Form
{
public frmKPS()
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
//this.UpdateStyles();
}
public AxOposPOSPrinter_CCO.AxOPOSPOSPrinter OposPrinter
{
get
{
return this.oposPrinter;
}
}
}
}

128
Agent/KPS/frmKPS.resx Normal file
View File

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="oposPrinter.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAIQAAAAIB
AAAAAQAAAAAAAAAAAAAAAAwAAAAACQAAVQ0AAGAFAAAL
</value>
</data>
</root>

View File

@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : MasterDown 관련 클래스 Activator
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
public class Activator : InitServiceAbstract
{
/// <summary>
/// Define main entrance point of project load. (프로젝트 로드의 주진입점을 정의합니다.)
/// </summary>
public Activator()
{
}
/// <summary>
///
/// </summary>
/// <param name="sClassNm"></param>
/// <returns></returns>
public override object InitServiceInstance(string sClassNm)
{
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Starting !!!");
object retObj = null;
//클래스 찾아오기 위함
switch (sClassNm)
{
case ServiceLists.AGENT_BACKGROUND_DOWN.BACKGROUND_DOWN_MAIN:
{
Cosmos.BackgroundDown.BackgroundDownMain agentClass = new Cosmos.BackgroundDown.BackgroundDownMain();
retObj = agentClass;
break;
}
}
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Completed !!!");
return retObj;
}
}
}

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" 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>{791617B7-64DA-4743-B8F1-CA413607FC31}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Cosmos.BackgroundDown</RootNamespace>
<AssemblyName>Agent.BackgroundDown</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>Svn</SccProjectName>
<SccLocalPath>Svn</SccLocalPath>
<SccAuxPath>Svn</SccAuxPath>
<SccProvider>SubversionScc</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\BIN\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</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="Cosmos.BaseFrame">
<HintPath>..\..\..\BIN\Cosmos.BaseFrame.dll</HintPath>
</Reference>
<Reference Include="Cosmos.ServiceProvider, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.ServiceProvider.dll</HintPath>
</Reference>
<Reference Include="Cosmos.UserFrame">
<HintPath>..\..\..\BIN\Cosmos.UserFrame.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Activator.cs" />
<Compile Include="BackgroundDownMain.cs" />
<Compile Include="DatabaseMssql.cs" />
<Compile Include="frmPosIrtMessage.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmPosIrtMessage.designer.cs">
<DependentUpon>frmPosIrtMessage.cs</DependentUpon>
</Compile>
<Compile Include="NetworkFtp.cs" />
<Compile Include="NetworkIRT.cs" />
<Compile Include="NetworkJSON.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Svr2Tran.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Library\CommonManager\CommonManager.csproj">
<Project>{670a81be-cee3-4c29-846d-a37652ca270d}</Project>
<Name>CommonManager</Name>
</ProjectReference>
<ProjectReference Include="..\..\Library\Common\Common.csproj">
<Project>{a5b7accd-79eb-4261-bd36-01ab484ad8e3}</Project>
<Name>Common</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="frmPosIrtMessage.resx">
<DependentUpon>frmPosIrtMessage.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>copy .\IC\Agent.BackgroundDown.dll .\Agent.BackgroundDown.dll</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>copy .\Agent.BackgroundDown.dll .\IC\Agent.BackgroundDown.dll</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,132 @@
using System.Data.SqlClient;
using System.Data;
using System.Diagnostics;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : MSSQL DB 관련 처리
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.BackgroundDown
{
public class DatabaseMssql
{
private SqlDB sqlDb = null;
public bool Begin()
{
return sqlDb.DBBeginTransaction();
}
public bool Commit()
{
return sqlDb.DBTransactionCommit();
}
public bool Rollback()
{
return sqlDb.DBTransactionRollback();
}
public void Close()
{
sqlDb.DBClose();
}
/// <summary>
/// SQL DataTable를 이용한 Select
/// <para>return -> 1:OK, -1:Connection 정보 에러, -2:SQL 에러, -3:기타 에러, 0:Select 결과 없음</para>
/// </summary>
/// <param name="sQuery"></param>
/// <param name="outDtReturn"></param>
/// <returns></returns>
public int DBSelect(string sQuery, out DataTable outDtReturn)
{
int iReturn = -9;
DataTable dtReturn = null;
string strCommand = sQuery;
CommandType sqlCommandType = CommandType.Text;
//System.Diagnostics.Debug.Print("SQL=" + sQuery);
iReturn = sqlDb.DBDataTableSelect(strCommand, sqlCommandType, (SqlParameter[])null, out dtReturn);
outDtReturn = dtReturn;
return iReturn;
}
/// <summary>
/// return -> 1:OK, -1:Connection 에러, -2:SQL 에러, -3:기타 에러, -4:적용된 Row 없음
/// </summary>
/// <param name="sQuery"></param>
/// <returns></returns>
public int DBExecuteNonQuery(string sQuery)
{
int iReturn = 0;
CommandType sqlCommandType = CommandType.Text;
iReturn = sqlDb.DBExecuteNonQuery(sQuery, sqlCommandType, (SqlParameter[])null);
return iReturn;
}
/// <summary>
/// return -> 1:OK, -1:Connection 에러, -2:SQL 에러, -3:기타 에러, -4:적용된 Row 없음
/// </summary>
/// <param name="sQuery"></param>
/// <returns></returns>
public int DBExecuteNonQuery(string[] sQuery)
{
int iReturn = 0;
CommandType sqlCommandType = CommandType.Text;
iReturn = sqlDb.DBExecuteNonQuery(sQuery, sqlCommandType, (SqlParameter[])null);
return iReturn;
}
/// <summary>
/// return -> 1:OK, -1:Connection 에러, -2:SQL 에러, -3:기타 에러, -4:적용된 Row 없음
/// </summary>
/// <param name="sQuery"></param>
/// <returns></returns>
public int DBExecuteNonQuery(string[] sQuery, bool bStandAlone)
{
int iReturn = 0;
CommandType sqlCommandType = CommandType.Text;
iReturn = sqlDb.DBExecuteNonQuery(sQuery, sqlCommandType, (SqlParameter[])null, bStandAlone);
return iReturn;
}
/// <summary>
/// MSSQL Database Conntction String
/// </summary>
/// <param name="pDataSource"></param>
/// <param name="pInitialCatalog"></param>
/// <param name="pUID"></param>
/// <param name="pPassword"></param>
public bool SetDBConnectionString(string pDataSource, string pInitialCatalog, string pUID, string pPassword)
{
bool bReturn = false;
if(sqlDb != null)
{
if (sqlDb.IsDBOpen()) sqlDb.DBClose();
}
sqlDb = new SqlDB(pDataSource, pInitialCatalog, pUID, pPassword);
bReturn = sqlDb.IsDBOpen();
return bReturn;
}
}
}

View File

@ -0,0 +1,181 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Collections;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.Data;
using System.Net.Sockets;
using System.Threading;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : FTP 다운로드
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.BackgroundDown
{
public class NetworkFtp : INetworkFTP
{
private readonly string LOCAL_DOWN_PATH = BaseCom.NxRootPath + @"DOWN\"; //Download File Location (다운로드 파일위치)
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// POS Status Value (POS 상태값)
/// </summary>
private PosStatus m_cPosStatus = null;
private FTP m_ClsFtp;
public NetworkFtp()
{
m_cPosStatus = (PosStatus)StateObject.POS;
}
/// <summary>
/// FTP 서버에 Connect
/// </summary>
/// <param name="sServer"></param>
/// <param name="sUserId"></param>
/// <param name="sPassword"></param>
/// <param name="iTimeOutSeconds"></param>
/// <param name="iPort"></param>
/// <returns>0 : 정상접속, -1:시간초과, -2:로그인 실패, -3:서버접속 실패, -4:지원하지 않는 시스템</returns>
public int Connect(string sServer, string sUserId, string sPassword, int iTimeOutSeconds, int iPort)
{
int nReturn = -9;
try
{
m_ClsFtp = new FTP((iPort == 0) ? sServer : sServer + ":" + iPort, sUserId, sPassword);
if (m_ClsFtp != null) nReturn = 0;
else nReturn = -1;
////m_ClsFtp = new ClsFtp(sServer, sUserId, sPassword, iTimeOutSeconds, iPort);
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// //MessageBox.Show("FTP Server Connect Error !!! [" + nReturn.ToString() + "]");
//// return nReturn;
////}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Connect()", e.Message);
return nReturn;
}
return nReturn;
}
/// <summary>
///
/// </summary>
/// <param name="sSvrDirectory"></param>
/// <param name="sLocalDirectory"></param>
/// <param name="sFileNm"></param>
/// <returns>0:정상종료, -1:Not Connected, -2:Binary Mode set failed, -3: failed local file Create, -4:socket 에러, -5:remote file 없슴, -6:정상수신실패, -7: 파일사이즈 틀림</returns>
public int Download(string sSvrDirectory, string sLocalDirectory, string sFileNm, string sFtpMode = PosConst.FTP_CONN_TYPE.PASSIVE)
{
string sMsg = "";
return Download(sSvrDirectory, sLocalDirectory, sFileNm, ref sMsg, sFtpMode);
}
public int Download(string sSvrDirectory, string sLocalDirectory, string sFileNm, ref string sMsg, string sFtpMode = PosConst.FTP_CONN_TYPE.PASSIVE)
{
int nReturn = -9;
bool bRet = false;
try
{
if (CmUtil.RightH(sLocalDirectory, 1) != "\\") sLocalDirectory += "\\";
if (Directory.Exists(sLocalDirectory) == false) Directory.CreateDirectory(sLocalDirectory);
bRet = m_ClsFtp.Download(sSvrDirectory + sFileNm, sLocalDirectory + sFileNm, ref sMsg, sFtpMode);
if (bRet) nReturn = 0;
else nReturn = -1;
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// return nReturn;
////}
////string sDir = m_ClsFtp.ChangeDir(sSvrDirectory);
////nReturn = m_ClsFtp.Download(sLocalDirectory, sFileNm, true);
////if (nReturn < 0 && File.Exists(BaseCom.NxDownPath + sFileNm + ".ftp") == true)
////{
//// File.Delete(BaseCom.NxDownPath + sFileNm + ".ftp");
////}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Download()", e.Message);
sMsg = sFileNm + " " + e.Message;
return nReturn;
}
return nReturn;
}
/// <summary>
/// FTP서버와의 연결을 종료
/// </summary>
public void Disconnect()
{
//m_ClsFtp.Close();
//m_ClsFtp.cleanup();
}
/// <summary>
/// 정해진 디렉토리에 정해진 파일을 업로드
/// </summary>
/// <param name="sSvrDirectory"></param>
/// <param name="sLocalDirectory"></param>
/// <param name="sFileNm"></param>
/// <returns>0:정상완료, -1:Not Connected, -2: data socket create error, -3: file write 실패, -4:socket error, -5: 정상처리 실패(서버)</returns>
public int Upload(string sSvrDirectory, string sLocalDirectory, string sFileNm)
{
int nReturn = -9;
bool bRet = false;
try
{
bRet = m_ClsFtp.Upload(sLocalDirectory + sFileNm, sSvrDirectory + sFileNm);
if (bRet) nReturn = 0;
else nReturn = -1;
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// return nReturn;
////}
////string sDir = m_ClsFtp.ChangeDir(sSvrDirectory);
////nReturn = m_ClsFtp.Upload(sLocalDirectory, sFileNm, true);
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Upload()", e.Message);
return nReturn;
}
return nReturn;
}
}
}

View File

@ -0,0 +1,669 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Collections;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : SC / HQ IRT Request (SC / 본부 IRT 요청)
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.BackgroundDown
{
public class NetworkIRT
{
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus; // 기본정보 참조
private DeviceStatus m_cDevStatus; // 장비정보 참조
/// <summary>
/// Sending Socket (전송 소켓)
/// </summary>
private static TcpSocket m_IrtSocket = null;
/// <summary>
/// IP
/// </summary>
private string m_ServerIp = "";
/// <summary>
/// Port
/// </summary>
private int m_ServerPort = 0;
/// <summary>
/// TimeOut
/// </summary>
private int m_ServerTimeout = 10000;
/// ---------------------------------------------------------------------------------------------
/// <summary>
/// Constructor (생성자)
/// </summary>
/// ---------------------------------------------------------------------------------------------
public NetworkIRT()
{
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cDevStatus = (DeviceStatus)StateObject.DEVICE; // POS 장치정보 (PDA)
}
#region OnLine
/// <summary>
/// Get network online status with Ping check. (Ping체크로 network Online상태를 취득한다,)
/// </summary>
/// <param name="pHostAddress">Ip address</param>
/// <returns>True : online false : Offline</returns>
private int CheckNetworkOnline(string pHostAddress)
{
//Ping Check (Ping 체크)
Ping pingSender = new Ping();
PingOptions optins = new PingOptions();
optins.DontFragment = true;
string data = "aaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 120;
PingReply reply = pingSender.Send(pHostAddress, timeout, buffer, optins);
if (reply.Status == IPStatus.Success)
return UserCom.OK;
else
return UserCom.NG;
}
#endregion
#region
/// <summary>
/// 암호화 위해 전문 편집
/// </summary>
/// <param name="plainData">평문</param>
/// <returns>암호문, 에러시 평문 리턴</returns>
private byte[] EncryptData(byte[] plainData)
{
int nNowPos = 0;
//통신헤더전문편집
string[] aCommHead = new string[Column.COMM_HEADER.LEN.Length];
ItemColumn.ParseMessage(Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE, plainData, ref nNowPos, ref aCommHead);
string sPosNo = aCommHead[Column.COMM_HEADER.SEQ.PosNo].ToString();
//string sRegNo = aCommHead[Column.COMM_HEADER.SEQ.RegNo].ToString();
string sRegNo = "";
string sMsgLen = aCommHead[Column.COMM_HEADER.SEQ.MsgLen].ToString();
string sEncType = aCommHead[Column.COMM_HEADER.SEQ.EncType].ToString();
byte[] byteEncryptData = null;
byte[] editedAllData = null;
if (sEncType == "0") // "0" 평문
{
//Tran헤더 포함 전문 데이터
byte[] tranBytes = new byte[plainData.Length - nNowPos];
Array.Copy(plainData, nNowPos, tranBytes, 0, plainData.Length - nNowPos);
//암호화
byteEncryptData = AES.DynamicKeyEncrypt(sPosNo, sRegNo, tranBytes);
int iMsgLen = nNowPos + byteEncryptData.Length;
aCommHead[Column.COMM_HEADER.SEQ.MsgLen] = iMsgLen.ToString(); //공통헤더와 암호문 더해진 길이
aCommHead[Column.COMM_HEADER.SEQ.EncType] = "1"; //0:평문 1:암호화
string sChangedCommHeader = ItemColumn.MakeMessage(aCommHead, Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE);
byte[] byteCommHeader = Encoding.UTF8.GetBytes(sChangedCommHeader);
editedAllData = new byte[iMsgLen];
Array.Copy(byteCommHeader, editedAllData, byteCommHeader.Length);
Array.Copy(byteEncryptData, 0, editedAllData, byteCommHeader.Length, byteEncryptData.Length);
return editedAllData;
}
else // "1" 암호문
{
return plainData;
}
}
#endregion
#region
/// <summary>
/// 복호화 위해 전문 편집
/// </summary>
/// <param name="EncryptData"></param>
/// <returns></returns>
private byte[] DecryptData(byte[] EncryptData)
{
int nNowPos = 0;
//통신헤더전문편집
string[] aCommHead = new string[Column.COMM_HEADER.LEN.Length];
ItemColumn.ParseMessage(Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE, EncryptData, ref nNowPos, ref aCommHead);
string sPosNo = aCommHead[Column.COMM_HEADER.SEQ.PosNo].ToString();
//string sRegNo = aCommHead[Column.COMM_HEADER.SEQ.RegNo].ToString();
string sRegNo = "";
string sMsgLen = aCommHead[Column.COMM_HEADER.SEQ.MsgLen].ToString();
string sEncType = aCommHead[Column.COMM_HEADER.SEQ.EncType].ToString();
byte[] bytePlainData = null;
byte[] editedAllData = null;
if (sEncType == "1") //복호화
{
//Tran헤더 포함 전문 데이터
byte[] tranBytes = new byte[EncryptData.Length - nNowPos];
Array.Copy(EncryptData, nNowPos, tranBytes, 0, tranBytes.Length);
//복호화
bytePlainData = AES.DynamicKeyDecrypt(sPosNo, sRegNo, tranBytes);
int iMsgLen = nNowPos + bytePlainData.Length;
aCommHead[Column.COMM_HEADER.SEQ.MsgLen] = iMsgLen.ToString(); //공통헤더와 암호문 더해진 길이
aCommHead[Column.COMM_HEADER.SEQ.EncType] = "0"; //0:평문 1:암호화
string sChangedCommHeader = ItemColumn.MakeMessage(aCommHead, Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE);
byte[] byteCommHeader = Encoding.Default.GetBytes(sChangedCommHeader);
editedAllData = new byte[byteCommHeader.Length + bytePlainData.Length];
Array.Copy(byteCommHeader, editedAllData, byteCommHeader.Length);
Array.Copy(bytePlainData, 0, editedAllData, byteCommHeader.Length, bytePlainData.Length);
return editedAllData;
}
else
{
return EncryptData;
}
}
#endregion
#region IRT Send/Receive
/// <summary>
/// IRT전문의 Send/Receive
/// </summary>
/// <param name="pSendData"></param>
/// <param name="pRecvData"></param>
/// <returns></returns>
private int SendReceiveData(byte[] pSendData, ref byte[] pRecvData)
{
int nRecvLen = 0;
int nStat = BaseCom.NG;
byte[] rRecvData = null;
try
{
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
// Data Send & Receive
nRecvLen = m_IrtSocket.SendReceiveData(pSendData, ref rRecvData, m_ServerTimeout);
if (nRecvLen > 0)
{
pRecvData = rRecvData;
nStat = BaseCom.OK;
}
else
{
pRecvData = null;
}
m_IrtSocket.Close();
}
catch (Exception e)
{
if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveData()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
finally
{
}
System.Threading.Thread.Sleep(100);
return nStat;
}
/// <summary>
/// IRT전문의 Send/Receive
/// </summary>
/// <param name="pSendData"></param>
/// <param name="pRecvData"></param>
/// <returns></returns>
private int SendReceiveData(string pSendData, ref string pRecvData)
{
int nRecvLen = 0;
int nStat = BaseCom.NG;
string rRecvData = "";
try
{
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
// Data Send & Receive
nRecvLen = m_IrtSocket.SendReceiveData(pSendData, ref rRecvData, m_ServerTimeout);
if (nRecvLen > 0)
{
pRecvData = rRecvData;
nStat = BaseCom.OK;
}
else
{
pRecvData = "";
nStat = nRecvLen;
}
m_IrtSocket.Close();
}
catch (Exception e)
{
if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveData()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
finally
{
}
System.Threading.Thread.Sleep(100);
return nStat;
}
#endregion
#region IRT /
/// <summary>
/// IRT String로의 Send/Recv
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="sComm"></param>
/// <param name="sRecvData"></param>
/// <returns></returns>
public int IRTSendReceive(string sIP, int iPort, int iTimeOut, string sComm, ref string sRecvData)
{
int nStat = 9;
string sReturn = string.Empty;
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
byte[] bEditedSendData = null;
if (m_ServerIp != "" && m_ServerPort != 0)
{
//암호화
if (sComm.Length != 0)
{
//bEditedSendData = EncryptData(Encoding.Default.GetBytes(sComm));
bEditedSendData = Encoding.Default.GetBytes(sComm);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sComm);
}
else
{
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] SendData is Null");
}
//SendReceive
nStat = SendReceiveData(Encoding.Default.GetString(bEditedSendData, 0, bEditedSendData.Length), ref sReturn);
//복호화
if (sReturn.Length != 0)
{
byte[] byteRecv = DecryptData(Encoding.Default.GetBytes(sReturn));
sRecvData = Encoding.Default.GetString(byteRecv, 0, byteRecv.Length);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvData);
}
else
{
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] RecvData Is Null");
}
}
return nStat;
}
/// <summary>
/// IRT Byte로의 Send/Recv
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="comm"></param>
/// <param name="sRecvData"></param>
/// <returns></returns>
public int IRTSendReceive(string sIP, int iPort, int iTimeOut, byte[] comm, ref byte[] sRecvData)
{
int nStat = 9;
string sReturn = string.Empty;
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
byte[] bEditedSendData = null;
if (m_ServerIp != "" && m_ServerPort != 0)
{
//암호화
if (comm != null)
{
bEditedSendData = EncryptData(comm);
string sTmpLog = Encoding.Default.GetString(comm, 0, comm.Length);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sTmpLog);
}
else
{
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] SendData Is Null");
}
//SendReceive
nStat = SendReceiveData(bEditedSendData, ref sRecvData);
//복호화
if (sRecvData != null)
{
byte[] sDecryptRecvData = DecryptData(sRecvData);
sRecvData = sDecryptRecvData;
string sTmpLog = Encoding.Default.GetString(sDecryptRecvData, 0, sDecryptRecvData.Length);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sTmpLog);
}
else
{
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] RecvData Is Null");
}
}
return nStat;
}
#endregion
#region IRT - VAN
/// <summary>
/// IRT String로의 Send/Recv - 외부 Van
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="sSendData"></param>
/// <param name="sRecvData"></param>
/// <param name="nRecvDataLen"></param>
/// <param name="sAckData"></param>
/// <returns></returns>
public int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, int nRecvDataLen, string sAckData)
{
return IRTSendReceiveEx(sIP, iPort, iTimeOut, sSendData, ref sRecvData, nRecvDataLen, sAckData, false);
}
public int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, int nRecvDataLen, string sAckData, bool bErrorSkip)
{
int nStat = BaseCom.NG;
try
{
sRecvData = "";
if (sIP == "" || iPort == 0) return nStat;
// Connect 설정
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveEx()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sSendData);
// Data Send & Receive
System.Diagnostics.Debug.Print("요청=" + sSendData);
nStat = m_IrtSocket.SendReceiveData(sSendData, ref sRecvData, m_ServerTimeout, nRecvDataLen, sAckData, bErrorSkip);
System.Diagnostics.Debug.Print("응답=" + sRecvData);
if (nStat > 0) nStat = BaseCom.OK;
m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveSEx()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvData);
}
catch (Exception e)
{
if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveDataEx()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
System.Threading.Thread.Sleep(100);
return nStat;
}
/// <summary>
/// IRT Byte로의 Send/Recv - 외부 Van
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="bSendData"></param>
/// <param name="bRecvData"></param>
/// <param name="nRecvDataLen"></param>
/// <param name="sAckData"></param>
/// <returns></returns>
public int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen, byte[] sAckData)
{
int nStat = BaseCom.NG;
try
{
bRecvData[0] = 0;
if (sIP == "" || iPort == 0) return nStat;
// Connect 설정
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveEx()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
// Data Send & Receive
System.Diagnostics.Debug.Print("요청=" + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
nStat = m_IrtSocket.SendReceiveData(bSendData, ref bRecvData, m_ServerTimeout, nRecvDataLen, sAckData);
System.Diagnostics.Debug.Print("응답=" + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
if (nStat > 0) nStat = BaseCom.OK;
m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveEx()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
}
catch (Exception e)
{
if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveDataEx()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
return nStat;
}
#endregion
#region IRT - VAN ( )
/// <summary>
/// IRT String로의 Send/Recv - 외부 Van (길이 위치지정)
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="sSendData"></param>
/// <param name="sRecvData"></param>
/// <param name="bFullSize"></param>
/// <param name="nRecvDataLen"></param>
/// <param name="nRecvDataStartPosion"></param>
/// <returns></returns>
public int IRTSendReceiveLen(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, bool bFullSize, int nRecvDataLen, int nRecvDataStartPosion)
{
int nStat = BaseCom.NG;
try
{
sRecvData = "";
if (sIP == "" || iPort == 0) return nStat;
// Connect 설정
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sSendData);
// Data Send & Receive
System.Diagnostics.Debug.Print("요청=" + sSendData);
nStat = m_IrtSocket.SendReceiveData(sSendData, ref sRecvData, m_ServerTimeout, bFullSize, nRecvDataLen, "", nRecvDataStartPosion, false );
System.Diagnostics.Debug.Print("응답=" + sRecvData);
if (nStat > 0) nStat = BaseCom.OK;
m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvData);
}
catch (Exception e)
{
if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveDataEx()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
System.Threading.Thread.Sleep(100);
return nStat;
}
/// <summary>
/// IRT Byte로의 Send/Recv - 외부 Van (전문길이 위치지정)
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="bSendData"></param>
/// <param name="bRecvData"></param>
/// <param name="nRecvDataLen"></param>
/// <param name="sAckData"></param>
/// <returns></returns>
public int IRTSendReceiveLen(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen, int nRecvDataStartPosion)
{
int nStat = BaseCom.NG;
try
{
bRecvData[0] = 0;
if (sIP == "" || iPort == 0) return nStat;
// Connect 설정
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
// Data Send & Receive
System.Diagnostics.Debug.Print("요청=" + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
nStat = m_IrtSocket.SendReceiveData(bSendData, ref bRecvData, m_ServerTimeout, nRecvDataLen, null, nRecvDataStartPosion);
System.Diagnostics.Debug.Print("응답=" + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
if (nStat > 0) nStat = BaseCom.OK;
m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
}
catch (Exception e)
{
if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveDataLen()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
return nStat;
}
#endregion
#region IRT Byte로의 Send/Recv - Van (Bypass Byte)
/// <summary>
/// IRT Byte로의 Send/Recv - 외부 Van (Bypass Byte)
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="bSendData"></param>
/// <param name="bRecvData"></param>
/// <param name="nRecvDataLen"></param>
/// <returns></returns>
public int ByPassSendReceiveData(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen)
{
int nStat = BaseCom.NG;
try
{
//bRecvData[0] = 0;
if (sIP == "" || iPort == 0) return nStat;
// Connect 설정
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
// Data Send & Receive
System.Diagnostics.Debug.Print("요청=" + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
nStat = m_IrtSocket.ByPassSendReceiveData(bSendData, nRecvDataLen, ref bRecvData, m_ServerTimeout);
System.Diagnostics.Debug.Print("응답=" + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
if (nStat > 0) nStat = BaseCom.OK;
m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
}
catch (Exception e)
{
if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveDataLen()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
return nStat;
}
#endregion
}
}

View File

@ -0,0 +1,581 @@
//#define LOG_TRACE //@@ 2017.11.01;로그 확인시 사용;girak.kim
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Collections;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
using Newtonsoft.Json;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : SC / HQ IRT Request (SC / 본부 IRT 요청)
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.BackgroundDown
{
public class NetworkJSON
{
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus; // 기본정보 참조
private DeviceStatus m_cDevStatus; // 장비정보 참조
/// <summary>
/// Sending Socket (전송 소켓)
/// </summary>
private static TcpSocket m_IrtSocket = null;
/// <summary>
/// IP
/// </summary>
private string m_ServerIp = "";
/// <summary>
/// Port
/// </summary>
private int m_ServerPort = 0;
/// <summary>
/// Recv Timeout
/// </summary>
private int m_ServerTimeout = 5000;
/// ---------------------------------------------------------------------------------------------
/// <summary>
/// Constructor (생성자)
/// </summary>
/// ---------------------------------------------------------------------------------------------
public NetworkJSON()
{
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cDevStatus = (DeviceStatus)StateObject.DEVICE; // POS 장치정보
}
/// <summary>
/// Get network online status with Ping check. (Ping체크로 network Online상태를 취득한다,)
/// </summary>
/// <param name="pHostAddress">Ip address</param>
/// <returns>True : online false : Offline</returns>
private int CheckNetworkOnline(string pHostAddress)
{
//Ping Check (Ping 체크)
Ping pingSender = new Ping();
PingOptions optins = new PingOptions();
optins.DontFragment = true;
string data = "aaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 120;
PingReply reply = pingSender.Send(pHostAddress, timeout, buffer, optins);
if (reply.Status == IPStatus.Success)
return UserCom.OK;
else
return UserCom.NG;
}
/*
#region
/// <summary>
/// 암호화 위해 전문 편집
/// </summary>
/// <param name="plainData">평문</param>
/// <returns>암호문, 에러시 평문 리턴</returns>
private byte[] EncryptData(byte[] plainData)
{
int nNowPos = 0;
//통신헤더전문편집
string[] aCommHead = new string[Column.COMM_HEADER.LEN.Length];
ItemColumn.ParseMessage(Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE, plainData, ref nNowPos, ref aCommHead);
string sPosNo = aCommHead[Column.COMM_HEADER.SEQ.PosNo].ToString();
//string sRegNo = aCommHead[Column.COMM_HEADER.SEQ.RegNo].ToString();
string sRegNo = "";
string sMsgLen = aCommHead[Column.COMM_HEADER.SEQ.MsgLen].ToString();
string sEncType = aCommHead[Column.COMM_HEADER.SEQ.EncType].ToString();
byte[] byteEncryptData = null;
byte[] editedAllData = null;
if (sEncType == "0") // "0" 평문
{
//Tran헤더 포함 전문 데이터
byte[] tranBytes = new byte[plainData.Length - nNowPos];
Array.Copy(plainData, nNowPos, tranBytes, 0, plainData.Length - nNowPos);
//암호화
byteEncryptData = AES.DynamicKeyEncrypt(sPosNo, sRegNo, tranBytes);
int iMsgLen = nNowPos + byteEncryptData.Length;
aCommHead[Column.COMM_HEADER.SEQ.MsgLen] = iMsgLen.ToString(); //공통헤더와 암호문 더해진 길이
aCommHead[Column.COMM_HEADER.SEQ.EncType] = "1"; //0:평문 1:암호화
string sChangedCommHeader = ItemColumn.MakeMessage(aCommHead, Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE);
byte[] byteCommHeader = Encoding.Default.GetBytes(sChangedCommHeader);
editedAllData = new byte[iMsgLen];
Array.Copy(byteCommHeader, editedAllData, byteCommHeader.Length);
Array.Copy(byteEncryptData, 0, editedAllData, byteCommHeader.Length, byteEncryptData.Length);
return editedAllData;
}
else // "1" 암호문
{
return plainData;
}
}
#endregion
#region
/// <summary>
/// 복호화 위해 전문 편집
/// </summary>
/// <param name="EncryptData"></param>
/// <returns></returns>
private byte[] DecryptData(byte[] EncryptData)
{
int nNowPos = 0;
//통신헤더전문편집
string[] aCommHead = new string[Column.COMM_HEADER.LEN.Length];
ItemColumn.ParseMessage(Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE, EncryptData, ref nNowPos, ref aCommHead);
string sPosNo = aCommHead[Column.COMM_HEADER.SEQ.PosNo].ToString();
//string sRegNo = aCommHead[Column.COMM_HEADER.SEQ.RegNo].ToString();
string sRegNo = "";
string sMsgLen = aCommHead[Column.COMM_HEADER.SEQ.MsgLen].ToString();
string sEncType = aCommHead[Column.COMM_HEADER.SEQ.EncType].ToString();
byte[] bytePlainData = null;
byte[] editedAllData = null;
if (sEncType == "1") //복호화
{
//Tran헤더 포함 전문 데이터
byte[] tranBytes = new byte[EncryptData.Length - nNowPos];
Array.Copy(EncryptData, nNowPos, tranBytes, 0, tranBytes.Length);
//복호화
bytePlainData = AES.DynamicKeyDecrypt(sPosNo, sRegNo, tranBytes);
int iMsgLen = nNowPos + bytePlainData.Length;
aCommHead[Column.COMM_HEADER.SEQ.MsgLen] = iMsgLen.ToString(); //공통헤더와 암호문 더해진 길이
aCommHead[Column.COMM_HEADER.SEQ.EncType] = "0"; //0:평문 1:암호화
string sChangedCommHeader = ItemColumn.MakeMessage(aCommHead, Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE);
byte[] byteCommHeader = Encoding.Default.GetBytes(sChangedCommHeader);
editedAllData = new byte[byteCommHeader.Length + bytePlainData.Length];
Array.Copy(byteCommHeader, editedAllData, byteCommHeader.Length);
Array.Copy(bytePlainData, 0, editedAllData, byteCommHeader.Length, bytePlainData.Length);
return editedAllData;
}
else
{
return EncryptData;
}
}
#endregion
*/
/// <summary>
/// POS 마스터 요청 시 사용하는 Connect 함수
/// </summary>
/// <returns></returns>
private int Connect(int iKeepTime = 5000)
{
int iReturn = BaseCom.NG;
try
{
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
// Delay time to close connection is 5 sec.
iReturn = m_IrtSocket.Connect(iKeepTime);
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkJSON.Connect()", e.ToString());
}
return iReturn;
}
private void Close()
{
m_IrtSocket.Close();
}
/// <summary>
/// IRT전문의 Send/Receive
/// </summary>
/// <param name="pSendData"></param>
/// <param name="pRecvData"></param>
/// <returns></returns>
private int SendReceiveData(byte[] pSendData, ref byte[] pRecvData)
{
int nRecvLen = 0;
int nStat = BaseCom.NG;
byte[] rRecvData = null;
try
{
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
// Data Send & Receive
nRecvLen = m_IrtSocket.SendReceiveData(pSendData, ref rRecvData, m_ServerTimeout);
if (nRecvLen > 0)
{
pRecvData = rRecvData;
nStat = BaseCom.OK;
}
else
{
pRecvData = null;
}
m_IrtSocket.Close();
}
catch (Exception e)
{
if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkJSON.SendReceiveData()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
finally
{
}
System.Threading.Thread.Sleep(100);
return nStat;
}
/// <summary>
/// IRT전문의 Send/Receive
/// </summary>
/// <param name="pSendData"></param>
/// <param name="pRecvData"></param>
/// <returns></returns>
private int SendReceiveData(string pSendData, ref string pRecvData, bool bIsDmbIf = false)
{
int nRecvLen = 0;
int nStat = BaseCom.NG;
string rRecvData = "";
try
{
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
// Data Send & Receive
//System.Diagnostics.Debug.Print("요청:" + pSendData);
nRecvLen = m_IrtSocket.SendReceiveData(pSendData, ref rRecvData, m_ServerTimeout, bIsDmbIf);
//System.Diagnostics.Debug.Print("응답:" + rRecvData);
if (nRecvLen > 0)
{
pRecvData = rRecvData;
nStat = BaseCom.OK;
}
else
{
pRecvData = "";
nStat = nRecvLen;
}
m_IrtSocket.Close();
}
catch (Exception e)
{
if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkJSON.SendReceiveData()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
finally
{
}
System.Threading.Thread.Sleep(100);
return nStat;
}
private int SendReceiveMstData(string pSendData, ref string pRecvData)
{
int nRecvLen = 0;
int nStat = BaseCom.NG;
try
{
nRecvLen = m_IrtSocket.SendReceiveMstData(pSendData, ref pRecvData);
if (nRecvLen > 0)
{
nStat = BaseCom.OK;
}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
e.ToString());
}
return nStat;
}
/// <summary>
/// IRT Byte로의 Send/Recv
/// (공통헤더의 전문길이 0으로 세팅해서 송신. 자동 계산)
/// </summary>
/// <param name=""></param>
public int IRTSendReceive(string sIP, int iPort, int iTimeOut, string sCommData, Hashtable htData, ref Hashtable htRecvData)
{
int nStat = 9;
string sReturn = string.Empty;
string sRecvCommHeader = string.Empty;
string sRecvData = string.Empty;
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
string sJsonSendData = "";
string sJsonReceiveData = "";
try
{
if (m_ServerIp != "" && m_ServerPort != 0)
{
if (htData != null)
{
sJsonSendData = JsonConvert.SerializeObject(htData);
//sJsonSendData 암호화 처리 ...
Byte[] sBytTempBuff = Encoding.UTF8.GetBytes(sJsonSendData);
string sDataLen = string.Format("{0:000000}", sBytTempBuff.Length);
sCommData = sDataLen + sCommData.Substring(TcpSocket.COMM_MSGLEN);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkJSON.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sCommData + sJsonSendData);
}
//Send Receive
nStat = SendReceiveData(sCommData + sJsonSendData, ref sJsonReceiveData);
if (sJsonReceiveData != null && sJsonReceiveData != "")
{
sRecvCommHeader = sJsonReceiveData.Substring(0, TcpSocket.COMM_HEAD_LEN);
sRecvData = sJsonReceiveData.Substring(TcpSocket.COMM_HEAD_LEN);
//sJsonReceiveData 복호화 처리 ...
htRecvData = JsonConvert.DeserializeObject<Hashtable>(sRecvData);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkJSON.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvCommHeader + sRecvData);
}
}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkJSON.IRTSendReceive()", e.ToString());
}
return nStat;
}
/// <summary>
/// 디지털메뉴보드 I/F용 send/receive
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="sCommData"></param>
/// <param name="htData"></param>
/// <param name="sRecvedData"></param>
/// <returns></returns>
public int DmbIRTSendReceive(string sIP, int iPort, int iTimeOut, string sCommData, Hashtable htData, ref string sRecvedData)
{
int nStat = 9;
string sReturn = string.Empty;
string sRecvCommHeader = string.Empty;
string sRecvData = string.Empty;
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
string sJsonSendData = "";
string sJsonReceiveData = "";
try
{
if (m_ServerIp != "" && m_ServerPort != 0)
{
if (htData != null)
{
sJsonSendData = JsonConvert.SerializeObject(htData);
//sJsonSendData 암호화 처리 ...
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkJSON.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sCommData + sJsonSendData);
}
byte[] bytes = Encoding.UTF8.GetBytes(sCommData + sJsonSendData);
string sUTF8String = Encoding.UTF8.GetString(bytes);
//Send Receive
//nStat = SendReceiveData(sCommData + sJsonSendData, ref sJsonReceiveData, true);
nStat = SendReceiveData(sUTF8String, ref sJsonReceiveData, true);
if (sJsonReceiveData != null && sJsonReceiveData != "")
{
sRecvCommHeader = sJsonReceiveData.Substring(0, 60);
sRecvData = sJsonReceiveData.Substring(60);
sRecvedData = sRecvCommHeader;
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkJSON.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvCommHeader + sRecvData);
}
}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkJSON.IRTSendReceive()", e.ToString());
}
return nStat;
}
/// <summary>
/// 마스터 요청을 위한 string으로의 send/receive
/// </summary>
/// <param name="sIp"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="sCommData"></param>
/// <param name="htData"></param>
/// <param name="sbRecvData"></param>
/// <returns></returns>
public int MstIRTSendReceive(string sIp, int iPort, int iTimeOut, string sCommData, Hashtable htData, ref StringBuilder sbRecvData)
{
int nStat = BaseCom.NG;
string sRecvCommHeader = string.Empty;
string sRecvData = string.Empty;
try
{
m_ServerIp = sIp;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
string sJsonSendData = string.Empty;
string sJsonReceiveData = string.Empty;
Hashtable htRecvData = null;
sbRecvData = new StringBuilder();
nStat = Connect(-1);
if(nStat == BaseCom.OK)
{
while (true)
{
sJsonSendData = JsonConvert.SerializeObject(htData);
//sJsonSendData 암호화 처리 ...
Byte[] sBytTempBuff = Encoding.UTF8.GetBytes(sJsonSendData);
string sDataLen = string.Format("{0:000000}", sBytTempBuff.Length);
sCommData = sDataLen + sCommData.Substring(TcpSocket.COMM_MSGLEN);
// 마스터 송수신 로그 제거(20170520)
//UserLog.WriteLogFile(UserCom.LOG_SOCK,
// UserCom.WARNING_LEVEL,
// System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
// System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
// CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sCommData + sJsonSendData);
#if(LOG_TRACE) ////@@ 로그 확인 용
UserLog.WriteLogFile(UserCom.LOG_OP, "Background NetJson SendData : ", System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name + "," + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", sCommData + sJsonSendData);
#endif
// 전문 송신
nStat = SendReceiveMstData(sCommData + sJsonSendData, ref sJsonReceiveData);
#if(LOG_TRACE) ////@@ 로그 확인 용
UserLog.WriteLogFile(UserCom.LOG_OP, "Background NetJson RecvData : ", System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name + "," + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", sJsonReceiveData);
#endif
if (nStat == BaseCom.OK)
{
// 마스터 송수신 로그 제거(20170520)
//UserLog.WriteLogFile(UserCom.LOG_SOCK,
// UserCom.WARNING_LEVEL,
// System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
// System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
// CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sJsonReceiveData);
if (sJsonReceiveData != null && sJsonReceiveData != string.Empty)
{
sRecvCommHeader = sJsonReceiveData.Substring(0, TcpSocket.COMM_HEAD_LEN);
sRecvData = sJsonReceiveData.Substring(TcpSocket.COMM_HEAD_LEN);
//sRecvData 복호화 처리 ...
htRecvData = JsonConvert.DeserializeObject<Hashtable>(sRecvData);
if (int.Parse(htRecvData[Column.IQ_POSMASTER_RSP.DATA.Count].ToString().Trim()) != 0)
{
// StringBuilder에 추가
sbRecvData.Append(htRecvData[Column.IQ_POSMASTER_RSP.DATA.Data].ToString());
}
else
{
break;
}
// 요청전문의 요청 코드 변경
htData[Column.IQ_POSMASTER_REQ.DATA.ProcCd] = "1";
}
}
else
{
return BaseCom.NG1;
}
}
nStat = BaseCom.OK;
}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkJSON.MstIRTSendReceive()", e.ToString());
}
finally
{
Close();
}
return nStat;
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
// 어셈블리와 관련된 정보를 수정하려면
// 이 특성 값을 변경하십시오.
[assembly: AssemblyTitle("MasterDown")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MasterDown")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("47a0e994-6a5c-41dd-b706-354c244b7380")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,436 @@
using System;
using System.Text;
using System.Collections;
using System.Data;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
using Cosmos.BaseFrame;
using System.Threading;
using Newtonsoft.Json;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 영수증 반품 / 서버 시간 조회 처리
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.BackgroundDown
{
class Svr2Tran
{
#region
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
private StateServer StateObject = (StateServer)StateServer.GetInstance();
private NetworkJSON m_cNetJSONService;
private DatabaseMssql m_cSqlDbService = null;
Hashtable m_htRecvData = null; // 통신 수신 데이터 (JSON)
private frmPosIrtMessage m_cfPosIrtMsg = null;
/// <summary>
/// POS Status Value (POS 상태값)
/// </summary>
private PosStatus m_cPosStatus = null;
private bool m_bIRTComplete = false;
/// <summary>
/// 생성자
/// </summary>
public Svr2Tran()
{
SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
m_cPosStatus = (PosStatus)StateObject.POS;
m_cNetJSONService = new NetworkJSON();
m_cSqlDbService = new DatabaseMssql();
m_cfPosIrtMsg = new frmPosIrtMessage();
m_bIRTComplete = false;
}
#endregion
#region
/// <summary>
/// 서버 시간 조회
/// </summary>
/// <returns></returns>
public string ServerSysDateTime()
{
Hashtable htRecvData = new Hashtable();
Hashtable htSendData = new Hashtable();
string sRet = UserCom.RST_ERR;
string sGetDate = "";
try
{
// 서버 조회
htSendData.Add(Column.IQ_SYSDATE_REQ.DATA.INQ_TYPE, ItemConst.IRT_INQ_TYPE.SYSDATETIME);
htSendData.Add(Column.IQ_SYSDATE_REQ.DATA.RES_CD, "");
htSendData.Add(Column.IQ_SYSDATE_REQ.DATA.POS_HOUR, "");
htSendData.Add(Column.IQ_SYSDATE_REQ.DATA.REG_NO, "");
htSendData.Add(Column.IQ_SYSDATE_REQ.DATA.TRADE_NO, "");
htSendData.Add(Column.IQ_SYSDATE_REQ.DATA.SYS_YMDHMS, "");
sRet = ExecutePosIrt(ItemConst.COMM_MSG_TYPE.POSIRT, m_cPosStatus.Base.CommSvrIp, (int)m_cPosStatus.Base.SysInfoPort, 5000, htSendData, ref htRecvData, false);
if (sRet == UserCom.RST_OK)
{
if (htRecvData[Column.IQ_SYSDATE_REQ.DATA.RES_CD].ToString() == "00")
{
sGetDate = htRecvData[Column.IQ_SYSDATE_REQ.DATA.SYS_YMDHMS].ToString();
if (sGetDate.Trim().Length == 14) BsUtil.SetSystemDateTime(sGetDate);
sRet = UserCom.RST_OK;
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#endregion
#region
/// <summary>
/// 프로그램 업데이트 목록 조회
/// </summary>
/// <param name="sKind"></param>
/// <param name="sDownDiv"></param>
/// <param name="aRecvData"></param>
/// <param name="htRecvData"></param>
/// <returns></returns>
public string PGMUpdate(string sKind, string sDownDiv, ref string[] aRecvData, ref Hashtable htRecvData)
{
Hashtable htSendData = new Hashtable();
string sRet = UserCom.RST_ERR;
try
{
// 서버 조회
htSendData.Add(Column.IQ_PGMUPDATE_REQ.DATA.INQ_TYPE, ItemConst.IRT_INQ_TYPE.PGMUPDATE);
htSendData.Add(Column.IQ_PGMUPDATE_REQ.DATA.FILE_GROUP, CmUtil.MidH(sKind, 0, 2));
htSendData.Add(Column.IQ_PGMUPDATE_REQ.DATA.FILE_KIND, CmUtil.MidH(sKind, 2, 2));
htSendData.Add(Column.IQ_PGMUPDATE_REQ.DATA.FILE_APP_TY, "0");
htSendData.Add(Column.IQ_PGMUPDATE_REQ.DATA.FILE_YMDHMS, DateTime.Now.ToString("yyyyMMdd") + DateTime.Now.ToString("HHmmss"));
htSendData.Add(Column.IQ_PGMUPDATE_REQ.DATA.DOWN_DIV, sDownDiv);
sRet = ExecutePosIrt(ItemConst.COMM_MSG_TYPE.POSIRT, m_cPosStatus.Base.CommSvrIp, (int)m_cPosStatus.Base.SysInfoPort, 10000, htSendData, ref htRecvData, false);
if (sRet == UserCom.RST_OK)
{
if (htRecvData[Column.IQ_PGMUPDATE_RSP.DATA.RES_CD].ToString() == "00" || htRecvData[Column.IQ_PGMUPDATE_RSP.DATA.RES_CD].ToString() == "01")
{
// 00:정상, 01:데이터 없음
aRecvData = htRecvData[Column.IQ_PGMUPDATE_RSP.DATA.VALUE].ToString().Split(new string[] { "#~" }, StringSplitOptions.None);
sRet = UserCom.RST_OK;
}
else
{
sRet = UserCom.RST_ERR;
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#endregion
#region
/// <summary>
/// 파일 변경 완료 요청
/// </summary>
/// <param name="sKind"></param>
/// <param name="sAppType"></param>
/// <param name="sFileName"></param>
/// <param name="sFileSeq"></param>
/// <param name="sFileVer"></param>
/// <param name="sDownDiv"></param>
/// <param name="sDeployDate"></param>
/// <param name="sDeployDT"></param>
/// <returns></returns>
public string PGMUpdate_Complete(string sKind, string sAppType, string sFileName, string sFileSeq, string sFileVer, string sDownDiv, string sDeployDate, string sDeployDT)
{
Hashtable htSendData = new Hashtable();
Hashtable htRecvData = new Hashtable();
string sRet = UserCom.RST_ERR;
try
{
if (sFileVer.Trim() == "") return sRet;
// 서버 조회
htSendData.Add(Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.INQ_TYPE, ItemConst.IRT_INQ_TYPE.PGMUPDATECOMPLTE);
htSendData.Add(Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.FILE_GROUP, CmUtil.MidH(sKind, 0, 2));
htSendData.Add(Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.FILE_KIND, CmUtil.MidH(sKind, 2, 2));
htSendData.Add(Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.FILE_APP_TY, sAppType);
htSendData.Add(Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.FILE_NM, sFileName);
htSendData.Add(Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.FILE_VER, sFileVer);
htSendData.Add(Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.FILE_SEQ, sFileSeq);
htSendData.Add(Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.RES_CD, "");
htSendData.Add(Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.DOWN_DIV, sDownDiv);
htSendData.Add(Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.DEPLOY_DT, sDeployDate);
htSendData.Add(Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.REG_DT, sDeployDT);
sRet = ExecutePosIrt(ItemConst.COMM_MSG_TYPE.POSIRT, m_cPosStatus.Base.CommSvrIp, (int)m_cPosStatus.Base.SysInfoPort, 10000, htSendData, ref htRecvData, false);
if (sRet == UserCom.RST_OK)
{
if (htRecvData[Column.IQ_PGMUPDATE_COMPLETE_REQ.DATA.RES_CD].ToString() == "00")
{
sRet = UserCom.RST_OK;
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#endregion
#region
/// <summary>
/// 프로그램 이력 관리
/// </summary>
/// <param name="sKind"></param>
/// <param name="sFileSeq"></param>
/// <param name="sFileVer"></param>
/// <param name="sFileNm"></param>
/// <param name="sApplyDate"></param>
/// <param name="sApplyTime"></param>
/// <param name="sApplyType"></param>
/// <param name="sDeployDate"></param>
/// <param name="sDeployTime"></param>
/// <param name="sFTP_IP"></param>
/// <param name="sFTP_Port"></param>
/// <param name="sFTP_ID"></param>
/// <param name="sFTP_Pwd"></param>
/// <param name="sFTP_FILEPATH"></param>
/// <param name="sDOWN_DIV"></param>
/// <returns></returns>
public string PGMUpdate_History_Isert(string sKind, string sFileSeq, string sFileVer, string sFileNm, string sApplyDate, string sApplyTime, string sApplyType, string sDeployDate, string sDeployTime, string sFTP_IP, string sFTP_Port, string sFTP_ID, string sFTP_Pwd, string sFTP_FILEPATH, string sDOWN_DIV, string sDeployDT, string sUseYn)
{
string sRet = UserCom.RST_ERR;
int iRet = -1;
try
{
string sQuery = "";
sQuery = "";
sQuery += "IF EXISTS(SELECT CMP_CD \n";
sQuery += " FROM POSMST..MST_PGM_VER_NEW \n";
sQuery += " WHERE \n";
sQuery += " CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n";
sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' \n";
sQuery += " AND KIND = '" + sKind.Trim() + "' \n";
sQuery += " AND FILE_SEQ = '" + sFileSeq.Trim() + "' \n";
sQuery += " AND FILE_VER = '" + sFileVer.Trim() + "') \n";
sQuery += " BEGIN \n";
sQuery += " UPDATE POSMST..MST_PGM_VER_NEW \n";
sQuery += " SET \n";
sQuery += " FILE_NM = '" + sFileNm.Trim() + "' \n";
sQuery += " , APPLY_DATE = '" + sApplyDate.Trim() + "' \n";
sQuery += " , APPLY_TIME = '" + sApplyTime.Trim() + "' \n";
sQuery += " , APP_TYPE = '" + sApplyType + "' \n";
sQuery += " , DEPLOY_DATE = '" + sDeployDate.Trim() + "' \n";
sQuery += " , DEPLOY_TIME = '" + sDeployTime.Trim() + "' \n";
sQuery += " , FTP_IP = '" + sFTP_IP.Trim() + "' \n";
sQuery += " , FTP_PORT = '" + sFTP_Port.Trim() + "' \n";
sQuery += " , FTP_ID = '" + sFTP_ID.Trim() + "' \n";
sQuery += " , FTP_PWD = '" + sFTP_Pwd.Trim() + "' \n";
sQuery += " , FTP_FILEPATH = '" + sFTP_FILEPATH.Trim() + "' \n";
sQuery += " , DOWN_DIV = '" + sDOWN_DIV.Trim() + "' \n";
sQuery += " , UPD_DT = CONVERT(VARCHAR(8), GETDATE(), 112) + REPLACE(CONVERT(VARCHAR(8), GETDATE(), 108), ':', '') \n";
sQuery += " , DEPLOY_DT = '" + sDeployDT.Trim() + "' \n";
sQuery += " , USE_YN = '" + sUseYn.Trim() + "' \n";
sQuery += " WHERE \n"; ;
sQuery += " CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n";
sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' \n";
sQuery += " AND KIND = '" + sKind.Trim() + "' \n";
sQuery += " AND FILE_SEQ = '" + sFileSeq.Trim() + "' \n";
sQuery += " AND FILE_VER = '" + sFileVer.Trim() + "' \n";
sQuery += " END \n";
sQuery += "ELSE \n";
sQuery += " BEGIN \n";
sQuery += " INSERT INTO POSMST..MST_PGM_VER_NEW \n";
sQuery += " (CMP_CD, STOR_CD, POS_NO, KIND, FILE_SEQ, FILE_VER, FILE_NM, APPLY_DATE, APPLY_TIME, APP_TYPE, DEPLOY_DATE, DEPLOY_TIME, FTP_IP, FTP_PORT, FTP_ID, FTP_PWD, FTP_FILEPATH, DOWN_DIV, REG_DT, DEPLOY_DT, USE_YN) \n";
sQuery += " VALUES( \n";
sQuery += " '" + m_cPosStatus.Base.CmpCd + "' \n";
sQuery += " , '" + m_cPosStatus.Base.StoreNo + "' \n";
sQuery += " , '" + m_cPosStatus.Base.PosNo + "' \n";
sQuery += " , '" + sKind.Trim() + "' \n";
sQuery += " , '" + sFileSeq.Trim() + "' \n";
sQuery += " , '" + sFileVer.Trim() + "' \n";
sQuery += " , '" + sFileNm.Trim() + "' \n";
sQuery += " , '" + sApplyDate.Trim() + "' \n";
sQuery += " , '" + sApplyTime.Trim() + "' \n";
sQuery += " , '" + sApplyType + "' \n";
sQuery += " , '" + sDeployDate.Trim() + "' \n";
sQuery += " , '" + sDeployTime.Trim() + "' \n";
sQuery += " , '" + sFTP_IP.Trim() + "' \n";
sQuery += " , '" + sFTP_Port.Trim() + "' \n";
sQuery += " , '" + sFTP_ID.Trim() + "' \n";
sQuery += " , '" + sFTP_Pwd.Trim() + "' \n";
sQuery += " , '" + sFTP_FILEPATH.Trim() + "' \n";
sQuery += " , '" + sDOWN_DIV.Trim() + "' \n";
sQuery += " , CONVERT(VARCHAR(8), GETDATE(), 112) + REPLACE(CONVERT(VARCHAR(8), GETDATE(), 108), ':', '') \n";
sQuery += " , '" + sDeployDT.Trim() + "' \n";
sQuery += " , '" + sUseYn.Trim() + "' \n";
sQuery += " ) \n";
sQuery += " END \n";
sQuery = sQuery.Replace("\t", " ");
m_cSqlDbService.SetDBConnectionString(m_cPosStatus.Base.LocalDbSource, m_cPosStatus.Base.LocalDbCatalog, m_cPosStatus.Base.LocalDbUserID, m_cPosStatus.Base.LocalDbPassword);
iRet = m_cSqlDbService.DBExecuteNonQuery(new string[] { sQuery });
if (iRet == 1) sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#endregion
#region POS IRT /
/// <summary>
/// POS IRT 전문 송/수신(점포서버 송수신: 제이슨 이용)
/// </summary>
public string ExecutePosIrt(string sMsgType, string sSvrIP, int nSvrPort, int nTimeout, Hashtable htSendData, ref Hashtable htRecvData, bool bVisibleMode)
{
string sRet = UserCom.RST_ERR;
try
{
string sCommHead = ItemColumn.MakeCommHeader(0, sMsgType); // 통신해더 생성
if (bVisibleMode == false)
{
// 팝업 화면 미표시
m_bIRTComplete = true;
m_htRecvData = null;
Thread thrSecondDisp = new Thread(() => sRet = OnNetworkIRT(sSvrIP, nSvrPort, nTimeout, sCommHead, htSendData));
thrSecondDisp.Start();
while (m_bIRTComplete == true)
{
Thread.Sleep(100);
}
htRecvData = m_htRecvData;
}
else
{
string sDispName = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0231), "");
m_cfPosIrtMsg.PosMessageStr = sDispName;
m_cfPosIrtMsg.ServerIp = sSvrIP;
m_cfPosIrtMsg.ServerPort = nSvrPort;
m_cfPosIrtMsg.TimeOut = nTimeout;
m_cfPosIrtMsg.CommHead = sCommHead;
m_cfPosIrtMsg.SendData = htSendData;
m_cfPosIrtMsg.ShowDialog();
if (m_cfPosIrtMsg.RecvRet != UserCom.OK)
{
sRet = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0158);
// 통신 실패 로그
UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
string.Format("SOCKET ERROR,{0},{1}, RET={2}", sSvrIP, nSvrPort, m_cfPosIrtMsg.RecvRet));
return sRet;
}
htRecvData = m_cfPosIrtMsg.RecvData;
sRet = UserCom.RST_OK;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#endregion
#region POS IRT -
private string OnNetworkIRT(string sServerIp, int nServerPort, int nTimeOut, string sCommHead, Hashtable htSendData)
{
string sRet = UserCom.RST_ERR;
int nRecvRet = -1;
try
{
m_bIRTComplete = true;
nRecvRet = m_cNetJSONService.IRTSendReceive(sServerIp, nServerPort, nTimeOut, sCommHead, htSendData, ref m_htRecvData);
if (nRecvRet == BaseCom.OK) sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"Process Exception !!! " + ex.Message);
}
finally
{
m_bIRTComplete = false;
}
return sRet;
}
#endregion
#region
/// <summary>
/// 설정 파일 읽기
/// </summary>
/// <param name="cCfgInfo"></param>
/// <param name="sGroup"></param>
/// <param name="sValueName"></param>
/// <returns></returns>
private string GetConfigInfo(CmMessage cCfgInfo, string sGroup, string sValueName)
{
return GetConfigInfo(cCfgInfo, sGroup, sValueName, "");
}
private string GetConfigInfo(CmMessage cCfgInfo, string sGroup, string sValueName, string sDefault)
{
try
{
string sValue = cCfgInfo.GetMessage(sGroup).GetMessageValue(sValueName);
if (sValue == null)
return sDefault;
else
return sValue;
}
catch { }
return sDefault;
}
#endregion
}
}

View File

@ -0,0 +1,99 @@
namespace Cosmos.BackgroundDown
{
partial class frmPosIrtMessage
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.tmrStart = new System.Windows.Forms.Timer(this.components);
this.textBox1 = new System.Windows.Forms.TextBox();
this.lblMessage = new System.Windows.Forms.Label();
this.picSearchMessage = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.picSearchMessage)).BeginInit();
this.SuspendLayout();
//
// tmrStart
//
this.tmrStart.Interval = 50;
this.tmrStart.Tick += new System.EventHandler(this.tmrStart_Tick);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(697, 274);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(73, 21);
this.textBox1.TabIndex = 1;
//
// lblMessage
//
this.lblMessage.BackColor = System.Drawing.Color.White;
this.lblMessage.Font = new System.Drawing.Font("나눔스퀘어 Bold", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.lblMessage.Location = new System.Drawing.Point(12, 16);
this.lblMessage.Name = "lblMessage";
this.lblMessage.Size = new System.Drawing.Size(764, 179);
this.lblMessage.TabIndex = 5;
this.lblMessage.Text = "조회 중 입니다. 잠시만 기다려 주세요.";
this.lblMessage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// picSearchMessage
//
this.picSearchMessage.BackColor = System.Drawing.Color.White;
this.picSearchMessage.Location = new System.Drawing.Point(0, 0);
this.picSearchMessage.Name = "picSearchMessage";
this.picSearchMessage.Size = new System.Drawing.Size(788, 212);
this.picSearchMessage.TabIndex = 4;
this.picSearchMessage.TabStop = false;
//
// frmPosIrtMessage
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.BackColor = System.Drawing.Color.Black;
this.ClientSize = new System.Drawing.Size(788, 212);
this.Controls.Add(this.lblMessage);
this.Controls.Add(this.picSearchMessage);
this.Controls.Add(this.textBox1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "frmPosIrtMessage";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Text = "조회중";
this.Load += new System.EventHandler(this.frmPosIrtMessage_Load);
((System.ComponentModel.ISupportInitialize)(this.picSearchMessage)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Timer tmrStart;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Label lblMessage;
private System.Windows.Forms.PictureBox picSearchMessage;
}
}

View File

@ -0,0 +1,224 @@
using System;
using System.Windows.Forms;
using System.Threading;
using System.Collections;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 점포서버 IRT 통신 처리(제이슨 방식)
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.BackgroundDown
{
public partial class frmPosIrtMessage : Form
{
private SManager sManager = new SManager(); //이 객체를 통해 업무 Service 호출
private INetworkJSON m_cNetService = null;
private bool m_bSecondDisp = false; //초 표시여부
private int m_nSecondCount = 0; //초(경과)
string m_sMessageStr;
/// <summary>
/// 화면표시 메시지
/// </summary>
public string PosMessageStr
{
get { return this.m_sMessageStr; }
set
{
this.m_sMessageStr = value;
try
{
lblMessage.Text = m_sMessageStr;
}
catch { }
}
}
string m_sServerIp;
/// <summary>
/// 서버IP
/// </summary>
public string ServerIp
{
get { return this.m_sServerIp; }
set { this.m_sServerIp = value; }
}
int m_nServerPort;
/// <summary>
/// 서버PORT
/// </summary>
public int ServerPort
{
get { return this.m_nServerPort; }
set { this.m_nServerPort = value; }
}
int m_nTimeOut;
/// <summary>
/// 서버 Timeout
/// </summary>
public int TimeOut
{
get { return this.m_nTimeOut; }
set { this.m_nTimeOut = value; }
}
string m_sCommHead;
/// <summary>
/// 송신데이터(공통해더)
/// </summary>
public string CommHead
{
get { return this.m_sCommHead; }
set { this.m_sCommHead = value; }
}
Hashtable m_htSendData;
/// <summary>
/// 송신데이터
/// </summary>
public Hashtable SendData
{
get { return this.m_htSendData; }
set { this.m_htSendData = value; }
}
Hashtable m_htRecvData;
/// <summary>
/// 수신데이터
/// </summary>
public Hashtable RecvData
{
get { return this.m_htRecvData; }
set { this.m_htRecvData = value; }
}
int m_nRecvRet;
/// <summary>
/// 수신리턴값
/// </summary>
public int RecvRet
{
get { return this.m_nRecvRet; }
set { this.m_nRecvRet = value; }
}
public frmPosIrtMessage()
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
//this.UpdateStyles();
m_cNetService = (INetworkJSON)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK.DLL, ServiceLists.AGENT_NETWORK.NETWORK_JSON);
}
private void frmPosIrtMessage_Load(object sender, EventArgs e)
{
try
{
CmMessage m_PosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + "PosConfig.INI");
string sFont = m_PosConfig.GetMessage("GLOBAL").GetMessageValue("Font");
FormManager.SetFormAllControlFont(this, sFont);
long nScreenSizeUser = CmUtil.LongParse(m_PosConfig.GetMessage("GLOBAL").GetMessageValue("ScreenSizeUser"));
FormManager.MovePopUpForm(this, false, nScreenSizeUser);
picSearchMessage.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.SCH_MESSAGE_BOX);
if (m_sMessageStr != "") lblMessage.Text = m_sMessageStr;
this.m_htRecvData = null;
this.m_nRecvRet = 0;
this.TopMost = true;
tmrStart.Enabled = true;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"Process Exception !!! " + ex.Message);
}
}
private void tmrStart_Tick(object sender, EventArgs e)
{
try
{
tmrStart.Enabled = false;
m_bSecondDisp = true;
m_nSecondCount = 0;
Thread thrSecondDisp = new Thread(new ThreadStart(OnNetworkIRT));
thrSecondDisp.Start();
OnSecondDisplay();
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"Process Exception !!! " + ex.Message);
}
finally
{
this.Close();
}
}
private void OnSecondDisplay()
{
try
{
while(m_bSecondDisp == true)
{
m_nSecondCount++;
if(m_nSecondCount % 10 == 0)
{
lblMessage.Text = m_sMessageStr + " (" + (int)(m_nSecondCount / 10) + ")";
lblMessage.Update();
}
Thread.Sleep(100);
}
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"Process Exception !!! " + ex.Message);
}
}
private void OnNetworkIRT()
{
try
{
m_bSecondDisp = true;
if (m_cNetService == null) m_cNetService = (INetworkJSON)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK.DLL, ServiceLists.AGENT_NETWORK.NETWORK_IRT);
m_nRecvRet = m_cNetService.IRTSendReceive(m_sServerIp, m_nServerPort, m_nTimeOut, m_sCommHead, m_htSendData, ref m_htRecvData);
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"Process Exception !!! " + ex.Message);
}
finally
{
m_bSecondDisp = false;
}
}
}
}

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="tmrStart.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 전자저울->라벨프린터 관련 클래스 Activator
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
public class Activator : InitServiceAbstract
{
public Activator()
{
}
public override object InitServiceInstance(string sClassNm)
{
object retObj = null;
//클래스 찾아오기 위함
switch (sClassNm)
{
case ServiceLists.AGENT_MEASURING.MEASURING_MAIN:
{
Cosmos.Measuring.MeasuringMain agentClass = new Cosmos.Measuring.MeasuringMain();
retObj = agentClass;
break;
}
}
return retObj;
}
}
}

View File

@ -0,0 +1,355 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.ComponentModel;
using Cosmos.CommonManager;
using Cosmos.UserFrame;
namespace Cosmos.Measuring
{
public class LabelPrinter
{
#region
private static SerialPort m_cSerialPort = null;
#endregion
#region
public LabelPrinter()
{
}
#endregion
#region OPEN / CLOSE
public bool OpenLabelPrinter(string sSerialPort, long lBaudrate)
{
bool bRet = false;
try
{
#region log
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [OPEN]");
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
#endregion
if (m_cSerialPort != null)
{
//grayber@20180307 시리얼 포트 flush 추가 start - Open 함수 Input Output 버퍼 삭제 (주석처리)
// 추가
if (m_cSerialPort.IsOpen != true) // 시리얼포트 오픈 실패
{
m_cSerialPort.Open(); // 시리얼포트 오픈
}
//m_cSerialPort.DiscardOutBuffer();
//m_cSerialPort.DiscardInBuffer();
//UserLog.WriteLogFile(UserCom.LOG_OP,
// System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
// System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
// "▶▶ [Open InOut Buffer Clear]");
bRet = true;
//grayber@20180307 시리얼 포트 flush 추가 end
return bRet;
}
if(m_cSerialPort == null)
{
m_cSerialPort = new SerialPort();
if(m_cSerialPort == null)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"SERIAL PORT ERROR");
return bRet;
}
m_cSerialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
m_cSerialPort.PinChanged += new SerialPinChangedEventHandler(serialPort_PinChanged);
m_cSerialPort.ErrorReceived += new SerialErrorReceivedEventHandler(serialPort_ErrorReceived);
m_cSerialPort.NewLine = "\r\n";
m_cSerialPort.Encoding = System.Text.Encoding.GetEncoding("ks_c_5601-1987");
m_cSerialPort.WriteBufferSize = 1024 * 1024;
m_cSerialPort.PortName = sSerialPort;
m_cSerialPort.BaudRate = (int)lBaudrate;
m_cSerialPort.DataBits = 8;
m_cSerialPort.StopBits = StopBits.One;
m_cSerialPort.Parity = Parity.None;
m_cSerialPort.Handshake = Handshake.None;
m_cSerialPort.ReadTimeout = 500;
m_cSerialPort.WriteTimeout = 2000;
m_cSerialPort.Open();
if(m_cSerialPort.IsOpen == false)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"SERIAL PORT OPEN ERROR");
return bRet;
}
bRet = true;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
#region log
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [OPEN]" + bRet);
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
#endregion
return bRet;
}
public bool CloseLabelPrinter()
{
bool bRet = false;
try
{
if (m_cSerialPort == null)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Close fail(m_cSerialPort == null)");
return bRet;
}
//grayber@20180307 시리얼 포트 flush 추가 start - Close 함수 Input Output 버퍼 삭제
// 추가
m_cSerialPort.DiscardOutBuffer();
m_cSerialPort.DiscardInBuffer();
//grayber@20180307 시리얼 포트 flush 추가 end
m_cSerialPort.Close();
bRet = true;
//grayber@20180307 시리얼 포트 flush 추가 start - try 문 밖으로 이동 (기존)
//m_cSerialPort = null;
//grayber@20180307 시리얼 포트 flush 추가 end
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
#region log
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [CLOSE] Close InOut Buffer Clear :" + bRet);
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
#endregion
//grayber@20180307 시리얼 포트 flush 추가 start - try 문 밖으로 이동 (변경)
m_cSerialPort = null;
//grayber@20180307 시리얼 포트 flush 추가 end
return bRet;
}
#endregion OPEN / CLOSE
#region SerialPort
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort serialPort = (SerialPort)sender;
byte[] bytRecvBuf = new byte[serialPort.BytesToRead];
try
{
//grayber@20180307 시리얼 포트 flush 추가 start - DataReceived 시리얼 포트 null check
// 기존
//serialPort.Read(bytRecvBuf, 0, bytRecvBuf.Length);
// 변경
if (serialPort != null && serialPort.IsOpen == true) // 시리얼포트 객체 및 오픈 확인
{
serialPort.Read(bytRecvBuf, 0, bytRecvBuf.Length);
#region log
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [RECV] " + Encoding.UTF8.GetString(bytRecvBuf));
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
#endregion
}
//grayber@20180307 시리얼 포트 flush 추가 end
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
private void serialPort_PinChanged(object sender, SerialPinChangedEventArgs e)
{
}
private void serialPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
{
}
#endregion SerialPort
#region
/// <summary>
/// 중량 출력
/// </summary>
/// <param name="sContent">상품명 : 중량g</param>
/// <param name="iWeight">중량</param>
/// <param name="sDateTime">YYYY-MM-DD HH:MM:SS</param>
/// <param name="sStoreNm">점포명</param>
public void PrintWeightInfo(string sContent, string sDateTime, string sStoreNm)
{
string[] sCommands = null;
try
{
sCommands = new string[] { "CLL\r\n" // 메모리 클리어
, "NEW\r\n" // 새로운 명령어 시작
, "CLIP ON\r\n"
, "FONT \"HYGothic-Medium\",12\r\n"
, "NASC 949\r\n" // intermec 한글폰트 설정
, "PRPOS 0,150\r\n"
, "PRTXT \"" + sContent + "\"\r\n"
, "FONT \"HYGothic-Medium\",9\r\n"
, "PRPOS 0,110\r\n"
, "PRTXT \"" + sDateTime + "\"\r\n"
, "PRPOS 0,70\r\n"
, "PRTXT \"" + sStoreNm + "\"\r\n"
, "PRPOS 0,30\r\n"
, "PRTXT \"배달은 해피오더 / 1670-3131\"\r\n" //#10856_[BR] 저울 중량 라벨프린터 양식 변경_hs
, "PF\r\n" };
if (sCommands != null)
WriteCommand(sCommands);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
public void PrintWeightInfo(string sContent, string sFlavour1, string sFlavour2, string sOrdDateTime, string sPckDateTime)
{
string[] sCommands = null;
try
{
// EX)
// 패밀리 / 980g (5516)
// 플레이버1/플레이버2/플레이버3
// 플레이버4/플레이버5/플레이버6
//
// 주문 YYYY-MM-DD HH시MM분
// 포장 YYYY-MM-DD HH시MM분
sCommands = new string[] { "CLL\r\n" // 메모리 클리어
, "NEW\r\n" // 새로운 명령어 시작
, "CLIP ON\r\n"
, "FONT \"HYGothic-Medium\",12\r\n"
, "NASC 949\r\n"
, "PRPOS 0,190\r\n"
, "PRTXT \"" + sContent + "\"\r\n"
, "FONT \"HYGothic-Medium\",9\r\n"
, "PRPOS 0,150\r\n"
, "PRTXT \"" + sFlavour1 + "\"\r\n"
, "PRPOS 0,110\r\n"
, "PRTXT \"" + sFlavour2 + "\"\r\n"
, "PRPOS 0,50\r\n"
, "PRTXT \"" + sOrdDateTime + "\"\r\n"
, "PRPOS 0,10\r\n"
, "PRTXT \"" + sPckDateTime + "\"\r\n"
, "PF\r\n" };
if (sCommands != null)
WriteCommand(sCommands);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
#region
/// <summary>
/// 시리얼포트에 명령어를 전송
/// </summary>
/// <param name="sCommands"></param>
private void WriteCommand(string[] sCommands)
{
try
{
foreach(string cmd in sCommands)
{
m_cSerialPort.Write(cmd);
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
}
}

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" 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>{C1D7E706-7F5B-4DF3-85DD-E3F2A097144B}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Cosmos.Measuring</RootNamespace>
<AssemblyName>Agent.Measuring</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>Svn</SccProjectName>
<SccLocalPath>Svn</SccLocalPath>
<SccAuxPath>Svn</SccAuxPath>
<SccProvider>SubversionScc</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\BIN\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</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="Cosmos.BaseFrame, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.BaseFrame.dll</HintPath>
</Reference>
<Reference Include="Cosmos.UserFrame, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.UserFrame.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Activator.cs" />
<Compile Include="LabelPrinter.cs" />
<Compile Include="MeasuringMain.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Scale.cs" />
<Compile Include="ScalePoleDisplay.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Library\CommonManager\CommonManager.csproj">
<Project>{670a81be-cee3-4c29-846d-a37652ca270d}</Project>
<Name>CommonManager</Name>
</ProjectReference>
<ProjectReference Include="..\..\Library\Common\Common.csproj">
<Project>{a5b7accd-79eb-4261-bd36-01ab484ad8e3}</Project>
<Name>Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>copy .\IC\Agent.Measuring.dll .\Agent.Measuring.dll</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>copy .\Agent.Measuring.dll .\IC\Agent.Measuring.dll</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1,696 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO.Ports;
using System.ComponentModel;
using Cosmos.Common;
using Cosmos.CommonManager;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
namespace Cosmos.Measuring
{
public class MeasuringMain : IMeasuring
{
#region
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// POS Status Value (POS 상태값)
/// </summary>
private PosStatus m_cPosStatus = null;
/// <summary>
/// POS 주변장치
/// </summary>
private DeviceStatus m_cDevStatus = null;
/// <summary>
/// 중량 출력 모드
/// </summary>
private PosConst.MEASURING_AGENT_PRINT_MODE PrintMode;
/// <summary>
/// 출력용 핸드폰번호
/// </summary>
private string m_sCPNum = "";
public string CPNum { get { return m_sCPNum; } set { m_sCPNum = value; } }
/// <summary>
/// 출력용 플레이버
/// </summary>
private string m_sFlavour1 = "";
public string Flavour1 { get { return m_sFlavour1; } set { m_sFlavour1 = value; } }
private string m_sFlavour2 = "";
public string Flavour2 { get { return m_sFlavour2; } set { m_sFlavour2 = value; } }
/// <summary>
/// 출력용 주문시간
/// </summary>
private string m_sOrdDT = "";
public string OrdDT { get { return m_sOrdDT; } set { m_sOrdDT = value; } }
private Scale m_cScaleDevice = null;
private LabelPrinter m_cLabelPrtDevice = null;
private ScalePoleDisplay m_cScalePoleDisplay = null;
private string m_sOldOrdDate = "";
private string m_sOldOrdTime = "";
/// <summary>
/// MSSQL DB 관련 객체
/// </summary>
private static SqlDB sqlDb = null;
/// <summary>
/// Measuring Thread 작동 여부
/// </summary>
private bool m_MeasuringRunning = true;
/// <summary>
/// Measuring Thread
/// </summary>
private Thread m_tMeasuring = null;
/// <summary>
/// 대기시간
/// </summary>
private int WAIT_TIME = 60000 * 30;
/// <summary>
/// 저울 델리게이트
/// </summary>
/// <param name="bPrintYn"></param>
/// <param name="iWeight"></param>
/// <param name="sUnit"></param>
/// <param name="sItemNm"></param>
public delegate void DelegateScaleDevice(bool bPrintYn, int iWeight, string sUnit, string sItemNm);
public delegate void DelegateScaleDeviceRaw(string sScaleData);
public static DelegateScaleDevice m_delegateScaleDev = null;
public static DelegateScaleDeviceRaw m_delegateScaleDevRaw = null;
private bool m_bOncePrint = false;
#endregion
#region
public MeasuringMain()
{
m_cPosStatus = (PosStatus)StateObject.POS;
m_cDevStatus = (DeviceStatus)StateObject.DEVICE;
m_cScaleDevice = new Scale();
m_cLabelPrtDevice = new LabelPrinter();
m_cScalePoleDisplay = new ScalePoleDisplay();
}
public void Initialize()
{
// Default 출력 모드는 일반중량출력
PrintMode = PosConst.MEASURING_AGENT_PRINT_MODE.NORMAL;
CPNum = "";
Flavour1 = "";
Flavour2 = "";
OrdDT = "";
}
#endregion
#region Measuring /
public void StartMeasuring()
{
try
{
Initialize();
// 저울 델리게이트 생성
m_delegateScaleDev = new DelegateScaleDevice(OnScaleDeviceEvent);
// 저울 RAW Data 델리게이트 생성
m_delegateScaleDevRaw = new DelegateScaleDeviceRaw(OnScaleDataEvent);
if (m_tMeasuring == null)
{
m_tMeasuring = new Thread(new ThreadStart(ThreadMeasuringRun));
m_MeasuringRunning = true;
m_tMeasuring.Start();
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
public void StopMeasuring()
{
try
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Measuring Service Stop!!!");
m_MeasuringRunning = false;
int count = 0;
while(count < 10)
{
if (m_tMeasuring != null && m_tMeasuring.IsAlive) m_MeasuringRunning = false;
else break;
count++;
Thread.Sleep(300);
}
if(count >= 10)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Force Measuring Service Stop!!!");
m_tMeasuring.Abort();
}
m_tMeasuring = null;
// 저울 델리게이트 Release
m_delegateScaleDev = null;
// 전자저울 SerialPort Close
m_cScaleDevice.CloseScale();
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion Measuring /
#region Measuring Main
private void ThreadMeasuringRun()
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Measuring Service Run!!");
while(m_MeasuringRunning)
{
try
{
// 전자저울 SerialPort Open
bool bReturn = m_cScaleDevice.OpenScale(m_cPosStatus.Base.OlePosScaleSerialPortNumber, m_cPosStatus.Base.OlePosScaleSerialBaudRate);
// 2017.05.17
Thread.Sleep(500);
if (bReturn == true)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Scale port open succeed");
}
else
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Scale port open failed");
}
int nNowSleepTerm = 0;
while(nNowSleepTerm < WAIT_TIME)
{
if (m_MeasuringRunning == false) break;
Thread.Sleep(100);
nNowSleepTerm += 100;
}
m_cScaleDevice.CloseScale();
// 2017.05.17
Thread.Sleep(500);
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Measuring Service Exception : " + ex.Message);
break;
}
}
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Measuring Service Exit!!");
}
#endregion
#region
public void SetPrintMode(PosConst.MEASURING_AGENT_PRINT_MODE sMode)
{
try
{
PrintMode = sMode;
if(PrintMode == PosConst.MEASURING_AGENT_PRINT_MODE.NORMAL)
{
Initialize();
}
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
#region ()
public void SetHappyOrderData(string[] sData)
{
try
{
if (sData.Length == 1)
{
CPNum = sData[0];
Flavour1 = "";
Flavour2 = "";
}
else if (sData.Length == 2)
{
CPNum = sData[0];
Flavour1 = sData[1];
Flavour2 = "";
}
else if(sData.Length > 2)
{
CPNum = sData[0];
Flavour1 = sData[1];
Flavour2 = sData[2];
OrdDT = sData[3];
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion ()
#region Scale Device Event
public void OnScaleDeviceEvent(bool bPrintYn, int iWeight, string sUnit, string sItemNm)
{
try
{
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [OPEN]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
if (m_bOncePrint == false)
{
m_bOncePrint = true;
string sCurDT = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string sScaleDate = sCurDT.Substring(0, 10).Replace("-", "");
string sScaleTime = sCurDT.Substring(11, 8).Replace(":", "");
if (m_sOldOrdTime == "" || (m_sOldOrdTime.Equals(sScaleTime) == false))
{
m_sOldOrdDate = sScaleDate;
m_sOldOrdTime = sScaleTime;
// 정상중량일 경우에만 라벨프린터 출력함
if (bPrintYn == true)
{
if (PrintMode == PosConst.MEASURING_AGENT_PRINT_MODE.NORMAL)
ProcWeightInfo(sItemNm, iWeight, sUnit, sCurDT);
else
ProcWeightInfoOnHappyOrder(sItemNm, iWeight, sUnit, sCurDT);
}
// 저울 데이터 저장
// 중량 미달일 경우에도 저울 데이터는 저장
InsertScaleLog(sScaleDate, sScaleTime, iWeight, sItemNm, bPrintYn ? "1" : "0");
}
}
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
finally
{
m_bOncePrint = false;
}
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [CLOSE]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
}
public void OnScaleDataEvent(string sScaleData)
{
try
{
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [OPEN]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
// ScalePoleDisplay 사용일 경우에만 출력
if(m_cDevStatus.ScalePoleDisplay.UseYn == true)
{
ProcScalePoleDisplay(sScaleData);
}
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [CLOSE]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion Device Event
#region DB
public void InsertScaleLog(string sDate, string sTime, int iWeight, string sItemNm, string sNormalYn)
{
string sQuery = "";
string sInsQuery = "";
sqlDb = null;
try
{
sqlDb = new SqlDB(m_cPosStatus.Base.LocalDbSource, m_cPosStatus.Base.LocalDbCatalog, m_cPosStatus.Base.LocalDbUserID, m_cPosStatus.Base.LocalDbPassword);
sQuery = "INSERT INTO POSLOG..ETC_SCALE_LOG ";
sQuery += " ( CMP_CD, BRAND_CD, SALE_DT, STOR_CD, POS_NO ";
sQuery += " , SCALE_DT, SCALE_TM, WEIGHT, ITEM_NM, NORMAL_YN ";
sQuery += " , SEND_YN, REG_DATE, UPD_DATE ) ";
sQuery += "VALUES ";
sQuery += " ( '{0}', '{1}', '{2}', '{3}', '{4}' ";
sQuery += " , '{5}', '{6}', {7}, N'{8}', '{9}' ";
sQuery += " , '{10}', '{11}', '{12}' ) ";
sInsQuery = string.Format( sQuery
, m_cPosStatus.Base.CmpCd, m_cPosStatus.Base.BrandCd, m_cPosStatus.Base.SaleDate, m_cPosStatus.Base.StoreNo, m_cPosStatus.Base.PosNo
, sDate, sTime, iWeight, sItemNm, sNormalYn
, "0", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss"));
int iRet = sqlDb.DBExecuteNonQuery(sInsQuery, System.Data.CommandType.Text, (System.Data.SqlClient.SqlParameter[])null);
if(iRet != UserCom.OK)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Insert Failed!! " + "[" + sInsQuery + "]");
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
finally
{
if (sqlDb != null)
{
sqlDb.DBClose();
}
}
}
#endregion
#region
public void ProcWeightInfo(string sItemNm, int iWeight, string sUnit, string sCurTime)
{
bool bRet = false;
try
{
//if (m_bOncePrint == false)
//{
// 라벨프린터 Open
bRet = m_cLabelPrtDevice.OpenLabelPrinter(m_cPosStatus.Base.OlePosLabelPrinterSerialPortNumber, m_cPosStatus.Base.OlePosLabelPrinterSerialBaudRate);
if(bRet == false)
{
return;
}
//m_bOncePrint = true;
//grayber@20180228 중량 라벨 출력 변경 start
//기존
//string sContent = sItemNm + " : " + iWeight.ToString() + sUnit;
//변경
string sContent = sItemNm + " : " + string.Format( "{0:#,###}",iWeight) + sUnit;
//grayber@20180228 중량 라벨 출력 변경 start
string sDateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ LabelPrt: [" + sContent + "]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
// 중량정보 출력
//grayber@20180228 중량 라벨 출력 변경 start
// 기존
//m_cLabelPrtDevice.PrintWeightInfo(sContent, sDateTime, CmUtil.GetDataRowStr(PosMstManager.GetMstStore(), PosMst.MST_STORE.DATA.STORNM));
// 변경
m_cLabelPrtDevice.PrintWeightInfo(sContent, sDateTime, CmUtil.GetDataRowStr(PosMstManager.GetMstStore(), PosMst.MST_STORE.DATA.STORNM) + " 점");
//grayber@20180228 중량 라벨 출력 변경 end
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [CLOSE]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
// 라벨프린터 Close
bRet = m_cLabelPrtDevice.CloseLabelPrinter();
//m_bOncePrint = false;
//}
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
public void ProcWeightInfoOnHappyOrder(string sItemNm, int iWeight, string sUnit, string sCurTime)
{
bool bRet = false;
try
{
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [OPEN]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
// 라벨프린터 Open
bRet = m_cLabelPrtDevice.OpenLabelPrinter(m_cPosStatus.Base.OlePosLabelPrinterSerialPortNumber, m_cPosStatus.Base.OlePosLabelPrinterSerialBaudRate);
if (bRet == false)
{
return;
}
m_bOncePrint = true;
string sContent = sItemNm + " / " + iWeight.ToString() + sUnit + " (" + CPNum + ")";
string sOrdDateTime = "주문 " + OrdDT;
string sPckDateTime = "포장 " + sCurTime;
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ LabelPrt: [" + sContent + "]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
// 중량정보 출력
m_cLabelPrtDevice.PrintWeightInfo(sContent, Flavour1, Flavour2, sOrdDateTime, sPckDateTime);
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [CLOSE]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
// 라벨프린터 Close
bRet = m_cLabelPrtDevice.CloseLabelPrinter();
m_bOncePrint = false;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
#region ScalePoleDisplay
/// <summary>
/// ScalePoleDisplay 출력
/// </summary>
/// <param name="sScaleData">저울에서 입력된 값 Ex) ST,+00000.00__g</param>
public void ProcScalePoleDisplay(string sScaleData)
{
try
{
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [OPEN]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
m_cScalePoleDisplay.OpenScalePoleDisplay(m_cPosStatus.Base.OleScalePoleDisplayPortNumber, m_cPosStatus.Base.OleScalePoleDisplayBaudRate);
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ " + "PoleDisplay: " + "[" + sScaleData + "]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
m_cScalePoleDisplay.WriteToScalePoleDisplay(sScaleData);
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ CLOSE");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
m_cScalePoleDisplay.CloseScalePoleDisplay();
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion ScalePoleDisplay
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
// 어셈블리와 관련된 정보를 수정하려면
// 이 특성 값을 변경하십시오.
[assembly: AssemblyTitle("Measuring")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Measuring")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("652f0e60-5407-4be2-b7c4-62bff0636cf2")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

425
Agent/Measuring/Scale.cs Normal file
View File

@ -0,0 +1,425 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.ComponentModel;
using Cosmos.CommonManager;
using Cosmos.UserFrame;
namespace Cosmos.Measuring
{
public class Scale
{
#region
/// <summary>
/// 전자저울과의 RS232 통신을 위한 시리얼포트 객체
/// </summary>
private SerialPort m_cSerialPort = null;
/// <summary>
/// 전자저울 이벤트 수신 후 처리할 작업용 스레드 작업(라벨프린터 출력)
/// </summary>
private BackgroundWorker bw = null;
#endregion
#region
public Scale()
{
bw = new BackgroundWorker();
}
#endregion
#region OPEN / CLOSE
public bool OpenScale(string sSerialPort, long lBaudrate)
{
bool bRet = false;
try
{
if (m_cSerialPort != null)
{
//grayber@20180307 시리얼 포트 flush 추가 start - Open 함수 Input Output 버퍼 삭제 (주석처리)
//m_cSerialPort.DiscardInBuffer();
//m_cSerialPort.DiscardOutBuffer();
//grayber@20180307 시리얼 포트 flush 추가 end
m_cSerialPort.Close();
System.Threading.Thread.Sleep(50);
m_cSerialPort = null;
}
if (m_cSerialPort == null)
{
m_cSerialPort = new SerialPort();
if (m_cSerialPort == null)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"SERIAL PORT ERROR");
return bRet;
}
m_cSerialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
m_cSerialPort.PinChanged += new SerialPinChangedEventHandler(serialPort_PinChanged);
m_cSerialPort.ErrorReceived += new SerialErrorReceivedEventHandler(serialPort_ErrorReceived);
m_cSerialPort.NewLine = "\r\n";
m_cSerialPort.Encoding = Encoding.ASCII;
m_cSerialPort.WriteBufferSize = 512;
m_cSerialPort.PortName = sSerialPort;
m_cSerialPort.BaudRate = (int)lBaudrate;
m_cSerialPort.DataBits = 7;
m_cSerialPort.StopBits = StopBits.One;
m_cSerialPort.Parity = Parity.Even;
m_cSerialPort.Handshake = Handshake.None;
m_cSerialPort.ReadTimeout = 5000;
m_cSerialPort.WriteTimeout = 5000;
m_cSerialPort.Open();
if (m_cSerialPort.IsOpen == false)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"SERIAL PORT OPEN ERROR");
return bRet;
}
// BackgroundWorker 이벤트 함수 등록
bw.DoWork += DeviceEventHandler;
bRet = true;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
public bool CloseScale()
{
bool bRet = false;
try
{
if (m_cSerialPort == null)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Close fail(m_cSerialPort_Scale == null)");
return bRet;
}
//grayber@20180307 시리얼 포트 flush 추가 start - Close 함수 Input Output 버퍼 삭제
m_cSerialPort.DiscardInBuffer();
m_cSerialPort.DiscardOutBuffer();
//grayber@20180307 시리얼 포트 flush 추가 end
m_cSerialPort.Close();
bRet = true;
//grayber@20180307 시리얼 포트 flush 추가 start - try 문 밖으로 이동 (기존)
//m_cSerialPort = null;
//grayber@20180307 시리얼 포트 flush 추가 end
// BackgroundWorker 이벤트 함수 제거
bw.DoWork -= DeviceEventHandler;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
//grayber@20180307 시리얼 포트 flush 추가 start - try 문 밖으로 이동 (변경)
m_cSerialPort = null;
//grayber@20180307 시리얼 포트 flush 추가 end
return bRet;
}
#endregion OPEN / CLOSE
#region SerialPort Alive
public bool IsPortOpend()
{
bool bRet = false;
try
{
if(m_cSerialPort == null)
{
return false;
}
if(m_cSerialPort.IsOpen == false)
{
return false;
}
bRet = true;
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
bRet = false;
}
return bRet;
}
#endregion
#region SerialPort
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort serialPort = (SerialPort)sender;
string sHeader = "";
try
{
if ((SerialPort)sender == m_cSerialPort)
{
if (!bw.IsBusy)
{
// 데이터의 Terminator는 개행문자(\r\n)이므로 개행문자 까지 값을 읽는 ReadLine으로 수신
string sScaleData = serialPort.ReadLine();
sHeader = sScaleData.Substring(0, 2);
// ST:계량모드, QT:계수모드, US:데이터가 안정되지 않다, OL:데이터가 오버되어 있다.(계량범위를 넘었다.)
if (sHeader.Equals("ST"))
{
bw.RunWorkerAsync(sScaleData);
}
else if (sHeader.Equals("QT"))
{
}
else
{
}
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ " + "Recv: " + "[" + sScaleData + "]");
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
}
else
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"저울 이벤트 처리 전 이벤트 발생 불가");
}
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
private void serialPort_PinChanged(object sender, SerialPinChangedEventArgs e)
{
}
private void serialPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
{
}
#endregion SerialPort
#region Event Handler
private void DeviceEventHandler(object sender, DoWorkEventArgs e)
{
string sScaleData = "";
string sHeader = "";
string sWeight = "";
string sUnit = "";
string sItemNm = "";
bool bPrintYn = false;
try
{
// Ex) ST,+00000.00__g
sScaleData = (string)e.Argument;
sHeader = sScaleData.Substring(0, 2);
sWeight = sScaleData.Substring(3, 9);
sUnit = sScaleData.Substring(12, 3).Trim();
bPrintYn = GetItemNameByWeight(Convert.ToInt32(sWeight), ref sItemNm);
// 저울 입력 이벤트 전달
if (MeasuringMain.m_delegateScaleDev != null)
MeasuringMain.m_delegateScaleDev(bPrintYn, Convert.ToInt32(sWeight), sUnit, sItemNm);
else
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"MeasuringMain.m_delegateScaleDev is null.");
}
// 저울 입력 데이터 전달
if(MeasuringMain.m_delegateScaleDevRaw != null)
{
MeasuringMain.m_delegateScaleDevRaw(sScaleData);
}
else
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"MeasuringMain.m_delegateScaleDevRaw is null.");
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion Event Handler
#region
/// <summary>
/// 측정된 중량으로 상품명 가져오기
/// </summary>
/// <param name="iWeight"></param>
/// <param name="sItemNm"></param>
/// <returns></returns>
private bool GetItemNameByWeight(int iWeight, ref string sItemNm)
{
bool bIsOk = false;
sItemNm = string.Empty;
try
{
if (iWeight >= 236 && iWeight <= 335)
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0545);
bIsOk = false;
}
//else if (iWeight >= 336 && iWeight <= 434)
//{
// sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0545);
// bIsOk = true;
//}
//else if (iWeight >= 435 && iWeight <= 534)
//{
// sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0546);
// bIsOk = true;
//}
//#10856] (신규) [BR] 저울 중량 라벨프린터 양식 변경
//스타워즈 파인트 제외
else if (iWeight >= 336 && iWeight <= 534)
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0545);
bIsOk = true;
}
else if (iWeight >= 545 && iWeight <= 642)
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0547);
bIsOk = false;
}
else if (iWeight >= 643 && iWeight <= 742)
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0547);
bIsOk = true;
}
else if (iWeight >= 889 && iWeight <= 988)
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0548);
bIsOk = false;
}
else if (iWeight >= 989 && iWeight <= 1088)
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0548);
bIsOk = true;
}
//grayber@20180213 [BR] 핸드팩 중량 출력 대상 제품 추가 요청 start
// 추가
else if (iWeight >= 1104 && iWeight <= 1199)
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1095);
bIsOk = true;
}
// 기존
//else if (iWeight >= 1137 && iWeight <= 1236)
// 변경
else if (iWeight >= 1200 && iWeight <= 1236)
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0549);
bIsOk = false;
}
//grayber@20180213 [BR] 핸드팩 중량 출력 대상 제품 추가 요청 end
else if (iWeight >= 1237 && iWeight <= 1536)
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0549);
bIsOk = true;
}
else if (iWeight >= 1700 && iWeight <= 1999)
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0550);
bIsOk = false;
}
else if (iWeight >= 2000 && iWeight <= 2300)
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0550);
bIsOk = true;
}
else
{
sItemNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0551);
bIsOk = false;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bIsOk;
}
#endregion
}
}

View File

@ -0,0 +1,155 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using Cosmos.UserFrame;
namespace Cosmos.Measuring
{
class ScalePoleDisplay
{
#region
private static SerialPort m_cSerialPort = null;
#endregion
#region
#endregion
#region OPEN / CLOSE
public bool OpenScalePoleDisplay(string sSerialPort, long lBaudrate)
{
bool bRet = false;
try
{
if(m_cSerialPort != null)
{
//grayber@20180307 시리얼 포트 flush 추가 start - Open 함수 Input Output 버퍼 삭제(주석처리)
m_cSerialPort.DiscardInBuffer();
m_cSerialPort.DiscardOutBuffer();
//grayber@20180307 시리얼 포트 flush 추가 end
m_cSerialPort.Close();
System.Threading.Thread.Sleep(50);
m_cSerialPort = null;
}
m_cSerialPort = new SerialPort();
m_cSerialPort.NewLine = "\r\n";
m_cSerialPort.Encoding = Encoding.Default;
m_cSerialPort.WriteBufferSize = 512;
m_cSerialPort.PortName = sSerialPort;
m_cSerialPort.BaudRate = (int)lBaudrate;
m_cSerialPort.ReadTimeout = 500;
m_cSerialPort.WriteTimeout = 2000;
m_cSerialPort.DataBits = 8;
m_cSerialPort.StopBits = StopBits.One;
m_cSerialPort.Parity = Parity.None;
m_cSerialPort.Handshake = Handshake.None;
m_cSerialPort.Open();
if(m_cSerialPort.IsOpen == false)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"SERIAL PORT OPEN ERROR");
return bRet;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 start
#if true // 로그추가
//grayber@20171222 디버그 로그 추가 - 저울 디버그
UserLog.WriteLogFile(UserCom.LOG_OP,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"▶▶ [OPEN]" + bRet);
#endif
//grayber@20171222 저울,라벨프린터, PoleDisplay 디버그 로그 추가 end
return bRet;
}
public bool CloseScalePoleDisplay()
{
bool bRet = false;
try
{
if(m_cSerialPort == null)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Close fail(m_cSerialPort_Scale == null)");
return bRet;
}
//grayber@20180307 시리얼 포트 flush 추가 start - Close 함수 Input Output 버퍼 삭제
m_cSerialPort.DiscardInBuffer();
m_cSerialPort.DiscardOutBuffer();
//grayber@20180307 시리얼 포트 flush 추가 end
m_cSerialPort.Close();
bRet = true;
//grayber@20180307 시리얼 포트 flush 추가 start - try 문 밖으로 이동 (기존)
//m_cSerialPort = null;
//grayber@20180307 시리얼 포트 flush 추가 end
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
//grayber@20180307 시리얼 포트 flush 추가 start - try 문 밖으로 이동 (변경)
m_cSerialPort = null;
//grayber@20180307 시리얼 포트 flush 추가 end
return bRet;
}
#endregion OPEN / CLOSE
#region
public void WriteToScalePoleDisplay(string sScaleData)
{
try
{
m_cSerialPort.WriteLine(sScaleData);
System.Threading.Thread.Sleep(500);
m_cSerialPort.WriteLine(sScaleData);
System.Threading.Thread.Sleep(500);
m_cSerialPort.WriteLine(sScaleData);
System.Threading.Thread.Sleep(500);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
}
}

View File

@ -0,0 +1,81 @@
using System;
using System.Collections.Generic;
using System.Text;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : Network 관련 클래스 Activator
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
/// <summary>
/// Load BaseFrame and save information (BaseFrame의 로드하고 정보를 보관한다)
/// </summary>
public class Activator : InitServiceAbstract
{
/// <summary>
/// Define main entrance point of project load. (프로젝트 로드의 주진입점을 정의합니다.)
/// </summary>
public Activator()
{
}
/// <summary>
///
/// </summary>
/// <param name="sClassNm"></param>
/// <returns></returns>
public override object InitServiceInstance(string sClassNm)
{
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Starting !!!");
object retObj = null;
//클래스 찾아오기 위함
switch (sClassNm)
{
case ServiceLists.AGENT_NETWORK.NETWORK_FTP:
{
Cosmos.Network.NetworkFtp agentClass = new Cosmos.Network.NetworkFtp();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_NETWORK.NETWORK_IRT:
{
Cosmos.Network.NetworkIRT agentClass = new Cosmos.Network.NetworkIRT();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_NETWORK.NETWORK_JSON:
{
Cosmos.Network.NetworkJSON agentClass = new Cosmos.Network.NetworkJSON();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_NETWORK.NETWORK_VAN_SPCN:
{
Cosmos.Network.NetworkVanSPCN agentClass = new Cosmos.Network.NetworkVanSPCN();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_NETWORK.NETWORK_HTTP:
{
Cosmos.Network.NetworkHttp agentClass = new Cosmos.Network.NetworkHttp();
retObj = agentClass;
break;
}
}
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Completed !!!");
return retObj;
}
}
}

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" 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>{233E83BF-BFFE-495D-9E3C-3583F9CD2773}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Cosmos.Network</RootNamespace>
<AssemblyName>Agent.Network</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>Svn</SccProjectName>
<SccLocalPath>Svn</SccLocalPath>
<SccAuxPath>Svn</SccAuxPath>
<SccProvider>SubversionScc</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\BIN\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\..\BIN\Agent.Network.XML</DocumentationFile>
<PlatformTarget>x86</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="Cosmos.BaseFrame, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.BaseFrame.dll</HintPath>
</Reference>
<Reference Include="Cosmos.ServiceProvider, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.ServiceProvider.dll</HintPath>
</Reference>
<Reference Include="Cosmos.UserFrame, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.UserFrame.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Activator.cs" />
<Compile Include="NetworkFtp.cs" />
<Compile Include="NetworkHttp.cs" />
<Compile Include="NetworkIRT.cs" />
<Compile Include="NetworkJSON.cs" />
<Compile Include="NetworkVanSPCN.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Library\Common\Common.csproj">
<Project>{a5b7accd-79eb-4261-bd36-01ab484ad8e3}</Project>
<Name>Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>copy .\IC\Agent.Network.dll .\Agent.Network.dll</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>copy .\Agent.Network.dll .\IC\Agent.Network.dll</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

181
Agent/Network/NetworkFtp.cs Normal file
View File

@ -0,0 +1,181 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Collections;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.Data;
using System.Net.Sockets;
using System.Threading;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : FTP 다운로드
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Network
{
public class NetworkFtp : INetworkFTP
{
private readonly string LOCAL_DOWN_PATH = BaseCom.NxRootPath + @"DOWN\"; //Download File Location (다운로드 파일위치)
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// POS Status Value (POS 상태값)
/// </summary>
private PosStatus m_cPosStatus = null;
private FTP m_ClsFtp;
public NetworkFtp()
{
m_cPosStatus = (PosStatus)StateObject.POS;
}
/// <summary>
/// FTP 서버에 Connect
/// </summary>
/// <param name="sServer"></param>
/// <param name="sUserId"></param>
/// <param name="sPassword"></param>
/// <param name="iTimeOutSeconds"></param>
/// <param name="iPort"></param>
/// <returns>0 : 정상접속, -1:시간초과, -2:로그인 실패, -3:서버접속 실패, -4:지원하지 않는 시스템</returns>
public int Connect(string sServer, string sUserId, string sPassword, int iTimeOutSeconds, int iPort)
{
int nReturn = -9;
try
{
m_ClsFtp = new FTP((iPort == 0) ? sServer : sServer + ":" + iPort, sUserId, sPassword);
if (m_ClsFtp != null) nReturn = 0;
else nReturn = -1;
////m_ClsFtp = new ClsFtp(sServer, sUserId, sPassword, iTimeOutSeconds, iPort);
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// //MessageBox.Show("FTP Server Connect Error !!! [" + nReturn.ToString() + "]");
//// return nReturn;
////}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Connect()", e.Message);
return nReturn;
}
return nReturn;
}
/// <summary>
///
/// </summary>
/// <param name="sSvrDirectory"></param>
/// <param name="sLocalDirectory"></param>
/// <param name="sFileNm"></param>
/// <returns>0:정상종료, -1:Not Connected, -2:Binary Mode set failed, -3: failed local file Create, -4:socket 에러, -5:remote file 없슴, -6:정상수신실패, -7: 파일사이즈 틀림</returns>
public int Download(string sSvrDirectory, string sLocalDirectory, string sFileNm, string sFtpMode = PosConst.FTP_CONN_TYPE.PASSIVE)
{
string sMsg = "";
return Download(sSvrDirectory, sLocalDirectory, sFileNm, ref sMsg, sFtpMode);
}
public int Download(string sSvrDirectory, string sLocalDirectory, string sFileNm, ref string sMsg, string sFtpMode = PosConst.FTP_CONN_TYPE.PASSIVE)
{
int nReturn = -9;
bool bRet = false;
try
{
if (CmUtil.RightH(sLocalDirectory, 1) != "\\") sLocalDirectory += "\\";
if (Directory.Exists(sLocalDirectory) == false) Directory.CreateDirectory(sLocalDirectory);
bRet = m_ClsFtp.Download(sSvrDirectory + sFileNm, sLocalDirectory + sFileNm, ref sMsg, sFtpMode);
if (bRet) nReturn = 0;
else nReturn = -1;
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// return nReturn;
////}
////string sDir = m_ClsFtp.ChangeDir(sSvrDirectory);
////nReturn = m_ClsFtp.Download(sLocalDirectory, sFileNm, true);
////if (nReturn < 0 && File.Exists(BaseCom.NxDownPath + sFileNm + ".ftp") == true)
////{
//// File.Delete(BaseCom.NxDownPath + sFileNm + ".ftp");
////}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Download()", e.Message);
sMsg = sFileNm + " " + e.Message;
return nReturn;
}
return nReturn;
}
/// <summary>
/// FTP서버와의 연결을 종료
/// </summary>
public void Disconnect()
{
//m_ClsFtp.Close();
//m_ClsFtp.cleanup();
}
/// <summary>
/// 정해진 디렉토리에 정해진 파일을 업로드
/// </summary>
/// <param name="sSvrDirectory"></param>
/// <param name="sLocalDirectory"></param>
/// <param name="sFileNm"></param>
/// <returns>0:정상완료, -1:Not Connected, -2: data socket create error, -3: file write 실패, -4:socket error, -5: 정상처리 실패(서버)</returns>
public int Upload(string sSvrDirectory, string sLocalDirectory, string sFileNm)
{
int nReturn = -9;
bool bRet = false;
try
{
bRet = m_ClsFtp.Upload(sLocalDirectory + sFileNm, sSvrDirectory + sFileNm);
if (bRet) nReturn = 0;
else nReturn = -1;
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// return nReturn;
////}
////string sDir = m_ClsFtp.ChangeDir(sSvrDirectory);
////nReturn = m_ClsFtp.Upload(sLocalDirectory, sFileNm, true);
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Upload()", e.Message);
return nReturn;
}
return nReturn;
}
}
}

View File

@ -0,0 +1,564 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Net;
using System.IO;
using Newtonsoft.Json;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
namespace Cosmos.Network
{
public class NetworkHttp : INetworkHttp
{
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus; // 기본정보 참조
private DeviceStatus m_cDevStatus; // 장비정보 참조
public NetworkHttp()
{
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cDevStatus = (DeviceStatus)StateObject.DEVICE; // POS 장치정보
}
/// <summary>
/// 해피오더 POST방식 Request
/// </summary>
/// <param name="sUrl"></param>
/// <param name="sWorkType"></param>
/// <param name="htReqData"></param>
/// <param name="sRespJsonData"></param>
/// <returns></returns>
public int HttpJsonPOST_SendReceive(string sUrl, string sWorkType, Hashtable htReqData, ref Hashtable htRspData, ref string sRespJsonData)
{
int iRet = BaseCom.NG;
string sRespString = string.Empty;
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl + sWorkType);
string sSendJsonData = JsonConvert.SerializeObject(htReqData);
UserLog.WriteLogFile(UserCom.LOG_SOCK,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
sSendJsonData);
byte[] reqByte = Encoding.UTF8.GetBytes(sSendJsonData);
req.Method = "POST";
req.ContentType = "application/json";
req.ContentLength = reqByte.Length;
// create our stream to send
Stream webDataStream = req.GetRequestStream();
webDataStream.Write(reqByte, 0, reqByte.Length);
// get thre response from our stream
WebResponse resp = req.GetResponse();
webDataStream = resp.GetResponseStream();
// convert the result into a string
StreamReader respStreamReader = new StreamReader(webDataStream);
string respFromServer = respStreamReader.ReadToEnd();
respStreamReader.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
respFromServer);
Hashtable temp = JsonConvert.DeserializeObject<Hashtable>(respFromServer);
foreach (string key in temp.Keys)
{
string jsonString = temp[key].ToString();
if (key.Equals("status"))
{
Hashtable htHeader = JsonConvert.DeserializeObject<Hashtable>(jsonString);
if (htHeader["status"].ToString().Equals("200"))
{
iRet = BaseCom.OK;
}
htRspData = htHeader;
}
else
{
sRespJsonData = jsonString;
}
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.ToString());
}
return iRet;
}
/// <summary>
/// 해피오더 GET방식 Request
/// </summary>
/// <param name="sUrl">서버URL</param>
/// <param name="sWorkType">작업구분</param>
/// <param name="sReqData">요청Data</param>
/// <param name="sRespJsonData">JSON String 형태의 응답 데이터</param>
/// <returns></returns>
public int HttpJsonGET_SendReceive(string sUrl, string sWorkType, string sReqData, ref string sRespJsonData)
{
int iRet = BaseCom.NG;
string sRespString = string.Empty;
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl + sWorkType + "?" + sReqData);
req.Method = "GET";
UserLog.WriteLogFile(UserCom.LOG_SOCK,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
sUrl + sWorkType + "?" + sReqData);
using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
{
Stream stream = resp.GetResponseStream();
//StreamReader streamReader = new StreamReader(stream, Encoding.GetEncoding("UTF-8"));
StreamReader streamReader = new StreamReader(stream, Encoding.GetEncoding("ks_c_5601-1987"));
sRespString = streamReader.ReadToEnd();
streamReader.Close();
}
UserLog.WriteLogFile(UserCom.LOG_SOCK,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
sRespString);
Hashtable temp = JsonConvert.DeserializeObject<Hashtable>(sRespString);
foreach (string key in temp.Keys)
{
string jsonString = temp[key].ToString();
if (key.Equals("status"))
{
Hashtable htHeader = JsonConvert.DeserializeObject<Hashtable>(jsonString);
if (htHeader["status"].ToString().Equals("200"))
{
iRet = BaseCom.OK;
}
}
else
{
sRespJsonData = jsonString;
}
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.ToString());
}
return iRet;
}
/// <summary>
/// GET방식 Request
/// </summary>
/// <param name="sUrl">서버URL</param>
/// <param name="sWorkType">작업구분</param>
/// <param name="sReqData">요청Data</param>
/// <param name="sRespJsonData">JSON String 형태의 응답 데이터</param>
/// <returns></returns>
public int HttpGET_SendReceive(string sUrl, string sWorkType, string sReqData, string sEncodingFlag, ref string sRespData)
{
int iRet = BaseCom.NG;
string sRespString = string.Empty;
StreamReader streamReader = null;
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl + sWorkType + "?" + sReqData);
req.Method = "GET";
using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
{
Stream stream = resp.GetResponseStream();
if (sEncodingFlag == PosConst.ENCODING_FLAG.UTF)
{
streamReader = new StreamReader(stream, Encoding.GetEncoding("UTF-8"));
}
else
{
streamReader = new StreamReader(stream, Encoding.GetEncoding("ks_c_5601-1987"));
}
sRespString = streamReader.ReadToEnd();
streamReader.Close();
}
iRet = BaseCom.OK;
sRespData = sRespString;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.ToString());
}
return iRet;
}
/// <summary>
/// 해피버즈 http 통신
/// </summary>
/// <param name="sUrl"></param>
/// <param name="sWorkType"></param>
/// <param name="htReqData"></param>
/// <param name="htRspData"></param>
/// <param name="sRespJsonData"></param>
/// <returns></returns>
public int HttpJsonPOST_SendReceiveForBuzz(string sUrl, string sWorkType, Hashtable htReqData, ref Hashtable htRspData)
{
int iRet = BaseCom.NG;
string sRespString = string.Empty;
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl + sWorkType);
string sSendJsonData = JsonConvert.SerializeObject(htReqData);
byte[] reqByte = Encoding.UTF8.GetBytes(sSendJsonData);
req.Method = "POST";
req.ContentType = "application/json";
req.ContentLength = reqByte.Length;
// create our stream to send
Stream webDataStream = req.GetRequestStream();
webDataStream.Write(reqByte, 0, reqByte.Length);
// get thre response from our stream
WebResponse resp = req.GetResponse();
webDataStream = resp.GetResponseStream();
// convert the result into a string
StreamReader respStreamReader = new StreamReader(webDataStream);
string respFromServer = respStreamReader.ReadToEnd();
respStreamReader.Close();
htRspData = JsonConvert.DeserializeObject<Hashtable>(respFromServer);
if (htRspData["result"].Equals(true))
{
iRet = BaseCom.OK;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.ToString());
}
return iRet;
}
/// <summary>
/// 관공서 방문 알림 통신
/// </summary>
/// <param name="sUrl"></param>
/// <param name="sWorkType"></param>
/// <param name="htReqData"></param>
/// <param name="htRspData"></param>
/// <param name="sRespJsonData"></param>
/// <returns></returns>
public int HttpPOST_SendReceiveForGoverVisit(string sUrl, string sWorkType, Hashtable htReqData, ref Hashtable htRspData)
{
int iRet = BaseCom.NG;
string sRespString = string.Empty;
try
{
// 요청 String -> 요청 Byte 변환
byte[] byteDataParams = UTF8Encoding.UTF8.GetBytes(htReqData.ToString());
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl + sWorkType);
req.Method = "POST"; // 기본값 "GET"
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = byteDataParams.Length;
// 요청 Byte -> 요청 Stream 변환
Stream stDataParams = req.GetRequestStream();
stDataParams.Write(byteDataParams, 0, byteDataParams.Length);
stDataParams.Close();
// 요청, 응답 받기
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
iRet = BaseCom.OK;
}
//HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl + sWorkType);
//string sSendJsonData = JsonConvert.SerializeObject(htReqData);
//byte[] reqByte = Encoding.UTF8.GetBytes(sSendJsonData);
//req.Method = "POST";
//req.ContentType = "application/json";
//req.ContentLength = reqByte.Length;
//// create our stream to send
//Stream webDataStream = req.GetRequestStream();
//webDataStream.Write(reqByte, 0, reqByte.Length);
//// get thre response from our stream
//WebResponse resp = req.GetResponse();
//webDataStream = resp.GetResponseStream();
//// convert the result into a string
//StreamReader respStreamReader = new StreamReader(webDataStream);
//string respFromServer = respStreamReader.ReadToEnd();
//respStreamReader.Close();
//htRspData = JsonConvert.DeserializeObject<Hashtable>(respFromServer);
//if (htRspData["result"].Equals(true))
//{
// iRet = BaseCom.OK;
//}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.ToString());
}
return iRet;
}
// #20170616, 해피앱 스탬프 Start
/// <summary>
/// 해피앱 스탬프 http 통신
/// </summary>
/// <param name="sUrl"></param>
/// <param name="htReqData"></param>
/// <param name="htRspData"></param>
/// <returns></returns>
public int HttpJsonPOST_SendReceiveForStamp(string sUrl, Hashtable htReqData, ref Hashtable htRspData)
{
int iRet = BaseCom.NG;
string sRespString = string.Empty;
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl);
string sSendJsonData = JsonConvert.SerializeObject(htReqData);
UserLog.WriteLogFile(UserCom.LOG_SOCK,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // project name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // class name (class name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // function name (function name (함수명))
sSendJsonData);
byte[] reqByte = Encoding.UTF8.GetBytes(sSendJsonData);
req.Method = "post";
req.ContentType = "application/json";
req.ContentLength = reqByte.Length;
//#20171117 해피앱 스탬프 timeout 설정 start
req.Timeout = 3000;
//#20171117 해피앱 스탬프 timeout 설정 end
// create our stream to send
Stream webDataStream = req.GetRequestStream();
webDataStream.Write(reqByte, 0, reqByte.Length);
// get thre response from our stream
WebResponse resp = req.GetResponse();
webDataStream = resp.GetResponseStream();
// convert the result into a string
StreamReader respStreamReader = new StreamReader(webDataStream);
string respFromServer = respStreamReader.ReadToEnd();
respStreamReader.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // project name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // class name (class name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // function name (function name (함수명))
respFromServer);
htRspData = JsonConvert.DeserializeObject<Hashtable>(respFromServer);
if (htRspData["result"].Equals("00"))
{
iRet = BaseCom.OK;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.ToString());
}
return iRet;
}
// #20170616, 해피앱 스탬프 End
//contentType 에 따른 HTTP Post 전송, girak.kim , 2017.09.11
public static bool CheckValidationResult(object sender, X509Certificate certficate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
#region HTTP Post
//#20170911.001, Http post 통신 추가 start;girak.kim;
/// <summary>
///
/// </summary>
/// <param name="sUrl">경로</param>
/// <param name="sContentType">전송 컨텐츠 타입</param>
/// <param name="sReqString">전송 데이타</param>
/// <param name="sRespData">결과 데이타</param>
/// <returns></returns>
public int HttpPOST_SendReceive(string sUrl, string sContentType, string sReqString, ref string sRespData)
{
int iRet = BaseCom.NG;
string result = "";
int nConnecLimit = 200;
HttpWebRequest request = null;
HttpWebResponse response = null;
Stream reqStream = null;
try
{
ServicePointManager.DefaultConnectionLimit = nConnecLimit;//동시 연결
if (sUrl.StartsWith("https", StringComparison.OrdinalIgnoreCase))//ssl 일 경우 인증서 무시
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
}
Uri uri = new Uri(sUrl);
request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
request.Timeout = 30000;//30sec
request.ContentType = sContentType;// "text/xml";// "text/xml; encoding='UTF-8'";
//request.KeepAlive = false;
byte[] bData = System.Text.Encoding.UTF8.GetBytes(sReqString);
request.ContentLength = bData.Length;
reqStream = request.GetRequestStream();
reqStream.Write(bData, 0, bData.Length);
reqStream.Close();
response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
result = sr.ReadToEnd().Trim();
sr.Close();
sRespData = result;
iRet = BaseCom.OK;
}
catch (System.Threading.ThreadAbortException e)
{
//e.Message
// System.Threading.Thread.ResetAbort();
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
e.ToString());
}
catch (WebException e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
e.ToString());
if (e.Status == WebExceptionStatus.ProtocolError)
{
// (HttpWebResponse)e.Response).StatusCode;
//(HttpWebResponse)e.Response).StatusDescription;
}
//throw new Exception(e.ToString());
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
e.ToString());
//throw new Exception(e.ToString());
}
finally
{
if (response != null) response.Close();
if (request != null) request.Abort();
}
sRespData = result;
return iRet;
}
//#20170911.001, Http post 통신 추가 end;girak.kim;
#endregion
}
}

670
Agent/Network/NetworkIRT.cs Normal file
View File

@ -0,0 +1,670 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Collections;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : SC / HQ IRT Request (SC / 본부 IRT 요청)
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Network
{
public class NetworkIRT : INetworkIRT
{
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus; // 기본정보 참조
private DeviceStatus m_cDevStatus; // 장비정보 참조
/// <summary>
/// Sending Socket (전송 소켓)
/// </summary>
private TcpSocket m_IrtSocket = null;
//private static TcpSocket m_IrtSocket = null;
/// <summary>
/// IP
/// </summary>
private string m_ServerIp = "";
/// <summary>
/// Port
/// </summary>
private int m_ServerPort = 0;
/// <summary>
/// TimeOut
/// </summary>
private int m_ServerTimeout = 10000;
/// ---------------------------------------------------------------------------------------------
/// <summary>
/// Constructor (생성자)
/// </summary>
/// ---------------------------------------------------------------------------------------------
public NetworkIRT()
{
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cDevStatus = (DeviceStatus)StateObject.DEVICE; // POS 장치정보 (PDA)
}
#region OnLine
/// <summary>
/// Get network online status with Ping check. (Ping체크로 network Online상태를 취득한다,)
/// </summary>
/// <param name="pHostAddress">Ip address</param>
/// <returns>True : online false : Offline</returns>
private int CheckNetworkOnline(string pHostAddress)
{
//Ping Check (Ping 체크)
Ping pingSender = new Ping();
PingOptions optins = new PingOptions();
optins.DontFragment = true;
string data = "aaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 120;
PingReply reply = pingSender.Send(pHostAddress, timeout, buffer, optins);
if (reply.Status == IPStatus.Success)
return UserCom.OK;
else
return UserCom.NG;
}
#endregion
#region
/// <summary>
/// 암호화 위해 전문 편집
/// </summary>
/// <param name="plainData">평문</param>
/// <returns>암호문, 에러시 평문 리턴</returns>
private byte[] EncryptData(byte[] plainData)
{
int nNowPos = 0;
//통신헤더전문편집
string[] aCommHead = new string[Column.COMM_HEADER.LEN.Length];
ItemColumn.ParseMessage(Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE, plainData, ref nNowPos, ref aCommHead);
string sPosNo = aCommHead[Column.COMM_HEADER.SEQ.PosNo].ToString();
//string sRegNo = aCommHead[Column.COMM_HEADER.SEQ.RegNo].ToString();
string sRegNo = "";
string sMsgLen = aCommHead[Column.COMM_HEADER.SEQ.MsgLen].ToString();
string sEncType = aCommHead[Column.COMM_HEADER.SEQ.EncType].ToString();
byte[] byteEncryptData = null;
byte[] editedAllData = null;
if (sEncType == "0") // "0" 평문
{
//Tran헤더 포함 전문 데이터
byte[] tranBytes = new byte[plainData.Length - nNowPos];
Array.Copy(plainData, nNowPos, tranBytes, 0, plainData.Length - nNowPos);
//암호화
byteEncryptData = AES.DynamicKeyEncrypt(sPosNo, sRegNo, tranBytes);
int iMsgLen = nNowPos + byteEncryptData.Length;
aCommHead[Column.COMM_HEADER.SEQ.MsgLen] = iMsgLen.ToString(); //공통헤더와 암호문 더해진 길이
aCommHead[Column.COMM_HEADER.SEQ.EncType] = "1"; //0:평문 1:암호화
string sChangedCommHeader = ItemColumn.MakeMessage(aCommHead, Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE);
byte[] byteCommHeader = Encoding.UTF8.GetBytes(sChangedCommHeader);
editedAllData = new byte[iMsgLen];
Array.Copy(byteCommHeader, editedAllData, byteCommHeader.Length);
Array.Copy(byteEncryptData, 0, editedAllData, byteCommHeader.Length, byteEncryptData.Length);
return editedAllData;
}
else // "1" 암호문
{
return plainData;
}
}
#endregion
#region
/// <summary>
/// 복호화 위해 전문 편집
/// </summary>
/// <param name="EncryptData"></param>
/// <returns></returns>
private byte[] DecryptData(byte[] EncryptData)
{
int nNowPos = 0;
//통신헤더전문편집
string[] aCommHead = new string[Column.COMM_HEADER.LEN.Length];
ItemColumn.ParseMessage(Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE, EncryptData, ref nNowPos, ref aCommHead);
string sPosNo = aCommHead[Column.COMM_HEADER.SEQ.PosNo].ToString();
//string sRegNo = aCommHead[Column.COMM_HEADER.SEQ.RegNo].ToString();
string sRegNo = "";
string sMsgLen = aCommHead[Column.COMM_HEADER.SEQ.MsgLen].ToString();
string sEncType = aCommHead[Column.COMM_HEADER.SEQ.EncType].ToString();
byte[] bytePlainData = null;
byte[] editedAllData = null;
if (sEncType == "1") //복호화
{
//Tran헤더 포함 전문 데이터
byte[] tranBytes = new byte[EncryptData.Length - nNowPos];
Array.Copy(EncryptData, nNowPos, tranBytes, 0, tranBytes.Length);
//복호화
bytePlainData = AES.DynamicKeyDecrypt(sPosNo, sRegNo, tranBytes);
int iMsgLen = nNowPos + bytePlainData.Length;
aCommHead[Column.COMM_HEADER.SEQ.MsgLen] = iMsgLen.ToString(); //공통헤더와 암호문 더해진 길이
aCommHead[Column.COMM_HEADER.SEQ.EncType] = "0"; //0:평문 1:암호화
string sChangedCommHeader = ItemColumn.MakeMessage(aCommHead, Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE);
byte[] byteCommHeader = Encoding.Default.GetBytes(sChangedCommHeader);
editedAllData = new byte[byteCommHeader.Length + bytePlainData.Length];
Array.Copy(byteCommHeader, editedAllData, byteCommHeader.Length);
Array.Copy(bytePlainData, 0, editedAllData, byteCommHeader.Length, bytePlainData.Length);
return editedAllData;
}
else
{
return EncryptData;
}
}
#endregion
#region IRT Send/Receive
/// <summary>
/// IRT전문의 Send/Receive
/// </summary>
/// <param name="pSendData"></param>
/// <param name="pRecvData"></param>
/// <returns></returns>
private int SendReceiveData(byte[] pSendData, ref byte[] pRecvData)
{
int nRecvLen = 0;
int nStat = BaseCom.NG;
byte[] rRecvData = null;
try
{
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
// Data Send & Receive
nRecvLen = m_IrtSocket.SendReceiveData(pSendData, ref rRecvData, m_ServerTimeout);
if (nRecvLen > 0)
{
pRecvData = rRecvData;
nStat = BaseCom.OK;
}
else
{
pRecvData = null;
}
//m_IrtSocket.Close();
}
catch (Exception e)
{
//if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveData()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
finally
{
}
System.Threading.Thread.Sleep(100);
return nStat;
}
/// <summary>
/// IRT전문의 Send/Receive
/// </summary>
/// <param name="pSendData"></param>
/// <param name="pRecvData"></param>
/// <returns></returns>
private int SendReceiveData(string pSendData, ref string pRecvData)
{
int nRecvLen = 0;
int nStat = BaseCom.NG;
string rRecvData = "";
try
{
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
// Data Send & Receive
nRecvLen = m_IrtSocket.SendReceiveData(pSendData, ref rRecvData, m_ServerTimeout);
if (nRecvLen > 0)
{
pRecvData = rRecvData;
nStat = BaseCom.OK;
}
else
{
pRecvData = "";
nStat = nRecvLen;
}
//m_IrtSocket.Close();
}
catch (Exception e)
{
//if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveData()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
finally
{
}
System.Threading.Thread.Sleep(100);
return nStat;
}
#endregion
#region IRT /
/// <summary>
/// IRT String로의 Send/Recv
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="sComm"></param>
/// <param name="sRecvData"></param>
/// <returns></returns>
public int IRTSendReceive(string sIP, int iPort, int iTimeOut, string sComm, ref string sRecvData)
{
int nStat = 9;
string sReturn = string.Empty;
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
byte[] bEditedSendData = null;
if (m_ServerIp != "" && m_ServerPort != 0)
{
//암호화
if (sComm.Length != 0)
{
//bEditedSendData = EncryptData(Encoding.Default.GetBytes(sComm));
bEditedSendData = Encoding.Default.GetBytes(sComm);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sComm);
}
else
{
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] SendData is Null");
}
//SendReceive
nStat = SendReceiveData(Encoding.Default.GetString(bEditedSendData, 0, bEditedSendData.Length), ref sReturn);
//복호화
if (sReturn.Length != 0)
{
byte[] byteRecv = DecryptData(Encoding.Default.GetBytes(sReturn));
sRecvData = Encoding.Default.GetString(byteRecv, 0, byteRecv.Length);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvData);
}
else
{
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] RecvData Is Null");
}
}
return nStat;
}
/// <summary>
/// IRT Byte로의 Send/Recv
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="comm"></param>
/// <param name="sRecvData"></param>
/// <returns></returns>
public int IRTSendReceive(string sIP, int iPort, int iTimeOut, byte[] comm, ref byte[] sRecvData)
{
int nStat = 9;
string sReturn = string.Empty;
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
byte[] bEditedSendData = null;
if (m_ServerIp != "" && m_ServerPort != 0)
{
//암호화
if (comm != null)
{
bEditedSendData = EncryptData(comm);
string sTmpLog = Encoding.Default.GetString(comm, 0, comm.Length);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sTmpLog);
}
else
{
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] SendData Is Null");
}
//SendReceive
nStat = SendReceiveData(bEditedSendData, ref sRecvData);
//복호화
if (sRecvData != null)
{
byte[] sDecryptRecvData = DecryptData(sRecvData);
sRecvData = sDecryptRecvData;
string sTmpLog = Encoding.Default.GetString(sDecryptRecvData, 0, sDecryptRecvData.Length);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sTmpLog);
}
else
{
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] RecvData Is Null");
}
}
return nStat;
}
#endregion
#region IRT - VAN
/// <summary>
/// IRT String로의 Send/Recv - 외부 Van
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="sSendData"></param>
/// <param name="sRecvData"></param>
/// <param name="nRecvDataLen"></param>
/// <param name="sAckData"></param>
/// <returns></returns>
public int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, int nRecvDataLen, string sAckData)
{
return IRTSendReceiveEx(sIP, iPort, iTimeOut, sSendData, ref sRecvData, nRecvDataLen, sAckData, false);
}
public int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, int nRecvDataLen, string sAckData, bool bErrorSkip)
{
int nStat = BaseCom.NG;
try
{
sRecvData = "";
if (sIP == "" || iPort == 0) return nStat;
// Connect 설정
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveEx()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sSendData);
// Data Send & Receive
System.Diagnostics.Debug.Print("요청=" + sSendData);
nStat = m_IrtSocket.SendReceiveData(sSendData, ref sRecvData, m_ServerTimeout, nRecvDataLen, sAckData, bErrorSkip);
System.Diagnostics.Debug.Print("응답=" + sRecvData);
if (nStat > 0) nStat = BaseCom.OK;
//m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveSEx()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvData);
}
catch (Exception e)
{
//if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveDataEx()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
System.Threading.Thread.Sleep(100);
return nStat;
}
/// <summary>
/// IRT Byte로의 Send/Recv - 외부 Van
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="bSendData"></param>
/// <param name="bRecvData"></param>
/// <param name="nRecvDataLen"></param>
/// <param name="sAckData"></param>
/// <returns></returns>
public int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen, byte[] sAckData)
{
int nStat = BaseCom.NG;
try
{
bRecvData[0] = 0;
if (sIP == "" || iPort == 0) return nStat;
// Connect 설정
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveEx()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
// Data Send & Receive
System.Diagnostics.Debug.Print("요청=" + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
nStat = m_IrtSocket.SendReceiveData(bSendData, ref bRecvData, m_ServerTimeout, nRecvDataLen, sAckData);
System.Diagnostics.Debug.Print("응답=" + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
if (nStat > 0) nStat = BaseCom.OK;
//m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveEx()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
}
catch (Exception e)
{
//if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveDataEx()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
return nStat;
}
#endregion
#region IRT - VAN ( )
/// <summary>
/// IRT String로의 Send/Recv - 외부 Van (길이 위치지정)
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="sSendData"></param>
/// <param name="sRecvData"></param>
/// <param name="bFullSize"></param>
/// <param name="nRecvDataLen"></param>
/// <param name="nRecvDataStartPosion"></param>
/// <returns></returns>
public int IRTSendReceiveLen(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, bool bFullSize, int nRecvDataLen, int nRecvDataStartPosion)
{
int nStat = BaseCom.NG;
try
{
sRecvData = "";
if (sIP == "" || iPort == 0) return nStat;
// Connect 설정
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sSendData);
// Data Send & Receive
System.Diagnostics.Debug.Print("요청=" + sSendData);
nStat = m_IrtSocket.SendReceiveData(sSendData, ref sRecvData, m_ServerTimeout, bFullSize, nRecvDataLen, "", nRecvDataStartPosion, false );
System.Diagnostics.Debug.Print("응답=" + sRecvData);
if (nStat > 0) nStat = BaseCom.OK;
//m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvData);
}
catch (Exception e)
{
//if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveDataEx()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
System.Threading.Thread.Sleep(100);
return nStat;
}
/// <summary>
/// IRT Byte로의 Send/Recv - 외부 Van (전문길이 위치지정)
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="bSendData"></param>
/// <param name="bRecvData"></param>
/// <param name="nRecvDataLen"></param>
/// <param name="nRecvDataStartPosion"></param>
/// <returns></returns>
public int IRTSendReceiveLen(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen, int nRecvDataStartPosion)
{
int nStat = BaseCom.NG;
try
{
bRecvData[0] = 0;
if (sIP == "" || iPort == 0) return nStat;
// Connect 설정
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
// Data Send & Receive
System.Diagnostics.Debug.Print("요청=" + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
nStat = m_IrtSocket.SendReceiveData(bSendData, ref bRecvData, m_ServerTimeout, nRecvDataLen, null, nRecvDataStartPosion);
System.Diagnostics.Debug.Print("응답=" + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
if (nStat > 0) nStat = BaseCom.OK;
//m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
}
catch (Exception e)
{
//if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveDataLen()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
return nStat;
}
#endregion
#region IRT Byte로의 Send/Recv - Van (Bypass Byte)
/// <summary>
/// IRT Byte로의 Send/Recv - 외부 Van (Bypass Byte)
/// </summary>
/// <param name="sIP"></param>
/// <param name="iPort"></param>
/// <param name="iTimeOut"></param>
/// <param name="bSendData"></param>
/// <param name="bRecvData"></param>
/// <param name="nRecvDataLen"></param>
/// <returns></returns>
public int ByPassSendReceiveData(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen)
{
int nStat = BaseCom.NG;
try
{
//bRecvData[0] = 0;
if (sIP == "" || iPort == 0) return nStat;
// Connect 설정
m_ServerIp = sIP;
m_ServerPort = iPort;
m_ServerTimeout = iTimeOut;
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
// Data Send & Receive
System.Diagnostics.Debug.Print("요청=" + Encoding.Default.GetString(bSendData, 0, bSendData.Length));
nStat = m_IrtSocket.ByPassSendReceiveData(bSendData, nRecvDataLen, ref bRecvData, m_ServerTimeout);
System.Diagnostics.Debug.Print("응답=" + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
if (nStat > 0) nStat = BaseCom.OK;
//m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
"NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length));
}
catch (Exception e)
{
//if (m_IrtSocket != null) m_IrtSocket.Close();
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkIRT.SendReceiveDataLen()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
}
return nStat;
}
#endregion
}
}

1087
Agent/Network/NetworkJSON.cs Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Collections;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
namespace Cosmos.Network
{
class NetworkVanSPCN : INetworkVanSPCN
{
//카드 리더 처리 클래스 통합 2016-06-17 SBSEO
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
// 어셈블리와 관련된 정보를 수정하려면
// 이 특성 값을 변경하십시오.
[assembly: AssemblyTitle("Network")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Network")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("6c2b4bd7-4335-44af-a2d7-f89369063e96")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
namespace Cosmos.Service
{
/// <summary>
/// Load BaseFrame and save information (BaseFrame의 로드하고 정보를 보관한다)
/// </summary>
public class Activator : InitServiceAbstract
{
/// <summary>
/// Define main entrance point of project load. (프로젝트 로드의 주진입점을 정의합니다.)
/// </summary>
public Activator()
{
}
/// <summary>
///
/// </summary>
/// <param name="sClassNm"></param>
/// <returns></returns>
public override object InitServiceInstance(string sClassNm)
{
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Starting !!!");
object retObj = null;
//클래스 찾아오기 위함
switch (sClassNm)
{
case ServiceLists.AGENT_NETWORK_CHECKOVER.NetworkCheckOver:
{
Cosmos.Network.NetworkCheckOver agentClass = new Cosmos.Network.NetworkCheckOver();
retObj = agentClass;
break;
}
}
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Completed !!!");
return retObj;
}
}
}

View File

@ -0,0 +1,553 @@
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
using Cosmos.CommonManager;
namespace Cosmos.Network
{
class CheckOverDetail : ICheckOverUs
{
private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
/// <summary>
/// 생성자
/// </summary>
public CheckOverDetail()
{
m_cPosStatus = (PosStatus)StateObject.POS;
}
/// <summary>
/// 해피오더 - 주문 상태별 건수 조회
/// </summary>
/// <param name="sRespData"></param>
/// <returns></returns>
///grayber@20180306 해피오더 주문가능 상태 추가 start - 함수 인자 추가 SelectHappyOrderCountByOrderStatus HashTable 인자추가
/// 기존
///public string SelectHappyOrderCountByOrderStatus(Hashtable[] htOrderStatus)
/// 변경
public string SelectHappyOrderCountByOrderStatus(Hashtable[] htOrderStatus , ref Hashtable htRspData)
//grayber@20180306 해피오더 주문가능 상태 추가 end
{
// 주문접수-일반
int iOrderRegNormalCnt = 0;
// 주문접수-배달
int iOrderRegDeliveryCnt = 0;
// 주문접수-예약
int iOrderRegReservedCnt = 0;
// 총 주문접수 건수
int iTotOrderRegCnt = 0;
int iProductReadyCnt = 0;
int iPreReservedCnt = 0;
int iPickupWaitCnt = 0;
int iPickupDelayCnt = 0;
int iNoPickupAndDelayCnt = 0;
int iDeliveryRequestCnt = 0;
int iDeliveryRegCnt = 0;
int iDeliveryingCnt = 0;
//#20180328 직접배달 처리 후 배달완료시 매출 생성 안되는 증상 수정 start
int iDeliveryDirectCnt = 0;
//#20180328 직접배달 처리 후 배달완료시 매출 생성 안되는 증상 수정 end
//#20180605 해피오더 개선 start
//즉시주문, 예약주문 알림
//즉시픽업 건수
int iOrdCnt_Direct = 0;
//즉시배달 건수
int iOrdCnt_Reserv = 0;
//#20180605 해피오더 개선 end
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 start
int iDeliveryProductReadyCnt = 0;
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 end
string sRet = UserCom.RST_ERR;
try
{
foreach(Hashtable htData in htOrderStatus)
{
string sOrderType = htData["type"].ToString();
switch(htData["status"].ToString())
{
case ItemConst.HAPPYORDER_STATUS.ORDER_REG: // "4" : 주문접수
// 일반 주문건수 계산
if(sOrderType == ItemConst.ORDER_TYPE.SHOP_DIRECT ||
sOrderType == ItemConst.ORDER_TYPE.SHOP_TIME)
{
iOrderRegNormalCnt += int.Parse(htData["count"].ToString());
}
// 배달 주문건수 계산
else if(sOrderType == ItemConst.ORDER_TYPE.INNER_DELIVERY ||
sOrderType == ItemConst.ORDER_TYPE.OUTTER_DELIVERY)
{
iOrderRegDeliveryCnt += int.Parse(htData["count"].ToString());
}
// 예약 주문건수 계산
else if(sOrderType == ItemConst.ORDER_TYPE.RESERVED_ORDER ||
sOrderType == ItemConst.ORDER_TYPE.PRE_RESERVED)
{
iOrderRegReservedCnt += int.Parse(htData["count"].ToString());
}
//#20180605 해피오더 개선 start
//즉시주문, 예약주문 알림
//즉시픽업 건수 계산
else if(sOrderType == ItemConst.ORDER_TYPE.DIRECT_ORDER)
{
iOrdCnt_Direct += int.Parse(htData["count"].ToString());
}
//즉시배달 건수 계산
else if(sOrderType == ItemConst.ORDER_TYPE.RESERV_ORDER)
{
iOrdCnt_Reserv += int.Parse(htData["count"].ToString());
}
//#20180605 해피오더 개선 end
break;
case ItemConst.HAPPYORDER_STATUS.PRODUCT_READY: // "5" : 상품준비
//#20180905 즉시픽업,즉시배달 제외 start
if ((sOrderType == ItemConst.ORDER_TYPE.DIRECT_ORDER) || (sOrderType == ItemConst.ORDER_TYPE.RESERV_ORDER)) continue;
//#20180905 즉시픽업,즉시배달 제외 end
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 start
//기존
//iProductReadyCnt += int.Parse(htData["count"].ToString());
//변경
if (sOrderType != ItemConst.ORDER_TYPE.OUTTER_DELIVERY && sOrderType != ItemConst.ORDER_TYPE.INNER_DELIVERY)
{
iProductReadyCnt += int.Parse(htData["count"].ToString());
}
else
{
iDeliveryProductReadyCnt += int.Parse(htData["count"].ToString());
}
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 end
break;
case ItemConst.HAPPYORDER_STATUS.PRE_RESERVED: // "6" : 사전예약
//#20180905 즉시픽업,즉시배달 제외 start
if ((sOrderType == ItemConst.ORDER_TYPE.DIRECT_ORDER) || (sOrderType == ItemConst.ORDER_TYPE.RESERV_ORDER)) continue;
//#20180905 즉시픽업,즉시배달 제외 end
iPreReservedCnt += int.Parse(htData["count"].ToString());
break;
case ItemConst.HAPPYORDER_STATUS.PICKUP_WAIT: // "7" : 픽업대기
//#20180905 즉시픽업,즉시배달 제외 start
if ((sOrderType == ItemConst.ORDER_TYPE.DIRECT_ORDER) || (sOrderType == ItemConst.ORDER_TYPE.RESERV_ORDER)) continue;
//#20180905 즉시픽업,즉시배달 제외 end
iPickupWaitCnt += int.Parse(htData["count"].ToString());
break;
case ItemConst.HAPPYORDER_STATUS.PICKUP_DELAY: // "2000" : 픽업지연
//#20180905 즉시픽업,즉시배달 제외 start
if ((sOrderType == ItemConst.ORDER_TYPE.DIRECT_ORDER) || (sOrderType == ItemConst.ORDER_TYPE.RESERV_ORDER)) continue;
//#20180905 즉시픽업,즉시배달 제외 end
iPickupDelayCnt += int.Parse(htData["count"].ToString());
break;
case ItemConst.HAPPYORDER_STATUS.NO_PICKUP_AND_DELAY: // "2018" : 픽업지연미픽업
//#20180905 즉시픽업,즉시배달 제외 start
if ((sOrderType == ItemConst.ORDER_TYPE.DIRECT_ORDER) || (sOrderType == ItemConst.ORDER_TYPE.RESERV_ORDER)) continue;
//#20180905 즉시픽업,즉시배달 제외 end
iNoPickupAndDelayCnt += int.Parse(htData["count"].ToString());
break;
case ItemConst.HAPPYORDER_STATUS.DELIVERY_REQ: // "9004" : 배달요청
//#20180905 즉시픽업,즉시배달 제외 start
if ((sOrderType == ItemConst.ORDER_TYPE.DIRECT_ORDER) || (sOrderType == ItemConst.ORDER_TYPE.RESERV_ORDER)) continue;
//#20180905 즉시픽업,즉시배달 제외 end
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 start
if (sOrderType != ItemConst.ORDER_TYPE.OUTTER_DELIVERY && sOrderType != ItemConst.ORDER_TYPE.INNER_DELIVERY) continue;
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 end
iDeliveryRequestCnt += int.Parse(htData["count"].ToString());
break;
case ItemConst.HAPPYORDER_STATUS.DELIVERY_REG: // "9005" : 배달접수
//#20180905 즉시픽업,즉시배달 제외 start
if ((sOrderType == ItemConst.ORDER_TYPE.DIRECT_ORDER) || (sOrderType == ItemConst.ORDER_TYPE.RESERV_ORDER)) continue;
//#20180905 즉시픽업,즉시배달 제외 end
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 start
if (sOrderType != ItemConst.ORDER_TYPE.OUTTER_DELIVERY && sOrderType != ItemConst.ORDER_TYPE.INNER_DELIVERY) continue;
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 end
iDeliveryRegCnt += int.Parse(htData["count"].ToString());
break;
case ItemConst.HAPPYORDER_STATUS.DELIVERY_ING: // "9007" : 배달중
//#20180905 즉시픽업,즉시배달 제외 start
if ((sOrderType == ItemConst.ORDER_TYPE.DIRECT_ORDER) || (sOrderType == ItemConst.ORDER_TYPE.RESERV_ORDER)) continue;
//#20180905 즉시픽업,즉시배달 제외 end
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 start
if (sOrderType != ItemConst.ORDER_TYPE.OUTTER_DELIVERY && sOrderType != ItemConst.ORDER_TYPE.INNER_DELIVERY) continue;
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 end
iDeliveryingCnt += int.Parse(htData["count"].ToString());
break;
//#20180328 직접배달 처리 후 배달완료시 매출 생성 안되는 증상 수정 start
case ItemConst.HAPPYORDER_STATUS.DELIVERY_DIRECT: // "9003" : 직접배달
//#20180905 즉시픽업,즉시배달 제외 start
if ((sOrderType == ItemConst.ORDER_TYPE.DIRECT_ORDER) || (sOrderType == ItemConst.ORDER_TYPE.RESERV_ORDER)) continue;
//#20180905 즉시픽업,즉시배달 제외 end
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 start
if (sOrderType != ItemConst.ORDER_TYPE.OUTTER_DELIVERY && sOrderType != ItemConst.ORDER_TYPE.INNER_DELIVERY) continue;
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 end
iDeliveryDirectCnt += int.Parse(htData["count"].ToString());
break;
//#20180328 직접배달 처리 후 배달완료시 매출 생성 안되는 증상 수정 end
}
}
iTotOrderRegCnt = iOrderRegNormalCnt + iOrderRegDeliveryCnt + iOrderRegReservedCnt;
// 신규 주문 알림 팝업 Show 여부
// 최초 신규 주문 건수 가져올 시 주문 알림 팝업 Show - 문성진D 요청(BR, PC 합의 사항)
//if((m_cPosStatus.Sale.HappyOrderRegCnt != string.Empty && int.Parse(m_cPosStatus.Sale.HappyOrderRegCnt) != iOrderRegCnt) ||
// (m_cPosStatus.Sale.HappyOrderPickupDelayCnt != string.Empty && int.Parse(m_cPosStatus.Sale.HappyOrderPickupDelayCnt) != iPickupDelayCnt))
// 신규 주문 건수 타입 별 변경 체크
//if ((int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderTotRegCnt, "0")) != iTotOrderRegCnt) ||
// (int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderPickupDelayCnt, "0")) != iPickupDelayCnt))
// PC, BRK 에 따라 상단 문구와 팝업알림 로직이 달라짐(2017/03/14)
//if ((int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderRegCnt, "0")) != iOrderRegNormalCnt) ||
// (int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRegCnt, "0")) != iOrderRegDeliveryCnt) ||
// (int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderReservedRegCnt, "0")) != iOrderRegReservedCnt))
//{
// m_cPosStatus.Sale.HappyOrderAlarm = true;
//}
// 연습모드일 경우에는 해피오더 알림팝업이 뜨지 않도록 처리(20170619)
if (m_cPosStatus.Base.TrainingFlag != "1")
{
if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC)
{
// 신규주문 건수, 픽업미처리 건수, 배달미처리 건수 변경 시 팝업 알림
//#20180328 직접배달 처리 후 배달완료시 매출 생성 안되는 증상 수정 start
//기존
/*
if ((int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderTotRegCnt, "0")) != iOrderRegNormalCnt + iOrderRegReservedCnt + iOrderRegDeliveryCnt) ||
(int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderProductReadyCnt, "0")) + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderPickupWaitCnt, "0")) != iProductReadyCnt + iPickupWaitCnt) ||
(int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRequestCnt, "0")) + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRegCnt, "0")) + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryingCnt, "0")) != iDeliveryRequestCnt + iDeliveryRegCnt + iDeliveryingCnt))
{
m_cPosStatus.Sale.HappyOrderAlarm = true;
}
*/
//변경
if ((int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderTotRegCnt, "0")) != iOrderRegNormalCnt + iOrderRegReservedCnt + iOrderRegDeliveryCnt) ||
(int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderProductReadyCnt, "0")) + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderPickupWaitCnt, "0")) != iProductReadyCnt + iPickupWaitCnt) ||
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 start
//기존
/*
(int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRequestCnt, "0")) +
int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRegCnt, "0")) +
int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryingCnt, "0")) +
int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryDirectCnt, "0")) != iDeliveryRequestCnt + iDeliveryRegCnt + iDeliveryingCnt + iDeliveryDirectCnt))
*/
//변경
(int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRequestCnt, "0")) +
int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRegCnt, "0")) +
//int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryingCnt, "0")) +
int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryDirectCnt, "0")) +
int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryProductReadyCnt, "0")) !=
iDeliveryRequestCnt +
iDeliveryRegCnt +
//iDeliveryingCnt +
iDeliveryDirectCnt +
iDeliveryProductReadyCnt))
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 end
{
m_cPosStatus.Sale.HappyOrderAlarm = true;
}
//#20180328 직접배달 처리 후 배달완료시 매출 생성 안되는 증상 수정 end
}
else
{
// 일반 건수, 배달 건수, 예약 건수 변경 시 팝업 알림
if (int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderRegCnt, "0")) != iOrderRegNormalCnt ||
int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryOrderRegCnt, "0")) != iOrderRegDeliveryCnt ||
int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderReservedRegCnt, "0")) != iOrderRegReservedCnt)
{
m_cPosStatus.Sale.HappyOrderAlarm = true;
}
}
}
// 해피오더 일반 주문접수 건수 갱신
m_cPosStatus.Sale.HappyOrderRegCnt = Convert.ToString(iOrderRegNormalCnt);
// 해피오더 예약 주문접수 건수 갱신
m_cPosStatus.Sale.HappyOrderReservedRegCnt = Convert.ToString(iOrderRegReservedCnt);
// 해피오더 배달 주문접수 건수 갱신
m_cPosStatus.Sale.HappyOrderDeliveryOrderRegCnt = Convert.ToString(iOrderRegDeliveryCnt);
// 해피오더 총 주문접수 건수 갱신
m_cPosStatus.Sale.HappyOrderTotRegCnt = Convert.ToString(iTotOrderRegCnt);
// 해피오더 상품준비 건수 갱신
m_cPosStatus.Sale.HappyOrderProductReadyCnt = Convert.ToString(iProductReadyCnt);
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 start
m_cPosStatus.Sale.HappyOrderDeliveryProductReadyCnt = Convert.ToString(iDeliveryProductReadyCnt);
//#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 end
// 해피오더 픽업대기 건수 갱신
m_cPosStatus.Sale.HappyOrderPickupWaitCnt = Convert.ToString(iPickupWaitCnt);
// 해피오더 픽업지연 건수 갱신
m_cPosStatus.Sale.HappyOrderPickupDelayCnt = Convert.ToString(iPickupDelayCnt);
// 해피오더 픽업지연미픽업 건수 갱신
m_cPosStatus.Sale.HappyOrderNoPickupAndDelayCnt = Convert.ToString(iNoPickupAndDelayCnt);
// 해피오더 배달요청 건수 갱신
m_cPosStatus.Sale.HappyOrderDeliveryRequestCnt = Convert.ToString(iDeliveryRequestCnt);
// 해피오더 배달접수 건수 갱신
m_cPosStatus.Sale.HappyOrderDeliveryRegCnt = Convert.ToString(iDeliveryRegCnt);
//#20180328 직접배달 처리 후 배달완료시 매출 생성 안되는 증상 수정 start
// 해피오더 직접배달 건수 갱신
m_cPosStatus.Sale.HappyOrderDeliveryDirectCnt = Convert.ToString(iDeliveryDirectCnt);
//#20180328 직접배달 처리 후 배달완료시 매출 생성 안되는 증상 수정 end
// 해피오더 배달중 건수 갱신
m_cPosStatus.Sale.HappyOrderDeliveryingCnt = Convert.ToString(iDeliveryingCnt);
//grayber@20180306 해피오더 주문가능 상태 추가 start - 해피오더 배달 가능 상태 전역변수에 값 설정
m_cPosStatus.Sale.DeliverySupport = string.Empty; // 기본값 string.Empty
if (CmUtil.IsNull(htRspData) != true )
{
if (CmUtil.IsNull(htRspData["deliverySupport"]) != true)
{// 전역변수에 값 추가
m_cPosStatus.Sale.DeliverySupport = htRspData["deliverySupport"].ToString(); // Y:N
}
}
//System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " ▶▶▶ m_cPosStatus.Sale.DeliverySupport:" + m_cPosStatus.Sale.DeliverySupport); // Debug output console
//grayber@20180306 해피오더 주문가능 상태 추가 end
//#20180605 해피오더 개선 start
//즉시주문, 예약주문 알림
// 즉시픽업 건수
m_cPosStatus.Sale.HappyOrderDirectCnt = Convert.ToString(iOrdCnt_Direct);
// 즉시배달 건수
m_cPosStatus.Sale.HappyOrderReservCnt = Convert.ToString(iOrdCnt_Reserv);
////#15058 해피오더 버튼 변경 start,phj
//m_cPosStatus.Sale.SaleMainRepeat = true;
//m_cPosStatus.Sale.PosMainRepeat = true;
//m_cPosStatus.Sale.TableMainRepeat = true;
////#15058 해피오더 버튼 변경 end,phj
//#20180605 해피오더 개선 end
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sRet;
}
/// <summary>
/// 빚은몰 주문 건수 조회
/// </summary>
/// <param name="sRespData"></param>
/// <returns></returns>
public string SelectBizeunOrderCount(string sRespData)
{
string sRet = UserCom.RST_ERR;
try
{
if(CmUtil.IsNumber(sRespData.Trim()) == true)
{
m_cPosStatus.Sale.BizeunOrderCnt = sRespData.Trim();
}
else
{
m_cPosStatus.Sale.BizeunOrderCnt = "0";
}
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sRet;
}
/// <summary>
/// 이지웰 주문건수 조회
/// </summary>
/// <param name="sRespData"></param>
/// <returns></returns>
public string SelectEzwelOrderCount(string sRespData)
{
string sRet = UserCom.RST_ERR;
try
{
if (CmUtil.IsNumber(sRespData.Trim()) == true)
{
m_cPosStatus.Sale.EzwelOrderCnt = sRespData.Trim();
}
else
{
m_cPosStatus.Sale.EzwelOrderCnt = "0";
}
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sRet;
}
/// <summary>
/// 온도정보 Http 통신
/// </summary>
/// <param name="aParam"></param>
/// <returns></returns>
public string SelectStoreTempInfo (string sRespData)
{
string sRet = UserCom.RST_ERR;
string sTempInfo = string.Empty;
string[] sTempSep = null;
int iTotCnt = 0;
int iStartCnt = 0;
int iEndCnt = 0;
try
{
string sResp = string.Empty;
if (sRespData.Trim().Length > 0)
{
iTotCnt = Convert.ToInt16(sRespData.Substring(0, 2));
sRespData = sRespData.Remove(0, 2);
if (iTotCnt > 2)
{
// 첫번째 온도 정보
iStartCnt = sRespData.IndexOf("[");
iEndCnt = sRespData.IndexOf("]");
if (iEndCnt != 0)
{
sTempInfo = sRespData.Substring(iStartCnt, iEndCnt + 1).Replace("[", "").Replace("]", "");
sTempSep = sTempInfo.Split('|');
// 코드1
m_cPosStatus.Temp.Code1 = sTempSep[0];
// 이름1
m_cPosStatus.Temp.Name1 = sTempSep[1];
// 온도1
m_cPosStatus.Temp.Temperature1 = sTempSep[2];
// 알람1
m_cPosStatus.Temp.Alarm1 = sTempSep[3];
// 경고1
m_cPosStatus.Temp.Warning1 = sTempSep[4];
// 미수신1
m_cPosStatus.Temp.receiveYN1 = sTempSep[5];
// 최종온도수집1
m_cPosStatus.Temp.CollectionTime1 = sTempSep[6];
sRespData = sRespData.Remove(iStartCnt, iEndCnt + 1);
}
// 두번째 온도 정보
iStartCnt = sRespData.IndexOf("[");
iEndCnt = sRespData.IndexOf("]");
if (iEndCnt != 0)
{
sTempInfo = sRespData.Substring(iStartCnt, iEndCnt + 1).Replace("[", "").Replace("]", "");
sTempSep = sTempInfo.Split('|');
// 코드2
m_cPosStatus.Temp.Code2 = sTempSep[0];
// 이름2
m_cPosStatus.Temp.Name2 = sTempSep[1];
// 온도2
m_cPosStatus.Temp.Temperature2 = sTempSep[2];
// 알람2
m_cPosStatus.Temp.Alarm2 = sTempSep[3];
// 경고2
m_cPosStatus.Temp.Warning2 = sTempSep[4];
// 미수신2
m_cPosStatus.Temp.receiveYN2 = sTempSep[5];
// 최종온도수집2
m_cPosStatus.Temp.CollectionTime2 = sTempSep[6];
sRespData = sRespData.Remove(iStartCnt, iEndCnt + 1);
}
iStartCnt = sRespData.IndexOf("[");
iEndCnt = sRespData.IndexOf("]");
if (iEndCnt != 0)
{
sTempInfo = sRespData.Substring(iStartCnt, iEndCnt + 1).Replace("[", "").Replace("]", "");
sTempSep = sTempInfo.Split('|');
// 세번째 온도 정보
// 코드3
m_cPosStatus.Temp.Code3 = sTempSep[0];
// 이름3
m_cPosStatus.Temp.Name3 = sTempSep[1];
// 온도3
m_cPosStatus.Temp.Temperature3 = sTempSep[2];
// 알람3
m_cPosStatus.Temp.Alarm3 = sTempSep[3];
// 경고3
m_cPosStatus.Temp.Warning3 = sTempSep[4];
// 미수신3
m_cPosStatus.Temp.receiveYN3 = sTempSep[5];
// 최종온도수집3
m_cPosStatus.Temp.CollectionTime3 = sTempSep[6];
sRespData = sRespData.Remove(iStartCnt, iEndCnt + 1);
}
}
}
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sRet;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" 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>{D7F0F611-E694-47D5-AB09-8C5514B04B6F}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Cosmos.Network</RootNamespace>
<AssemblyName>Agent.NetworkCheckOver</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>Svn</SccProjectName>
<SccLocalPath>Svn</SccLocalPath>
<SccAuxPath>Svn</SccAuxPath>
<SccProvider>SubversionScc</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\BIN\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</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="Cosmos.BaseFrame, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.BaseFrame.dll</HintPath>
</Reference>
<Reference Include="Cosmos.ServiceProvider, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.ServiceProvider.dll</HintPath>
</Reference>
<Reference Include="Cosmos.UserFrame, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.UserFrame.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Activator.cs" />
<Compile Include="CheckOverDetail.cs" />
<Compile Include="NetworkCheckOver.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Library\CommonManager\CommonManager.csproj">
<Project>{670a81be-cee3-4c29-846d-a37652ca270d}</Project>
<Name>CommonManager</Name>
</ProjectReference>
<ProjectReference Include="..\..\Library\Common\Common.csproj">
<Project>{a5b7accd-79eb-4261-bd36-01ab484ad8e3}</Project>
<Name>Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>copy .\IC\Agent.NetworkCheckOver.dll .\Agent.NetworkCheckOver.dll</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>copy .\Agent.NetworkCheckOver.dll .\IC\Agent.NetworkCheckOver.dll</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
// 어셈블리와 관련된 정보를 수정하려면
// 이 특성 값을 변경하십시오.
[assembly: AssemblyTitle("NetworkCheckOver")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("NetworkCheckOver")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("e0c7ddd1-3d25-472c-ad5c-7373ebeb2640")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : Network 관련 클래스 Activator
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
/// <summary>
/// Load BaseFrame and save information (BaseFrame의 로드하고 정보를 보관한다)
/// </summary>
public class Activator : InitServiceAbstract
{
/// <summary>
/// Define main entrance point of project load. (프로젝트 로드의 주진입점을 정의합니다.)
/// </summary>
public Activator()
{
}
/// <summary>
///
/// </summary>
/// <param name="sClassNm"></param>
/// <returns></returns>
public override object InitServiceInstance(string sClassNm)
{
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Starting !!!");
object retObj = null;
//클래스 찾아오기 위함
switch (sClassNm)
{
case ServiceLists.AGENT_NETWORK_TRANSEND.NetworkTranSend:
{
Cosmos.Network.NetworkTranSend agentClass = new Cosmos.Network.NetworkTranSend();
retObj = agentClass;
break;
}
}
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Completed !!!");
return retObj;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" 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>{B709B5A7-A4F0-4B18-8E07-1EA3541DDB01}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Cosmos.Network</RootNamespace>
<AssemblyName>Agent.NetworkTranSend</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>Svn</SccProjectName>
<SccLocalPath>Svn</SccLocalPath>
<SccAuxPath>Svn</SccAuxPath>
<SccProvider>SubversionScc</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\BIN\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</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="Cosmos.BaseFrame">
<HintPath>..\..\..\BIN\Cosmos.BaseFrame.dll</HintPath>
</Reference>
<Reference Include="Cosmos.ServiceProvider">
<HintPath>..\..\..\BIN\Cosmos.ServiceProvider.dll</HintPath>
</Reference>
<Reference Include="Cosmos.UserFrame">
<HintPath>..\..\..\BIN\Cosmos.UserFrame.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Activator.cs" />
<Compile Include="NetworkTranSend.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Library\CommonManager\CommonManager.csproj">
<Project>{670a81be-cee3-4c29-846d-a37652ca270d}</Project>
<Name>CommonManager</Name>
</ProjectReference>
<ProjectReference Include="..\..\Library\Common\Common.csproj">
<Project>{a5b7accd-79eb-4261-bd36-01ab484ad8e3}</Project>
<Name>Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>copy .\IC\Agent.NetworkTranSend.dll .\Agent.NetworkTranSend.dll</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>copy .\Agent.NetworkTranSend.dll .\IC\Agent.NetworkTranSend.dll</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
// 어셈블리와 관련된 정보를 수정하려면
// 이 특성 값을 변경하십시오.
[assembly: AssemblyTitle("NetworkTranSend")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("NetworkTranSend")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("2786bf88-f09e-4e7c-9875-0653209757e1")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,121 @@
using System;
using System.Collections.Generic;
using System.Text;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : OLEDevice 관련 클래스 Activator
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
/// <summary>
/// Load BaseFrame and save information (BaseFrame의 로드하고 정보를 보관한다)
/// </summary>
public class Activator : InitServiceAbstract
{
/// <summary>
/// Class별 객체를 리턴
/// </summary>
/// <param name="sClassNm"></param>
/// <returns></returns>
public override object InitServiceInstance(string sClassNm)
{
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "Activator.InitServiceInstance()", "Message : " + sClassNm + " Registration Starting !!!");
object retObj = null;
switch (sClassNm)
{
case ServiceLists.AGENT_OLEDEVICE.DEVICE_MSR:
{
Cosmos.OLEDevice.DeviceMsr agentClass = new Cosmos.OLEDevice.DeviceMsr();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER:
{
Cosmos.OLEDevice.DevicePosPrinter agentClass = new Cosmos.OLEDevice.DevicePosPrinter();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_OLEDEVICE.DEVICE_SCANNER:
{
Cosmos.OLEDevice.DeviceScanner agentclass = new Cosmos.OLEDevice.DeviceScanner();
retObj = agentclass;
break;
}
case ServiceLists.AGENT_OLEDEVICE.DEVICE_CASHDRAWER:
{
Cosmos.OLEDevice.DeviceCashdrawer agentClass = new Cosmos.OLEDevice.DeviceCashdrawer();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_OLEDEVICE.DEVICE_CATTERMINAL:
{
Cosmos.OLEDevice.DeviceCatTerminal agentClass = new Cosmos.OLEDevice.DeviceCatTerminal();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER:
{
Cosmos.OLEDevice.DeviceICReader agentClass = new Cosmos.OLEDevice.DeviceICReader();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_OLEDEVICE.DEVICE_SIGNPAD:
{
Cosmos.OLEDevice.DeviceSignPad agentClass = new Cosmos.OLEDevice.DeviceSignPad();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_OLEDEVICE.DEVICE_SCALE:
{
Cosmos.OLEDevice.DeviceScale agentClass = new Cosmos.OLEDevice.DeviceScale();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_OLEDEVICE.DEVICE_LABELPRINTER:
{
Cosmos.OLEDevice.DeviceLabelPrinter agentClass = new Cosmos.OLEDevice.DeviceLabelPrinter();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_OLEDEVICE.DEVICE_OURHOME:
{
Cosmos.OLEDevice.DeviceOurHome agentClass = new Cosmos.OLEDevice.DeviceOurHome();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_OLEDEVICE.DEVICE_TPAYGLE:
{
Cosmos.OLEDevice.DeviceTPaygle agentClass = new Cosmos.OLEDevice.DeviceTPaygle();
retObj = agentClass;
break;
}
case ServiceLists.AGENT_OLEDEVICE.OCB_DIRECT:
{
Cosmos.OLEDevice.OCBDirect agentClass = new Cosmos.OLEDevice.OCBDirect();
retObj = agentClass;
break;
}
}
return retObj;
}
}
}

View File

@ -0,0 +1,552 @@
using System;
using System.Threading;
using System.Runtime.InteropServices;
using System.IO.Ports;
using Cosmos.UserFrame;
using Cosmos.Common;
using Cosmos.ServiceProvider;
using Microsoft.PointOfService;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : CahsDrawer 제어
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.OLEDevice
{
/// <summary>
/// CASHDRAWER 제어 CLASS
/// </summary>
public class DeviceCashdrawer : ICashdrawerUs
{
#region VctDraw2kSs.dll
[DllImport("VctDraw2kSs.dll", EntryPoint = "OpenDrawPort")]
public static extern int OpenDrawPortFor9700();
[DllImport("VctDraw2kSs.dll", EntryPoint = "CloseDrawPort")]
public static extern int CloseDrawPortFor9700();
[DllImport("VctDraw2kSs.dll", EntryPoint = "OpenDraw")]
public static extern void OpenDrawFor9700();
#endregion
#region TgDrawA.dll
[DllImport("TgDrawA.dll", EntryPoint = "OpenDrawPort")]
public static extern int OpenDrawPortForTg();
[DllImport("TgDrawA.dll", EntryPoint = "CloseDrawPort")]
public static extern int CloseDrawPortForTg();
[DllImport("TgDrawA.dll", EntryPoint = "OpenDraw")]
public static extern void OpenDrawForTg();
#endregion
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// Device 상태 정보 객체
/// </summary>
public DeviceStatus devStatus = new DeviceStatus();
/// <summary>
/// POS 기본 정보
/// </summary>
public PosStatus m_cPosStatus = null;
/// <summary>
/// Pos for .Net CashDrawer 객체
/// </summary>
private CashDrawer cashdrawer = null;
/// <summary>
/// Pos for .Net의 Device 정보를 가져오기 위한 객체
/// </summary>
private PosExplorer posExplorer = null;
/// <summary>
/// RS232통신을 위한 시리얼포트 객체
/// </summary>
private SerialPort m_serialPort = null;
private IPosPrinterUs objPosPrinter = null;
/// <summary>
///
/// </summary>g
private int m_sUpdateStatus = 0;
/// <summary>
/// 0:OPOS, 1:RS232(프린터에 연결), 2:IBM본체에 연결하는 돈통
/// <para>DRAWER_TYPE 참고</para>
/// </summary>
private int drawerType = 0;
#region
/// <summary>
/// 생성자
/// </summary>
public DeviceCashdrawer()
{
try
{
try
{
posExplorer = new PosExplorer();
}
catch (Exception ex) { }
devStatus = (DeviceStatus)StateObject.DEVICE;
m_cPosStatus = (PosStatus)StateObject.POS;
objPosPrinter = (IPosPrinterUs)(new SManager()).InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER);
DeviceStatusInit();
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
/// <summary>
/// 초기화
/// </summary>
private void DeviceStatusInit()
{
devStatus.Cashdrawer.Status = "";
devStatus.Cashdrawer.DeviceName = "";
devStatus.Cashdrawer.Open = false;
}
#endregion
#region OPEN/CLOSE
/// <summary>
/// 디바이스 Open시 처리함수
/// </summary>
/// <param name="sDeviceType">장비종류(ex- "Msr","PosPrinter","Scanner"...)</param>
/// <param name="sLogicalName">레지스트리 항목(ex- "DefaultMsr","DefaultPosPrinter","DefaultScanner"...)</param>
/// <returns></returns>
public bool OpenDevice(string sDeviceType, string sLogicalName)
{
bool bRet = false;
try
{
if(devStatus.Cashdrawer.UseYn == false)
{
return false;
}
if(m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._1_PRINTER)
{
if(devStatus.Printer.UseYn == false)
{
return false;
}
devStatus.Cashdrawer.Open = true;
devStatus.Cashdrawer.Status = "SUCCESS";
}
else if(m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._2_OPOS_IBM)
{
OpenDeviceByOPOS(sDeviceType, sLogicalName);
}
else if(m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._3_DLL_TPS8700)
{
OpenDrawForTg();
bRet = true;
}
else if(m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._4_DLL_VPS9700)
{
OpenDrawFor9700();
bRet = true;
}
else if (m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._5_IBM_MAIN)
{
OpenDeviceByRS232(m_cPosStatus.Base.OlePosCashDrawerSerialPortNumber, m_cPosStatus.Base.OlePosCashDrawerBaudRate);
}
bRet = true;
}
catch (Exception ex)
{
devStatus.Cashdrawer.Open = false;
devStatus.Cashdrawer.Status = "CashDrawer Device Open Exception";
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Cashdrawer.Status + "/" + ex.Message);
return bRet;
}
return bRet;
}
public bool OpenDeviceByOPOS(string sDeviceType, string sLogicalName)
{
bool bRet = false;
try
{
DeviceInfo devInfo = null;
if (sDeviceType == DeviceType.CashDrawer && sLogicalName == PosConst.OPOS_LDN.CASHDRAWER)
{
devInfo = posExplorer.GetDevice(DeviceType.CashDrawer, PosConst.OPOS_LDN.CASHDRAWER);
}
else
{
devStatus.Cashdrawer.Open = false;
devStatus.Cashdrawer.Status = "DEVICE INFO ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceCashdrawer.OpenDeviceByOPOS()", devStatus.Printer.Status);
return bRet;
}
if(devInfo == null)
{
devStatus.Cashdrawer.Open = false;
devStatus.Cashdrawer.Status = "DEVICE INFO ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceCashdrawer.OpenDeviceByOPOS()", devStatus.Printer.Status);
return bRet;
}
cashdrawer = (CashDrawer)posExplorer.CreateInstance(devInfo);
if(cashdrawer != null)
{
cashdrawer.StatusUpdateEvent += new StatusUpdateEventHandler(CashDrawer_StatusUpdateEventDataEvent);
try
{
cashdrawer.Open();
}
catch(Exception ex)
{
devStatus.Cashdrawer.Status = "OPEN FAIL";
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceCashdrawer.OpenDeviceByOPOS()", devStatus.Printer.Status);
return bRet;
}
try
{
cashdrawer.Claim(1000);
}
catch(Exception ex)
{
devStatus.Cashdrawer.Status = "CLAIM FAIL";
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceCashdrawer.OpenDeviceByOPOS()", devStatus.Printer.Status);
return bRet;
}
try
{
cashdrawer.DeviceEnabled = true;
}
catch(Exception ex)
{
devStatus.Cashdrawer.Status = "DEVICE ENABLED FAIL";
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceCashdrawer.OpenDeviceByOPOS()", devStatus.Printer.Status);
return bRet;
}
devStatus.Cashdrawer.DeviceName = devInfo.ServiceObjectName;
devStatus.Cashdrawer.Open = true;
devStatus.Cashdrawer.Status = "Success";
bRet = true;
}
}
catch (Exception ex)
{
devStatus.Cashdrawer.Open = false;
devStatus.Cashdrawer.Status = "CashDrawer Device Open Exception";
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Cashdrawer.Status + "/" + ex.Message);
}
return bRet;
}
public bool OpenDeviceByRS232(string sSerialPort, long lBaudrate)
{
bool bRet = false;
try
{
if(m_serialPort != null)
{
m_serialPort.Close();
System.Threading.Thread.Sleep(50);
m_serialPort = null;
}
if(m_serialPort == null)
{
m_serialPort = new SerialPort();
if(m_serialPort == null)
{
devStatus.Cashdrawer.Open = false;
devStatus.Cashdrawer.Status = "SERIAL PORT ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Cashdrawer.Status);
return bRet;
}
m_serialPort.NewLine = "\r\n";
m_serialPort.Encoding = System.Text.Encoding.GetEncoding("ks_c_5601-1987");
m_serialPort.WriteBufferSize = 1024 * 3;
m_serialPort.PortName = sSerialPort;
m_serialPort.BaudRate = (int)lBaudrate;
m_serialPort.DataBits = 8;
m_serialPort.StopBits = StopBits.One;
m_serialPort.Parity = Parity.None;
m_serialPort.Open();
if(m_serialPort.IsOpen == false)
{
devStatus.Cashdrawer.Open = false;
devStatus.Cashdrawer.Status = "SERIAL PORT OPEN ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Cashdrawer.Status);
return bRet;
}
devStatus.Cashdrawer.Open = true;
devStatus.Cashdrawer.Status = "SUCCESS";
bRet = true;
}
}
catch (Exception ex)
{
devStatus.Cashdrawer.Open = false;
devStatus.Cashdrawer.Status = "CashDrawer Device Open Exception";
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
/// <summary>
/// 디바이스 Close시 처리함수</para>
/// </summary>
/// <returns></returns>
public bool CloseDevice()
{
bool bRet = false;
try
{
if(m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._2_OPOS_IBM)
{
if (cashdrawer == null)
return bRet;
cashdrawer.DeviceEnabled = false;
cashdrawer.Release();
cashdrawer.Close();
cashdrawer = null;
}
else if(m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._3_DLL_TPS8700)
{
CloseDrawPortForTg();
}
else if(m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._4_DLL_VPS9700)
{
CloseDrawPortFor9700();
}
else if(m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._5_IBM_MAIN)
{
if(m_serialPort == null)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceCashdrawer.CloseDevice()", "m_serialPort == null");
return bRet;
}
m_serialPort.Close();
m_serialPort = null;
}
bRet = true;
devStatus.Cashdrawer.Status = "CLOSE";
devStatus.Cashdrawer.Open = false;
}
catch (Exception ex)
{
devStatus.Cashdrawer.Status = "CLOSE EXCEPTION";
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Cashdrawer.Status + "/" + ex.Message);
}
return bRet;
}
#endregion
#region POS for .NET
/// <summary>
/// Cashdrawer 상태 변경에 따른 이벤트 처리
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CashDrawer_StatusUpdateEventDataEvent(object sender, StatusUpdateEventArgs e)
{
try
{
m_sUpdateStatus = e.Status;
switch (m_sUpdateStatus)
{
case CashDrawer.StatusOpen:
devStatus.Cashdrawer.Status = "DRAWER OPENED";
break;
case CashDrawer.StatusClosed:
devStatus.Cashdrawer.Status = "DRAWER CLOSED";
break;
}
if (PosOLEDevice.m_delegateOlePos != null)
PosOLEDevice.m_delegateOlePos(PosConst.OPOS_DEVICE.CASHDRAWER, devStatus.Cashdrawer.Status, string.Empty, string.Empty);
}
catch (Exception ex)
{
devStatus.Cashdrawer.Status = "STATUS UPDATE EVENT ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Cashdrawer.Status + "-" + ex.Message);
}
}
#endregion
#region
/// <summary>
/// 돈통 개방
/// </summary>
public void OpenCashDrawer()
{
bool bRet = false;
try
{
if (devStatus.Cashdrawer.Open == false)
{
OpenDevice(DeviceType.CashDrawer, PosConst.OPOS_LDN.CASHDRAWER);
}
if (devStatus.Cashdrawer.Open == true)
{
if (m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._1_PRINTER)
{
objPosPrinter.OpenCashDrawer();
bRet = true;
}
else if (m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._2_OPOS_IBM)
{
cashdrawer.OpenDrawer();
bRet = true;
}
else if (m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._3_DLL_TPS8700)
{
OpenDrawForTg();
bRet = true;
}
else if (m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._4_DLL_VPS9700)
{
OpenDrawFor9700();
bRet = true;
}
else if (m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._5_IBM_MAIN)
{
TransmitCommand(PosConst.ESCP_COMMAND.CASHDRAWER_OPEN_IBMHOST, true);
bRet = true;
}
else
{
devStatus.Cashdrawer.Status = "DRAWER TYPE ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Cashdrawer.Status);
}
devStatus.Cashdrawer.Status = "DRAWER OPEN";
}
}
catch (Exception ex)
{
devStatus.Cashdrawer.Status = "DRAWER OPEN ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Cashdrawer.Status + "/" + ex.Message);
}
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Open Drawer=" + (bRet ? "SUCCESS" : "FAIL"));
}
#endregion
#region SerialPort
private void TransmitCommand(byte[] aCmd, bool bSleepOn = true)
{
if (m_serialPort.IsOpen == true)
{
int iOffset = 0;
//int iReadBuf = 2048;
int iReadBuf = m_serialPort.WriteBufferSize;
while (true)
{
if (iOffset >= aCmd.Length)
{
break;
}
if (iReadBuf + iOffset > aCmd.Length)
{
iReadBuf = aCmd.Length - iOffset;
}
m_serialPort.Write(aCmd, iOffset, iReadBuf);
iOffset += iReadBuf;
System.Threading.Thread.Sleep(10);
}
//m_serialPort.Write(Encoding.Default.GetString(aCmd, 0, aCmd.Length));
if (bSleepOn == true) System.Threading.Thread.Sleep(30);
}
}
#endregion
}
}

View File

@ -0,0 +1,335 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.UserFrame;
using Cosmos.Common;
using System.Runtime.InteropServices;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : CAT 단말기 제어
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.OLEDevice
{
/// <summary>
/// CAT 단말기 제어 CLASS
/// </summary>
public class DeviceCatTerminal : ICatTerminalUs
{
/// <summary>
/// 단말기와 승인/취소 통신을 처리하는 함수
/// </summary>
/// <param name="comport"></param>
/// <param name="baud"></param>
/// <param name="input_msg"></param>
/// <param name="output_msg"></param>
/// <returns></returns>
[DllImport("SPCNSecuCAT.dll")]
public static extern int SPCNSecuCAT_Payment(int comport, int baud, byte[] input_msg, byte[] output_msg);
/// <summary>
/// 단말기에 저장된 미전송 내역을 받아오는 함수
/// </summary>
/// <param name="comport"></param>
/// <param name="baud"></param>
/// <param name="output_msg"></param>
/// <returns></returns>
[DllImport("SPCNSecuCAT.dll")]
public static extern int SPCNSecuCAT_GetRemain(int comport, int baud, byte[] output_msg);
/// <summary>
/// 중국 - 샨더 단말기와 승인/취소 통신을 처리하는 함수
/// </summary>
/// <param name="comport"></param>
/// <param name="input_msg"></param>
/// <param name="output_msg"></param>
[DllImport("LibSand.dll")]
public static extern void card_trans(int comport, byte[] input_msg, byte[] output_msg);
/// <summary>
/// 중국 - 은련 단말기와 승인/취소 통신을 처리하는 함수
/// </summary>
/// <param name="comport"></param>
/// <param name="input_msg"></param>
/// <param name="output_msg"></param>
[DllImport("posinf.dll")]
public static extern int bankall(byte[] request, byte[] response);
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// Device 상태 정보 객체
/// </summary>
public DeviceStatus m_cdevStatus = null;
/// <summary>
/// Pos 상태 정보 객체
/// </summary>
public PosStatus m_cPosStatus = null;
/// <summary>
/// 생성자
/// </summary>
public DeviceCatTerminal()
{
try
{
m_cPosStatus = (PosStatus)StateObject.POS;
m_cdevStatus = (DeviceStatus)StateObject.DEVICE;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#region
/// <summary>
/// 연결확인(가동시 체크)
/// </summary>
public bool SPCNSecuCatStatus()
{
bool bRet = false;
string sSendData = string.Empty;
string sRecvData = string.Empty;
try
{
if (m_cPosStatus.Base.OlePosCATModel == PosConst.CAT_MODEL_DIV._KOR_SPCN)
{
sSendData = CmUtil.RPadH("Z0A0 000000000000000000000000000", 360);
if (SPCNSecuCatApprove(sSendData, ref sRecvData) > 0)
bRet = true;
}
else if (m_cPosStatus.Base.OlePosCATModel == PosConst.CAT_MODEL_DIV._CHN_SAND || m_cPosStatus.Base.OlePosCATModel == PosConst.CAT_MODEL_DIV._CHN_UNION)
{
// 중국산은 상태 체크 없어 패스
//if (SPCNSecuCatApprove(sSendData, ref sRecvData) >= 0)
bRet = true;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
#endregion
#region CAT
/// <summary>
/// 연결 상태 및 CAT 단말기 정보 확인
/// </summary>
public int SPCNSecuCatInfo(string sSendData, ref string sRecvData)
{
int nReturn = -99;
try
{
nReturn = SPCNSecuCatApprove(sSendData, ref sRecvData);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return nReturn;
}
#endregion
#region /
/// <summary>
/// 승인/취소 요청
/// </summary>
/// <param name="sSendData"></param>
/// <param name="sRecvData"></param>
/// <returns></returns>
public int SPCNSecuCatApprove(string sSendData, ref string sRecvData)
{
int nReturn = -99;
try
{
byte[] bytInputMsg = null;
byte[] bytOutput = new byte[4096];
sRecvData = string.Empty;
Array.Clear(bytOutput, 0, bytOutput.Length);
bytInputMsg = Encoding.Default.GetBytes(sSendData);
switch (m_cPosStatus.Base.OlePosCATModel)
{
case PosConst.CAT_MODEL_DIV._KOR_SPCN:
{
nReturn = SPCNSecuCAT_Payment(CmUtil.IntParse(m_cPosStatus.Base.OlePosCATSerialPortNumber.Replace("COM", "")), (int)m_cPosStatus.Base.OlePosCATSerialBaudRate, bytInputMsg, bytOutput); // 승인조회
if (nReturn < 0) //승인실퍠
{
//실패경우
sRecvData = ErrCodeToMsg(nReturn);
}
else
{
sRecvData = ByteToString(bytOutput);
}
break;
}
case PosConst.CAT_MODEL_DIV._CHN_SAND:
{
// 중국 샨더 단말기
card_trans(CmUtil.IntParse(m_cPosStatus.Base.OlePosCATSerialPortNumber.Replace("COM", "")), bytInputMsg, bytOutput); // 승인조회
sRecvData = ByteToString(bytOutput);
if (sRecvData.Length > 0) nReturn = 0;
break;
}
case PosConst.CAT_MODEL_DIV._CHN_UNION:
{
// 중국 은련 단말기
bankall(bytInputMsg, bytOutput); // 승인조회
sRecvData = ByteToString(bytOutput);
if (sRecvData.Length > 0) nReturn = 0;
break;
}
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return nReturn;
}
#endregion
#region /
/// <summary>
/// 단말기에 저장된 미전송 내역을 받아오는 함수
/// </summary>
/// <param name="sRecvData"></param>
/// <returns></returns>
public int SPCNSecuCatRemain(ref string sRecvData)
{
int nReturn = -99;
try
{
byte[] bytOutput = new byte[4096];
sRecvData = string.Empty;
Array.Clear(bytOutput, 0, bytOutput.Length);
nReturn = SPCNSecuCAT_GetRemain(CmUtil.IntParse(m_cPosStatus.Base.OlePosCATSerialPortNumber.Replace("COM", "")), (int)m_cPosStatus.Base.OlePosCATSerialBaudRate, bytOutput);
if (nReturn < 0) //승인실퍠
{
//실패경우
sRecvData = ErrCodeToMsg(nReturn);
}
else
{
sRecvData = ByteToString(bytOutput);
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return nReturn;
}
#endregion
/// <summary>
/// Byte배열을 string으로 변환 (Byte배열의 null(0x00)값 제거)
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
private string ByteToString(byte[] data)
{
int inx = Array.FindIndex(data, 0, (x) => x == 0x0);
if (inx >= 0)
{
return Encoding.Default.GetString(data, 0, inx);
}
else
{
return Encoding.Default.GetString(data);
}
}
/// <summary>
/// 응답코드
/// </summary>
/// <param name="nErrCode"></param>
/// <returns></returns>
private string ErrCodeToMsg(int nErrCode)
{
string sMsg = string.Empty;
try
{
switch (nErrCode)
{
case -101: sMsg = "시리얼포트번호오류"; break;
case -102: sMsg = "통신속도오류"; break;
case -103: sMsg = "전문길이오류"; break;
case -210: sMsg = "할부개월오류"; break;
case -211: sMsg = "금액봉사료세금오류"; break;
case -212: sMsg = "원거래일자오류"; break;
case -213: sMsg = "포인트거래구분오류"; break;
case -301: sMsg = "거래중카드제거"; break;
case -302: sMsg = "단말기 사용자 강제종료"; break;
case -303: sMsg = "기타단말기오류"; break;
case -304: sMsg = "카드삽입되어있음"; break;
case -305: sMsg = "사용자강제취소"; break;
case -401: sMsg = "시리얼포트오픈오류"; break;
case -402: sMsg = "시리얼쓰기오류"; break;
case -403: sMsg = "시리얼읽기오류"; break;
case -404: sMsg = "시리얼닫기오류"; break;
case -405: sMsg = "시리얼타임아웃"; break;
case -411: sMsg = "미전송내역없음"; break;
default: sMsg = "정의되어 있지 않은 메세지" + "[" + nErrCode + "]"; break;
}
}
catch { }
return sMsg;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,582 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.IO;
using System.IO.Ports;
using Cosmos.UserFrame;
using Cosmos.Common;
using Cosmos.CommonManager;
namespace Cosmos.OLEDevice
{
public class DeviceLabelPrinter : ILabelPrinterUs
{
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// Device 상태 정보 객체
/// </summary>
public DeviceStatus devStatus = null;
/// <summary>
/// Pos 상태 정보 객체
/// </summary>
public PosStatus m_cPosStatus = null;
/// <summary>
/// RS232통신을 위한 시리얼포트 객체
/// </summary>
private SerialPort m_serialPort = null;
private BackgroundWorker bw = null;
public DeviceLabelPrinter()
{
try
{
m_cPosStatus = (PosStatus)StateObject.POS;
devStatus = (DeviceStatus)StateObject.DEVICE;
bw = new BackgroundWorker();
DeviceInit();
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
private void DeviceInit()
{
devStatus.LabelPrinter.Data = string.Empty;
}
#region OPEN/CLOSE
/// <summary>
/// 디바이스 OPEN시 처리 함수
/// </summary>
/// <returns></returns>
public bool OpenDevice(string sSerialPort, long lBaudrate)
{
bool bRet = false;
try
{
if (m_serialPort != null)
{
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 start (주석처리)
//m_serialPort.DiscardInBuffer();
//m_serialPort.DiscardOutBuffer();
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 end
m_serialPort.Close();
System.Threading.Thread.Sleep(50);
m_serialPort = null;
}
if (m_serialPort == null)
{
m_serialPort = new SerialPort();
//m_serialPort = new SerialPort(sSerialPort, (int)lBaudrate, Parity.None, 8, StopBits.One);
if (m_serialPort == null)
{
devStatus.LabelPrinter.Open = false;
devStatus.LabelPrinter.Status = "SERIAL PORT ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.LabelPrinter.Status);
return bRet;
}
m_serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
m_serialPort.PinChanged += new SerialPinChangedEventHandler(serialPort_PinChanged);
m_serialPort.ErrorReceived += new SerialErrorReceivedEventHandler(serialPort_ErrorReceived);
m_serialPort.NewLine = "\r\n";
m_serialPort.Encoding = System.Text.Encoding.GetEncoding("ks_c_5601-1987");
m_serialPort.WriteBufferSize = 1024 * 1024;
m_serialPort.PortName = sSerialPort;
m_serialPort.BaudRate = (int)lBaudrate;
m_serialPort.DataBits = 8;
m_serialPort.StopBits = StopBits.One;
m_serialPort.Parity = Parity.None;
m_serialPort.Handshake = Handshake.None;
m_serialPort.ReadTimeout = 500;
m_serialPort.WriteTimeout = 2000;
m_serialPort.Open();
if (m_serialPort.IsOpen == false)
{
devStatus.LabelPrinter.Open = false;
devStatus.LabelPrinter.Status = "SERIAL PORT OPEN ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.LabelPrinter.Status);
return bRet;
}
devStatus.LabelPrinter.Open = true;
devStatus.LabelPrinter.Status = "SUCCESS";
bw.DoWork += OlePosHandler;
bRet = true;
}
else
{
devStatus.LabelPrinter.Open = false;
devStatus.LabelPrinter.Status = "SERIAL PORT ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.LabelPrinter.Status);
return bRet;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
/// <summary>
/// 디바이스 CLOSE시 처리 함수
/// </summary>
/// <returns></returns>
public bool CloseDevice()
{
bool bRet = false;
try
{
if (m_serialPort == null)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Close fail(m_serialPort == null)");
return bRet;
}
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 start
m_serialPort.DiscardInBuffer();
m_serialPort.DiscardOutBuffer();
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 end
m_serialPort.Close();
bRet = true;
m_serialPort = null;
devStatus.LabelPrinter.Status = "CLOSE";
devStatus.LabelPrinter.Open = false;
bw.DoWork -= OlePosHandler;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
#endregion
#region
private void OlePosHandler(object sender, DoWorkEventArgs e)
{
try
{
if (PosOLEDevice.m_delegateOlePos != null)
PosOLEDevice.m_delegateOlePos(PosConst.OPOS_DEVICE.LABELPRINTER, devStatus.Scale.Data, string.Empty, string.Empty);
else
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"이벤트 전송 대상 없음");
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort serialPort = (SerialPort)sender;
byte[] bytRecvBuf = new byte[serialPort.BytesToRead];
try
{
if (!bw.IsBusy)
{
serialPort.Read(bytRecvBuf, 0, bytRecvBuf.Length);
bw.RunWorkerAsync();
}
else
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"이벤트 처리 전 이벤트 발생 불가");
}
}
catch (Exception ex)
{
}
}
private void serialPort_PinChanged(object sender, SerialPinChangedEventArgs e)
{
throw new NotImplementedException();
}
private void serialPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
{
throw new NotImplementedException();
}
#endregion
#region
/// <summary>
/// 일반 제품정보 라벨 프린터 출력 함수
/// </summary>
/// <param name="sProductNm_Ko">제품명(한글) ex)"파인트"</param>
/// <param name="sProductNm_En">제품명(영문) ex)"Pint"</param>
/// <param name="sWeight">중량 ex)"340g"</param>
/// <param name="sStoreNm">점포명 ex)"양재사옥점"</param>
public void PrintProductWeightInfo(string sProductNm_Ko, string sProductNm_En, string sWeight, string sStoreNm)
{
string[] sCommands = null;
try
{
if (m_cPosStatus.Base.OlePosLabelPrinterModel == PosConst.POS_DEVICE_LIST.LABEL_PRINTER.OLD_TYPE)
{
sCommands = new string[] { "CLL\r\n" // 메모리 클리어
, "NEW\r\n" // 새로운 명령어 시작
, "CLIP ON\r\n"
, "NASC 949\r\n" // intermec 한글폰트 설정
, "FONT \"HYGothic-Medium\",12\r\n"
, "PRPOS 0,150\r\n"
//grayber@20180308 시리얼 포트 버퍼 초기화 start
//, "PRTXT \"" + sProductNm_Ko + " : " + sWeight + "\"\r\n"
, "PRTXT \"" + sProductNm_Ko + " : " + string.Format( "{0:#,###}",CmUtil.IntParse(sWeight)) + "\"\r\n"
//grayber@20180308 시리얼 포트 버퍼 초기화 end
, "FONT \"HYGothic-Medium\",9\r\n"
, "PRPOS 0,110\r\n"
, "PRTXT \"" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "\"\r\n"
, "PRPOS 0,70\r\n"
//grayber@20180308 시리얼 포트 버퍼 초기화 start
//, "PRTXT \"" + sStoreNm + "\"\r\n"
, "PRTXT \"" + sStoreNm +" 점" + "\"\r\n"
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 end
, "PF\r\n" };
}
else if(m_cPosStatus.Base.OlePosLabelPrinterModel == PosConst.POS_DEVICE_LIST.LABEL_PRINTER.NEW_TYPE)
{
sCommands = new string[] { "SETUP \"MEDIA,MEDIA SIZE,LENGTH,1200\"\r\n" // 용지출력범위 조정
, "CLL\r\n" // 메모리 클리어
, "NEW\r\n" // 새로운 명령어 시작
, "CLIP ON\r\n"
, "NASC 949\r\n" // intermec 한글폰트 설정
, "FONT \"HYGothic-Medium\",9\r\n"
, "PRPOS 110,290\r\n"
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 start
//, "PRTXT \"" + sStoreNm + "\"\r\n"
, "PRTXT \"" + sStoreNm + " 점" + "\"\r\n"
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 end
, "FONT \"HYGothic-Medium\",5\r\n"
, "PRPOS 110,270\r\n"
, "PRTXT \"" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "\"\r\n"
, "FONT \"HYGothic-Medium\",7\r\n"
, "PRPOS 70,50\r\n"
, "PRTXT \"" + sProductNm_En + "\"\r\n"
, "FONT \"HYGothic-Medium\",9\r\n"
, "PRPOS 70,20\r\n"
, "PRTXT \"" + sProductNm_Ko + "\"\r\n"
, "FONT \"HYGothic-Medium\",14\r\n"
, "PRPOS 170,20\r\n"
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 start
//, "PRTXT \"" + sWeight + "\"\r\n"
, "PRTXT \"" + string.Format( "{0:#,###}",CmUtil.IntParse(sWeight)) + "\"\r\n"
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 end
, "PF\r\n" };
}
else
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Check label printer model configuration.");
return;
}
if(sCommands != null)
WriteCommand(sCommands);
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
/// <summary>
/// 02O(해피오더) 제품정보 라벨 프린터 출력 함수
/// </summary>
/// <param name="sProductNm">제품명 ex)"패밀리"</param>
/// <param name="sOrderNo">주문번호 ex)"123456"</param>
/// <param name="sWeight">중량 ex)"990g"</param>
/// <param name="sContent_1">ex) "플레이버1/플레이버2/플레이버3"</param>
/// <param name="sContent_2">ex) "플레이버4/플레이버5/플레이버6"</param>
/// <param name="sStoreNm">점포명 ex)"양재사옥"</param>
/// <param name="sOrderYmdhms">주문시간 ex)"2016-06-23 14:00:00"</param>
/// <param name="sPackingYmdhms">포장시간 ex)"2016-06-23 14:20:00"</param>
public void PrintO2OProductInfo(string sProductNm, string sOrderNo, string sWeight, string sContent_1, string sContent_2, string sStoreNm, string sOrderYmdhms, string sPackingYmdhms)
{
string[] sCommands = null;
try
{
if (m_cPosStatus.Base.OlePosLabelPrinterModel == PosConst.POS_DEVICE_LIST.LABEL_PRINTER.OLD_TYPE)
{
sCommands = new string[] { "CLL\r\n"
, "NEW\r\n"
, "CLIP ON\r\n"
, "FONT \"HYGothic-Medium\",12\r\n"
, "NASC 949\r\n"
, "PRPOS 0,190\r\n"
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 start
//, "PRTXT \"" + sProductNm + " / " + sWeight + " (" + sOrderNo + ")\"\r\n"
, "PRTXT \"" + sProductNm + " / " + string.Format( "{0:#,###}", CmUtil.IntParse( sWeight)) + " (" + sOrderNo + ")\"\r\n"
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 end
, "FONT \"HYGothic-Medium\",9\r\n"
, "PRPOS 0,150\r\n"
, "PRTXT \"" + sContent_1 + "\"\r\n"
, "PRPOS 0,110\r\n"
, "PRTXT \"" + sContent_2 + "\"\r\n"
, "PRPOS 0,50\r\n"
, "PRTXT \"주문 " + sOrderYmdhms + "\"\r\n"
, "PRPOS 0,10\r\n"
, "PRTXT \"포장 " + sPackingYmdhms + "\"\r\n"
, "PF\r\n" };
}
else if (m_cPosStatus.Base.OlePosLabelPrinterModel == PosConst.POS_DEVICE_LIST.LABEL_PRINTER.NEW_TYPE)
{
sCommands = new string[] { "SETUP \"MEDIA,MEDIA SIZE,Length,1200\"\r\n" // 라벨프린터 용지범위 수정
, "CLL\r\n" // 메모리 클리어
, "NEW\r\n" // 새로운 명령어 시작
, "CLIP ON\r\n"
, "NASC 949\r\n" // intermec 한글폰트 설정
, "FONT \"HYGothic-Medium\",9\r\n"
, "PRPOS 110,290\r\n"
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 start
//, "PRTXT \"" + sStoreNm + "\"\r\n"
, "PRTXT \"" + sStoreNm + " 점" + "\"\r\n"
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 end
, "FONT \"HYGothic-Medium\",5\r\n"
, "PRPOS 90,270\r\n"
, "PRTXT \"주문 " + sOrderYmdhms + "\"\r\n"
, "PRPOS 90,250\r\n"
, "PRTXT \"포장 " + sPackingYmdhms + "\"\r\n"
, "FONT \"HYGothic-Medium\",9\r\n"
, "PRPOS 60,200\r\n"
, "PRTXT \"" + sProductNm + "(" + sOrderNo + ")" + "\"\r\n"
, "FONT \"HYGothic-Medium\",8\r\n"
, "PRPOS 60,170\r\n"
, "PRTXT \"" + sContent_1 + "\"\r\n"
, "PRPOS 60,150\r\n"
, "PRTXT \"" + sContent_2 + "\"\r\n"
, "FONT \"HYGothic-Medium\",14\r\n"
, "PRPOS 200,20\r\n"
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 start
//, "PRTXT \"" + sWeight + "\"\r\n"
, "PRTXT \"" + string.Format("{0:#,###}", CmUtil.IntParse(sWeight)) + "\"\r\n"
//grayber@20180308 라벨프린터 처리, 시리얼 포트 버퍼 초기화 end
, "PF\r\n" };
}
else
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Check label printer model configuration.");
return;
}
if (sCommands != null)
WriteCommand(sCommands);
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
/// <summary>
/// 바코드 출력 라벨 프린터 출력 함수
/// </summary>
/// <param name="sProductNm_Ko">제품명(한글) ex)"파인트"</param>
/// <param name="sBarcode_Data">바코드 ex)"zxcgfdsgfhgsf"</param>
/// <param name="sStoreNm">점포명 ex)"양재사옥점"</param>
public void PrintProductBarCodeInfo(string sProductNm_Ko, string sBarcode_Data, string sStoreNm)
{
string[] sCommands = null;
try
{
if (m_cPosStatus.Base.OlePosLabelPrinterModel == PosConst.POS_DEVICE_LIST.LABEL_PRINTER.OLD_TYPE)
{
sCommands = new string[] { "CLL\r\n" // 메모리 클리어
, "NEW\r\n" // 새로운 명령어 시작
, "CLIP ON\r\n"
, "BF ON\r\n"
, "PP 100,90\r\n"
, "BM 1\r\n"
, "BT \"CODE128\r\n"
, "BF \"Swiss 721 BT\",7\r\n"
, "PB \"" + sBarcode_Data + "\"\r\n"
, "FONT \"HYGothic-Medium\",10\r\n"
, "NASC 949\r\n"
, "PP 20,40\r\n"
, "PT \"" + sProductNm_Ko + "\"\r\n"
, "PF\r\n" };
}
else if (m_cPosStatus.Base.OlePosLabelPrinterModel == PosConst.POS_DEVICE_LIST.LABEL_PRINTER.NEW_TYPE)
{
sCommands = new string[] { "SETUP \"MEDIA,MEDIA SIZE,LENGTH,1200\"\r\n" // 용지출력범위 조정
, "CLL\r\n" // 메모리 클리어
, "NEW\r\n" // 새로운 명령어 시작
, "BF ON\r\n"
, "PP 90,150\r\n"
, "BH 50\r\n"
, "BM 1\r\n"
, "BT \"CODE128\r\n"
, "BF \"Swiss 721 BT\",7\r\n"
, "PB \"" + sBarcode_Data + "\"\r\n"
, "NASC 949\r\n"
, "FONT \"HYGothic-Medium\",9\r\n"
, "PP 130,290\r\n"
, "PT \"" + sStoreNm + "\" 점\r\n"
, "FONT \"HYGothic-Medium\",5\r\n"
, "PP 130,270\r\n"
, "PT \"시간" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "\"\r\n"
, "FONT \"HYGothic-Medium\",9\r\n"
, "PP 90,20\r\n"
, "PT \"" + sProductNm_Ko + "\"\r\n"
, "PF\r\n" };
}
else
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Check label printer model configuration.");
return;
}
if (sCommands != null)
WriteCommand(sCommands);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
/// <summary>
/// Write commands to port.
/// </summary>
/// <param name="sCommands"></param>
private void WriteCommand(string[] sCommands)
{
try
{
if(devStatus.LabelPrinter.Open)
{
foreach(string cmd in sCommands)
{
m_serialPort.Write(cmd);
}
}
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
}
}

View File

@ -0,0 +1,308 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.ComponentModel;
using System.Runtime.InteropServices;
using Cosmos.Common;
using Cosmos.UserFrame;
namespace Cosmos.OLEDevice
{
/// <summary>
/// Line Display 제어 CLASS
/// </summary>
public class DeviceLineDisplay : ILineDisplayUs
{
#region VctCdpStdJo.dll
[DllImport("VctCdpStdJo.dll")]
public static extern int CdpOpen();
[DllImport("VctCdpStdJo.dll")]
public static extern int CdpWrite(string sMsg, int iAmt);
[DllImport("VctCdtpStdJo.dll")]
public static extern int CdpClose();
#endregion
#region
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
public PosStatus m_cPosStatus = new PosStatus();
/// <summary>
/// Device 상태 정보 객체
/// </summary>
public DeviceStatus devStatus = new DeviceStatus();
/// <summary>
/// RS232통신을 위한 시리얼포트 객체
/// </summary>
private SerialPort m_serialPort = null;
//private BackgroundWorker bw = null;
#endregion
#region /
public DeviceLineDisplay()
{
try
{
m_cPosStatus = (PosStatus)StateObject.POS;
devStatus = (DeviceStatus)StateObject.DEVICE;
DeviceStatusInit();
//bw = new BackgroundWorker();
}
catch(Exception ex)
{
}
}
private void DeviceStatusInit()
{
devStatus.LineDisplay.Open = false;
devStatus.LineDisplay.Status = string.Empty;
}
#endregion /
#region OPEN / CLOSE
public bool OpenDevice(string sSerialPort, long lBaudrate)
{
bool bRet = false;
try
{
if (m_serialPort != null)
{
m_serialPort.Close();
System.Threading.Thread.Sleep(50);
m_serialPort = null;
}
if (m_serialPort == null)
{
m_serialPort = new SerialPort();
if (m_serialPort == null)
{
devStatus.Scale.Open = false;
devStatus.Scale.Status = "SERIAL PORT ERROR";
UserLog.WriteLogFile(UserCom.LOG_ERROR,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Scale.Status);
return bRet;
}
m_serialPort.NewLine = "\r\n";
m_serialPort.Encoding = System.Text.Encoding.GetEncoding("ks_c_5601-1987");
m_serialPort.WriteBufferSize = 1024 * 1024;
m_serialPort.PortName = sSerialPort;
m_serialPort.BaudRate = (int)lBaudrate;
m_serialPort.ReadTimeout = 500;
m_serialPort.WriteTimeout = 2000;
if(m_cPosStatus.Base.OleCdpModel == PosConst.POS_DEVICE_LIST.CDP._0_TOSHIBA)
{
m_serialPort.Parity = Parity.Odd;
m_serialPort.DataBits = 8;
m_serialPort.StopBits = StopBits.One;
m_serialPort.Handshake = Handshake.RequestToSend;
m_serialPort.RtsEnable = true;
m_serialPort.DtrEnable = true;
}
else
{
m_serialPort.Parity = Parity.None;
m_serialPort.DataBits = 8;
m_serialPort.StopBits = StopBits.One;
m_serialPort.Handshake = Handshake.None;
m_serialPort.RtsEnable = false;
m_serialPort.DtrEnable = false;
}
m_serialPort.Open();
if (m_serialPort.IsOpen == false)
{
devStatus.LineDisplay.Open = false;
devStatus.LineDisplay.Status = "SERIAL PORT OPEN ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Scale.Status);
return bRet;
}
devStatus.LineDisplay.Open = true;
devStatus.LineDisplay.Status = "SUCCESS";
bRet = true;
}
else
{
devStatus.LineDisplay.Open = false;
devStatus.LineDisplay.Status = "SERIAL PORT ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Scale.Status);
return bRet;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
public bool CloseDevice()
{
bool bRet = false;
try
{
if (m_serialPort == null)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Close fail(m_serialPort == null)");
return bRet;
}
m_serialPort.Close();
bRet = true;
m_serialPort = null;
devStatus.LineDisplay.Status = "CLOSE";
devStatus.LineDisplay.Open = false;
}
catch (Exception ex)
{
devStatus.LineDisplay.Status = "CLOSE EXCEPTION";
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
#endregion OPEN / CLOSE
#region LineDisplay
public bool DisplayText(int iAmt, string sMsg)
{
bool bRet = false;
try
{
DisplayClear();
if (m_cPosStatus.Base.OleCdpModel == PosConst.POS_DEVICE_LIST.CDP._0_TOSHIBA)
{
TransmitCommand(PosConst.CDP_COMMAND.LINE_START_1);
TransmitCommand(Convert.ToString(iAmt));
TransmitCommand(PosConst.CDP_COMMAND.LINE_START_2);
TransmitCommand(sMsg);
}
else if (m_cPosStatus.Base.OleCdpModel == PosConst.POS_DEVICE_LIST.CDP._1_XN)
{
TransmitCommand(string.Format("{0, -20}", Convert.ToString(iAmt)));
TransmitCommand(string.Format("{0, -20}", sMsg));
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
public bool DisplayClear()
{
bool bRet = false;
try
{
if(m_cPosStatus.Base.OleCdpModel == PosConst.POS_DEVICE_LIST.CDP._0_TOSHIBA)
{
TransmitCommand(PosConst.CDP_COMMAND.LINE_CLEAR);
}
else if(m_cPosStatus.Base.OleCdpModel == PosConst.POS_DEVICE_LIST.CDP._1_XN)
{
TransmitCommand(PosConst.CDP_COMMAND.LINE_CLEAR_XN);
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
#endregion
private void TransmitCommand(byte[] aCmd, bool bSleepOn = true)
{
if (m_serialPort.IsOpen == true)
{
int iOffset = 0;
//int iReadBuf = 2048;
int iReadBuf = m_serialPort.WriteBufferSize;
while (true)
{
if (iOffset >= aCmd.Length)
{
break;
}
if (iReadBuf + iOffset > aCmd.Length)
{
iReadBuf = aCmd.Length - iOffset;
}
m_serialPort.Write(aCmd, iOffset, iReadBuf);
iOffset += iReadBuf;
System.Threading.Thread.Sleep(10);
}
//m_serialPort.Write(Encoding.Default.GetString(aCmd, 0, aCmd.Length));
if (bSleepOn == true) System.Threading.Thread.Sleep(30);
}
}
private void TransmitCommand(string sMsg, bool bSleepOn = true)
{
if(m_serialPort.IsOpen == true)
{
m_serialPort.WriteLine(sMsg);
if (bSleepOn == true) System.Threading.Thread.Sleep(30);
}
}
}
}

View File

@ -0,0 +1,184 @@
using System;
using System.Text;
using System.Threading;
using Cosmos.UserFrame;
using Cosmos.Common;
//using Microsoft.PointOfService;
using System.ComponentModel;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : Msr 제어
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.OLEDevice
{
/// <summary>
/// Msr 제어 CLASS
/// </summary>
public class DeviceMsr : IMsrUs
{
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// Device 상태 정보 객체
/// </summary>
public DeviceStatus devStatus = new DeviceStatus();
///// <summary>
///// Pos for .Net Msr 객체
///// </summary>
//private Msr msr = null;
///// <summary>
///// Pos for .Net의 Device 정보를 가져오기 위한 객체
///// </summary>
//private PosExplorer posExplorer = null;
private string m_sTrackData1 = string.Empty;
private string m_sTrackData2 = string.Empty;
private string m_sTrackData3 = string.Empty;
/// <summary>
/// 이벤트 비동기 발생을 위한 대리자
/// </summary>
private BackgroundWorker bw = null;
private int m_nErrorCount = 0;
/// <summary>
/// 생성자
/// </summary>
public DeviceMsr()
{
try
{
//posExplorer = new PosExplorer();
devStatus = (DeviceStatus)StateObject.DEVICE;
DeviceStatusInit();
bw = new BackgroundWorker();
m_nErrorCount = 0;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DevicePosPrinter.DeviceMsr()", ex.Message);
}
}
/// <summary>
/// 장비의 Event 발생 Enable 상태 설정
/// <para>True:사용가능, False:사용불가능</para>
/// </summary>
public bool DeviceEnabled
{
get
{
return false;
}
set
{
try
{
bool bRet = SetDeviceEnabled(value);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceMsr.DeviceEnabled()", ex.Message);
}
}
}
/// <summary>
/// 장비의 Event 발생 Enable 상태 설정
/// <para>True:사용가능, False:사용불가능</para>
/// </summary>
private bool SetDeviceEnabled(bool bEnable)
{
bool bRet = false;
try
{
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceMsr.SetDeviceEnabled()", ex.Message);
devStatus.Msr.Status = "DEVICE ENABLED FAIL";
}
return bRet;
}
/// <summary>
/// 디바이스 Open시 처리함수
/// </summary>
/// <param name="sDeviceType">장비종류(ex- "Msr","PosPrinter","Scanner"...)</param>
/// <param name="sLogicalName">레지스트리 항목(ex- "DefaultMsr","DefaultPosPrinter","DefaultScanner"...)</param>
/// <returns></returns>
public bool OpenDevice(string sDeviceType, string sLogicalName)
{
bool bRet = false;
try
{
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceMsr.OpenDevice()", ex.Message);
devStatus.Msr.Open = false;
devStatus.Msr.Status = "DEVICE OPEN EXCEPTION";
return bRet;
}
return bRet;
}
/// <summary>
/// Msr StateServer 정보 초기화
/// </summary>
private void DeviceStatusInit()
{
devStatus.Msr.Track1Data = "";
devStatus.Msr.Track2Data = "";
devStatus.Msr.Track3Data = "";
devStatus.Msr.DeviceName = "";
devStatus.Msr.Status = "";
devStatus.Msr.Open = false;
}
/// <summary>
/// 디바이스 Close시 처리함수</para>
/// </summary>
/// <returns></returns>
public bool CloseDevice()
{
bool bRet = false;
try
{
devStatus.Msr.Status = "CLOSE";
devStatus.Msr.Open = false;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceMsr.CloseDevice()", ex.Message);
devStatus.Msr.Status = "CLOSE EXCEPTION";
}
return bRet;
}
}
}

View File

@ -0,0 +1,105 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.Common;
using Cosmos.UserFrame;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 아워홈
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.OLEDevice
{
public class DeviceOurHome : IOurHome
{
#region
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// 아워홈 OCX form 객체
/// </summary>
frmDeviceOurHome frmOurHome = null;
#endregion
#region
/// <summary>
/// 생성자
/// </summary>
public DeviceOurHome()
{
try
{
frmOurHome = new frmDeviceOurHome();
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
#region
/// <summary>
/// 고객정보 조회
/// </summary>
/// <param name="sStoreCD"></param>
/// <param name="sRFNo"></param>
/// <param name="sRFType"></param>
/// <returns></returns>
public string Rf_EmpInfo(string sStoreCD, string sRFNo, string sRFType)
{
string sResult = "9^Not Connect DataBase!!!";
try
{
sResult = frmOurHome.Rf_EmpInfo(sStoreCD, sRFNo, sRFType);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sResult;
}
#endregion
#region
/// <summary>
/// 결제
/// </summary>
/// <param name="sStoreCD"></param>
/// <param name="sTranData"></param>
/// <param name="sRfType"></param>
/// <returns></returns>
public string Rf_TransData(string sStoreCD, string sTranData, string sRfType)
{
string sResult = "9^Not Connect DataBase!!!";
try
{
sResult = frmOurHome.Rf_TransData(sStoreCD, sTranData, sRfType);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sResult;
}
#endregion
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,324 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.IO.Ports;
using System.ComponentModel;
using Cosmos.UserFrame;
using Cosmos.Common;
namespace Cosmos.OLEDevice
{
public class DeviceScale : IScaleUs
{
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// Device 상태 정보 객체
/// </summary>
public DeviceStatus devStatus = null;
/// <summary>
/// Pos 상태 정보 객체
/// </summary>
public PosStatus m_cPosStatus = null;
/// <summary>
/// RS232통신을 위한 시리얼포트 객체
/// </summary>
private SerialPort m_serialPort = null;
private BackgroundWorker bw = null;
private string m_sReceivedData = string.Empty;
#region
/// <summary>
/// 생성자
/// </summary>
public DeviceScale()
{
try
{
m_cPosStatus = (PosStatus)StateObject.POS;
devStatus = (DeviceStatus)StateObject.DEVICE;
DeviceStatusInit();
bw = new BackgroundWorker();
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
private void DeviceStatusInit()
{
devStatus.Scale.Open = false;
devStatus.Scale.Data = string.Empty;
devStatus.Scale.Status = string.Empty;
}
#endregion
#region OPEN/CLOSE
/// <summary>
/// 디바이스 OPEN시 처리 함수
/// </summary>
/// <returns></returns>
public bool OpenDevice(string sSerialPort, long lBaudrate)
{
bool bRet = false;
try
{
if (m_serialPort != null)
{
m_serialPort.Close();
System.Threading.Thread.Sleep(50);
m_serialPort = null;
}
if (m_serialPort == null)
{
m_serialPort = new SerialPort();
if( m_serialPort == null)
{
devStatus.Scale.Open = false;
devStatus.Scale.Status = "SERIAL PORT ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Scale.Status);
return bRet;
}
m_serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
//m_serialPort.PinChanged += new SerialPinChangedEventHandler(serialPort_PinChanged);
//m_serialPort.ErrorReceived += new SerialErrorReceivedEventHandler(serialPort_ErrorReceived);
m_serialPort.NewLine = "\r\n";
m_serialPort.Encoding = Encoding.ASCII;
m_serialPort.WriteBufferSize = 512;
m_serialPort.PortName = sSerialPort;
m_serialPort.BaudRate = (int)lBaudrate;
m_serialPort.DataBits = 7;
m_serialPort.StopBits = StopBits.One;
m_serialPort.Parity = Parity.Even;
m_serialPort.Handshake = Handshake.None;
m_serialPort.ReadTimeout = 500;
m_serialPort.WriteTimeout = 2000;
m_serialPort.Open();
if (m_serialPort.IsOpen == false)
{
devStatus.Scale.Open = false;
devStatus.Scale.Status = "SERIAL PORT OPEN ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Scale.Status);
return bRet;
}
devStatus.Scale.Open = true;
devStatus.Scale.Status = "SUCCESS";
bw.DoWork += OlePosHandler;
bRet = true;
}
else
{
devStatus.Scale.Open = false;
devStatus.Scale.Status = "SERIAL PORT ERROR";
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
devStatus.Scale.Status);
return bRet;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
/// <summary>
/// 디바이스 Close시 처리 함수
/// </summary>
/// <returns></returns>
public bool CloseDevice()
{
bool bRet = false;
try
{
if (m_serialPort == null)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Close fail(m_serialPort == null)");
return bRet;
}
m_serialPort.Close();
bRet = true;
m_serialPort = null;
devStatus.Scale.Status = "CLOSE";
devStatus.Scale.Open = false;
bw.DoWork -= OlePosHandler;
}
catch (Exception ex)
{
devStatus.Printer.Status = "CLOSE EXCEPTION";
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
#endregion
#region
private void OlePosHandler(object sender, DoWorkEventArgs e)
{
try
{
if (PosOLEDevice.m_delegateOlePos != null)
PosOLEDevice.m_delegateOlePos(PosConst.OPOS_DEVICE.SCALE, devStatus.Scale.Data, string.Empty, string.Empty);
else
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.INFO_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"이벤트 전송 대상 없음");
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort serialPort = (SerialPort)sender;
string sHeader = string.Empty;
string sWeight = string.Empty;
string sUnit = string.Empty;
try
{
if(!bw.IsBusy)
{
// 데이터의 Terminator는 개행문자(\r\n) 이므로 개행문자 까지 값을 읽는 ReadLine으로 수신
string sBuf = serialPort.ReadLine();
sHeader = sBuf.Substring(0, 2);
// 계량모드에서의 데이터만 처리.
// ST:계량모드, QT:계수모드, US:데이터가 안정되지 않다., OL:데이터가 오버되어 있다.(계량범위를 넘었다.)
if (sHeader.Equals("ST"))
{
sWeight = sBuf.Substring(3, 9);
sUnit = sBuf.Substring(12, 3).Trim();
//devStatus.Scale.Data = sWeight;
devStatus.Scale.Data = sBuf;
devStatus.Scale.Unit = sUnit;
}
bw.RunWorkerAsync();
}
else
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
UserCom.WARNING_LEVEL,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"저울 이벤트 처리 전 이벤트 발생 불가");
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
private void serialPort_PinChanged(object sender, SerialPinChangedEventArgs e)
{
}
private void serialPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
{
}
#endregion
#region 0
/// <summary>
/// 저울 0점 조정
/// </summary>
public void ScaleCalibration()
{
byte[] bytCalibrationCmd = new byte[] { (byte)0x54, (byte)0x0A };
if(devStatus.Scale.Open == true)
{
m_serialPort.Write(bytCalibrationCmd, 0, bytCalibrationCmd.Length);
}
}
#endregion
#region
/// <summary>
/// 무게 전송 요청
/// </summary>
public void ScaleWeigh()
{
byte[] bytWeighCmd = new byte[] { (byte)0x53, (byte)0x0A };
if (devStatus.Scale.Open == true)
{
m_serialPort.Write(bytWeighCmd, 0, bytWeighCmd.Length);
}
}
#endregion
}
}

View File

@ -0,0 +1,507 @@
using System;
using System.Text;
using System.Threading;
using System.Runtime.InteropServices;
//using Microsoft.PointOfService;
using System.ComponentModel;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
using Cosmos.CommonManager;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : Hand Scanner 제어
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.OLEDevice
{
public class DeviceScanner : IScannerUs
{
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// Device 상태 정보 객체
/// </summary>
public DeviceStatus devStatus = new DeviceStatus();
///// <summary>
///// Pos for .Net Scanner 객체
///// </summary>
//private Scanner scanner = null;
///// <summary>
///// Pos for .Net의 Device 정보를 가져오기 위한 객체
///// </summary>
//private PosExplorer posExplorer = null;
private string m_sScanData = string.Empty;
private string m_sScanDataLabel = string.Empty;
private string m_sScanDataType = string.Empty;
private BackgroundWorker bw = null;
private int m_nErrorCount = 0;
/// <summary>
/// 생성자
/// </summary>
public DeviceScanner()
{
try
{
//posExplorer = new PosExplorer();
devStatus = (DeviceStatus)StateObject.DEVICE;
DeviceStatusInit();
bw = new BackgroundWorker();
m_nErrorCount = 0;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DevicePosPrinter.Devicescanner()", ex.Message);
}
}
/// <summary>
/// 디바이스 Open시 처리함수
/// </summary>
/// <param name="sDeviceType">장비종류(ex- "Msr","PosPrinter","Scanner"...)</param>
/// <param name="sLogicalName">레지스트리 항목(ex- "DefaultMsr","DefaultPosPrinter","DefaultScanner"...)</param>
/// <returns></returns>
public bool OpenDevice(string sDeviceType, string sLogicalName)
{
bool bRet = false;
try
{
//DeviceInfo devinfo = null;
//if (sDeviceType == DeviceType.Scanner && sLogicalName == PosConst.OPOS_LDN.SCANNER)
// devinfo = posExplorer.GetDevice(DeviceType.Scanner, PosConst.OPOS_LDN.SCANNER);
//else
//{
// devStatus.Scanner.Open = false;
// devStatus.Scanner.Status = "DEVICE INFO ERROR";
// UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.OpenDevice()", devStatus.Scanner.Status);
// return bRet;
//}
//if (devinfo == null)
//{
// devStatus.Scanner.Open = false;
// devStatus.Scanner.Status = "DEVICE INFO ERROR";
// UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.OpenDevice()", devStatus.Scanner.Status);
// return bRet;
//}
//scanner = (Scanner)posExplorer.CreateInstance(devinfo);
//if (scanner != null)
//{
// scanner.DataEvent += new DataEventHandler(Scanner_DataEvent);
// scanner.ErrorEvent += new DeviceErrorEventHandler(Scanner_ErrorEvent);
// try
// {
// scanner.Open();
// }
// catch (Exception ex)
// {
// devStatus.Scanner.Status = "OPEN FAIL";
// UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.OpenDevice()", devStatus.Scanner.Status + " " + ex.Message);
// //UserLog.WriteAMSLog("DEV", "ERR", "0103", "GunScanner " + devStatus.Scanner.Status);
// return bRet;
// }
// try
// {
// scanner.Claim(1000);
// }
// catch (Exception ex)
// {
// devStatus.Scanner.Status = "CLAIM FAIL";
// UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "Devicescanner.OpenDevice()", devStatus.Scanner.Status + " " + ex.Message);
// //UserLog.WriteAMSLog("DEV", "ERR", "0203", "GunScanner " + devStatus.Scanner.Status);
// //장비관련 AMS 로그 삭제 요청(2015.07.23)
// return bRet;
// }
// try
// {
// scanner.DeviceEnabled = true;
// }
// catch (Exception ex)
// {
// devStatus.Scanner.Status = "DEVICE ENABLED FAIL";
// UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.OpenDevice()", devStatus.Scanner.Status + " " + ex.Message);
// return bRet;
// }
// try
// {
// scanner.DataEventEnabled = true;
// }
// catch (Exception ex)
// {
// devStatus.Scanner.Status = "DATAEVENT ENABLED FAIL";
// UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.OpenDevice()", devStatus.Scanner.Status + " " + ex.Message);
// return bRet;
// }
// scanner.DecodeData = true;
// devStatus.Scanner.Open = true;
// devStatus.Scanner.Status = "Success";
// bw.DoWork += OlePosHandler;
// bRet = true;
//}
//m_nErrorCount = 0;
}
catch (Exception ex)
{
devStatus.Scanner.Open = false;
devStatus.Scanner.Status = "DEVICE OPEN EXCEPTION";
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceScanner.OpenDevice()", devStatus.Scanner.Status + " " + ex.Message);
return bRet;
}
return bRet;
}
///// <summary>
/////
///// </summary>
///// <param name="sender"></param>
///// <param name="e"></param>
//private void Scanner_DataEvent(object sender, DataEventArgs e)
//{
// try
// {
// if(!bw.IsBusy)
// {
// ASCIIEncoding encoder = new ASCIIEncoding();
// m_sScanData = encoder.GetString(scanner.ScanData);
// m_sScanDataLabel = encoder.GetString(scanner.ScanDataLabel);
// m_sScanDataType = scanner.ScanDataType.ToString();
// devStatus.Scanner.Data = m_sScanData;
// devStatus.Scanner.DataLabel = "";
// //for (int i = 0; i < m_sScanDataLabel.Length; i++)
// //{
// // if (CmUtil.IsNumber(m_sScanDataLabel.Substring(i, 1)) == true)
// // devStatus.Scanner.DataLabel += m_sScanDataLabel.Substring(i, 1);
// //}
// string sChgDataLabel = "";
// for (int i = 0; i < scanner.ScanDataLabel.Length; i++)
// {
// if (scanner.ScanDataLabel[i] == (byte)29)
// sChgDataLabel += "|";
// else
// sChgDataLabel += Convert.ToChar(scanner.ScanDataLabel[i]).ToString();
// }
// for (int i = 0; i < sChgDataLabel.Length; i++)
// {
// if (CmUtil.IsNumber(sChgDataLabel.Substring(i, 1)) == true)
// {
// devStatus.Scanner.DataLabel = sChgDataLabel.Substring(i, sChgDataLabel.Length - i);
// break;
// }
// //if (sChgDataLabel.Substring(i, 1) != string.Format("{0}", (char)10) && sChgDataLabel.Substring(i, 1) != string.Format("{0}", (char)13))
// //{
// // devStatus.Scanner.DataLabel = devStatus.Scanner.DataLabel + sChgDataLabel.Substring(i, 1);
// //}
// }
// devStatus.Scanner.DataType = m_sScanDataType;
// UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.Scanner_DataEvent()",
// "Data=" + m_sScanData + ", DataLabel=" + m_sScanDataLabel + "=>" + devStatus.Scanner.DataLabel + ", DataType=" + m_sScanDataType);
// bw.RunWorkerAsync();
// }
// else
// {
// UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.Scanner_DataEvent()", "스캐너 이벤트 처리 전 이벤트 발생 불가");
// //Cosmos.CommonManager.WinManager.ErrorMessage("해당 화면에서 스캐너를 입력 할 수 없습니다.", "스캐너 입력 오류", true);
// //MessageStartTimer(100);
// }
// //if (PosOLEDevice.m_delegateOlePos != null)
// // PosOLEDevice.m_delegateOlePos(PosConst.OPOS_DEVICE.SCANNER, m_sScanData, devStatus.Scanner.DataLabel, m_sScanDataType);
// //else
// //{
// // UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// // "DeviceScanner.Scanner_DataEvent()", "이벤트 전송 대상 없음.");
// // Cosmos.CommonManager.WinManager.ErrorMessage("해당 화면에서 스캐너를 입력 할 수 없습니다.", "스캐너 입력 오류", true);
// //}
// }
// catch (Exception ex)
// {
// UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.Scanner_DataEvent()", ex.Message);
// devStatus.Scanner.Status = "DATAEVENT ERROR";
// }
// finally
// {
// scanner.ClearInput();
// scanner.DataEventEnabled = true;
// }
//}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OlePosHandler(object sender, DoWorkEventArgs e)
{
try
{
if (PosOLEDevice.m_delegateOlePos != null)
PosOLEDevice.m_delegateOlePos(PosConst.OPOS_DEVICE.SCANNER, string.Empty, devStatus.Scanner.DataLabel, string.Empty);
else
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceScanner.OlePosHandler()", "이벤트 전송 대상 없음.");
//Cosmos.CommonManager.WinManager.ErrorMessage("해당 화면에서 스캐너를 입력 할 수 없습니다.", "스캐너 입력 오류", true);
//MessageStartTimer(100);
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceScanner.OlePosHandler()", ex.Message);
}
}
//private void MessageStartTimer(int dueTime)
//{
// try
// {
// Thread thrBeep = new Thread(new ThreadStart(OnBeepSound));
// thrBeep.Start();
// }
// catch (Exception ex)
// {
// UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.MessageStartTimer()", ex.Message);
// }
//}
//private void OnBeepSound()
//{
// try
// {
// CmMessage m_PosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + "PosConfig.INI");
// string sPosUseType = m_PosConfig.GetMessage("olepos").GetMessageValue("PosUseType");
// string sKeyboard = m_PosConfig.GetMessage("control").GetMessageValue("Keyboard");
// for (int i = 0; i < 5; i++)
// {
// WinManager.BuzzSoundOn(sPosUseType, sKeyboard);
// Thread.Sleep(200);
// }
// //CmMessage m_PosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + "PosConfig.INI");
// //string sPosUseType = m_PosConfig.GetMessage("olepos").GetMessageValue("PosUseType");
// //string sKeyboard = m_PosConfig.GetMessage("control").GetMessageValue("Keyboard");
// //for (int i = 0; i < 5; i++)
// //{
// // if (sPosUseType == "2" || sPosUseType == "9" || sPosUseType == "4" || sKeyboard == "2")
// // // POS모델 ==> 2:7K, 9.B20(Toshiba) 4.3000XC(분스)
// // // POS키보드 ==> (0:104, 1:40, 2:32)
// // Console.Beep();
// // else
// // BuzzOn(0, 0);
// // Thread.Sleep(200);
// //}
// }
// catch (Exception ex)
// {
// UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.OnBeepSound()", ex.Message);
// }
//}
//private void MessageStartTimer(int dueTime)
//{
// if (m_nErrorCount < 2)
// {
// Timer t = new Timer(new TimerCallback(MessageTimerProc));
// t.Change(dueTime, 0);
// }
//}
//private void MessageTimerProc(object state)
//{
// m_nErrorCount++;
// // The state object is the Timer object.
// Timer t = (Timer)state;
// t.Dispose();
// Cosmos.CommonManager.WinManager.ErrorMessage("해당 화면에서 스캐너를 입력 할 수 없습니다.", "스캐너 입력 오류", true);
// m_nErrorCount--;
//}
///// <summary>
/////
///// </summary>
///// <param name="sender"></param>
///// <param name="e"></param>
//private void Scanner_ErrorEvent(object sender, DeviceErrorEventArgs e)
//{
// try
// {
// ASCIIEncoding encoder = new ASCIIEncoding();
// m_sScanData = encoder.GetString(scanner.ScanData);
// m_sScanDataLabel = encoder.GetString(scanner.ScanDataLabel);
// m_sScanDataType = scanner.ScanDataType.ToString();
// UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.Scanner_ErrorEvent()",
// "ErrorEvent 발생 ScanData=[" + m_sScanData + "] ScanDataLabel=[" + m_sScanDataLabel + "] ScanDataType=[" + m_sScanDataType + "]");
// devStatus.Scanner.Data = string.Empty;
// devStatus.Scanner.DataLabel = string.Empty;
// scanner.ClearInput();
// scanner.DataEventEnabled = true;
// devStatus.Scanner.Status = "ERROR EVENT";
// }
// catch (Exception ex)
// {
// UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
// "DeviceScanner.Scanner_ErrorEvent()", ex.Message);
// devStatus.Scanner.Status = "ErrorEvent Error 발생";
// }
//}
/// <summary>
/// Scanner StateServer 정보 초기화
/// </summary>
private void DeviceStatusInit()
{
devStatus.Scanner.Data = "";
devStatus.Scanner.DataLabel = "";
devStatus.Scanner.DataType = "";
devStatus.Scanner.DeviceName = "";
devStatus.Scanner.Status = "";
devStatus.Scanner.Open = false;
}
/// <summary>
/// 디바이스 Close시 처리함수</para>
/// </summary>
/// <returns></returns>
public bool CloseDevice()
{
bool bRet = false;
try
{
//if (scanner == null)
// return bRet;
//scanner.DataEventEnabled = false;
//scanner.DeviceEnabled = false;
//scanner.Release();
//scanner.Close();
//scanner = null;
bRet = true;
devStatus.Scanner.Status = "CLOSE";
devStatus.Scanner.Open = false;
bw.DoWork -= OlePosHandler;
}
catch (Exception ex)
{
bw.DoWork -= OlePosHandler;
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceScanner.CloseDevice()", ex.Message);
devStatus.Scanner.Status = "CLOSE EXCEPTION";
}
return bRet;
}
/// <summary>
/// 장비의 Event 발생 Enable 상태 설정
/// <para>True:사용가능, False:사용불가능</para>
/// </summary>
public bool DeviceEnabled
{
get
{
try
{
//if (scanner.DeviceEnabled && scanner.DataEventEnabled)
// return true;
//else
return false;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceScanner.DeviceEnabled()", ex.Message);
return false;
}
}
set
{
try
{
bool bRet = SetDeviceEnabled(value);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceScanner.DeviceEnabled()", ex.Message);
}
}
}
/// <summary>
/// 장비의 Event 발생 Enable 상태 설정
/// <para>True:사용가능, False:사용불가능</para>
/// </summary>
/// <param name="bEnable"></param>
/// <returns></returns>
private bool SetDeviceEnabled(bool bEnable)
{
bool bRet = false;
try
{
//scanner.DataEventEnabled = bEnable;
//scanner.DeviceEnabled = bEnable;
devStatus.Scanner.Status = "DEVICE ENABLED " + bEnable.ToString();
bRet = true;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
"DeviceScanner.SetDeviceEnabled()", ex.Message);
devStatus.Scanner.Status = "DEVICE ENABLED FAIL";
}
return bRet;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,455 @@
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Data;
using System.Runtime.InteropServices;
using Newtonsoft.Json.Linq;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
namespace Cosmos.OLEDevice
{
/// <summary>
/// T-PAY BLE Dongle (paygle)
/// </summary>
class DeviceTPaygle : ITPaygleUs
{
#region ## XPayLib.dll Function
/// <summary>
/// 체크인 된 고객리스트를 수신
/// </summary>
/// <param name="connectList"></param>
/// <returns></returns>
[DllImport("XPayLib.dll")]
private static extern int GetPOSConnectList(byte[] connectList);
/// <summary>
/// 선택고객의 BLE OTB 발급요청(구버전 호환성문제로 유지)
/// </summary>
/// <param name="XPT"></param>
/// <returns></returns>
[DllImport("XPayLib.dll")]
private static extern int ReqPOSProvide(byte[] XPT);
/// <summary>
/// 선택고객의 BLE OTB 발급요청/수신(폰의 OS별로 지원 가능)
/// </summary>
/// <param name="XPT"></param>
/// <param name="param"></param>
/// <returns></returns>
[DllImport("XPayLib.dll")]
private static extern int ReqPOSProvide2(byte[] XPT, byte[] param);
/// <summary>
/// BLE OTB 수신
/// </summary>
/// <param name="KeyRlt"></param>
/// <returns></returns>
[DllImport("XPayLib.dll")]
private static extern int GetOTB(byte[] KeyRlt);
/// <summary>
/// 수신된 비밀번호를 40Byte 해시코드로 변환
/// </summary>
/// <param name="Rlt">HashString 반환버퍼</param>
/// <param name="param">변환할 비밀번호</param>
[DllImport("XPayLib.dll")]
private static extern void PWHashing(byte[] Rlt, byte[] param);
/// <summary>
/// Paygle상태를 체크하고 업데이트가 필요한 경우 업데이트
/// </summary>
/// <returns></returns>
[DllImport("PaygleCheck.dll")]
private static extern int PaygleCheckProc();
//#20170906 T페이 고도화 작업 phj, start
/// 수신된 OTB를 분류 검증 (결제방식, 사전인증 체크 기능)
/// 입력된 OTB의 유효성과, 선인증여부를 확인합니다.
/// </summary>
/// <param name="ClassifyOTB"> 카드번호 </param>
[DllImport("XPayLib.dll")]
private static extern int ClassifyOTB(byte[] ClassifyOTB);
//#20170906 T페이 고도화 작업 phj, end
#endregion
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus posStatus = new PosStatus(); // 기본정보 참조
private DeviceStatus devStatus = new DeviceStatus(); // 장치정보 참조
/// <summary>
/// 생성자
/// </summary>
public DeviceTPaygle()
{
devStatus = (DeviceStatus)StateObject.DEVICE;
posStatus = (PosStatus)StateObject.POS;
}
/// <summary>
/// 체크인 고객리스트 수신
/// </summary>
/// <param name="phoneList">고객리스트(JSON)</param>
/// <returns>체크인된고객수</returns>
/// <remarks>
/// * Connect List (JSON Format)
/// 1 DATETIME YYYYMMDDHHMMSS 결과수신시간/처리시간
/// 2 POSID string 요청POS 식별번호
/// 3 LIST JSONList 체크인 고객리스트
/// 3.1 XPT String 단말기 식별코드 (반복)
/// 3.2 NAME String 단말기 등록이름 (반복)
/// 3.3 NICKNAME String 단말기 등록 닉네임 (반복)
/// 3.4 MDN String 단말기 전화번호 (반복)
/// 3.5 DEVICE_TYPE String “001” : 안드로이드, “002” : 아이폰(iOS 적용 버전)
///
/// * Sample
/// {
/// "DATETIME":"20160329144522",
/// "POSID":"WHONEED010",
/// "LIST":[
/// {"XPT":"********lVGOW48naN0mRPg==", "NAME":"**호", "NICK_NAME":"별명", "MDN":"01089**23**","DEVICE_TYPE":"001"}
/// …(반복)
/// ]
/// }
/// </remarks>
public int GetConnectList(out string phoneList)
{
phoneList = string.Empty;
try
{
byte[] buffer = new byte[1024 * 2];
int ret = GetPOSConnectList(buffer);
if (ret < 0)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"XPayLib.dll GetPOSConnectList Function Error (ErrorCode=" + ret.ToString() + ")");
}
phoneList = Encoding.Default.GetString(buffer).Replace("\0", "");
return ret;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Exception." + ex.Message);
return -9;
}
}
/// <summary>
///
/// </summary>
/// <param name="phoneList"></param>
/// <returns></returns>
public int GetConnectList(out Column.TPAY_CONNECT_INFO phoneList)
{
phoneList = null;
try
{
byte[] buffer = new byte[1024 * 2];
int ret = GetPOSConnectList(buffer);
string result = Encoding.Default.GetString(buffer).Replace("\0", "");
if (ret < 0)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"XPayLib.dll GetPOSConnectList Function Error (ErrorCode=" + ret.ToString() + ")");
return ret;
}
phoneList = new Column.TPAY_CONNECT_INFO();
JObject json = JObject.Parse(result);
phoneList.DATATIME = json["DATETIME"].ToString();
phoneList.POSID = json["POSID"].ToString();
JArray jArray = JArray.Parse(json["LIST"].ToString());
for (var i = 0; i < ret; i++)
{
JObject js = JObject.Parse(jArray[i].ToString());
Column.TPAY_PHONE phone = new Column.TPAY_PHONE();
phone.XPT = js["XPT"].ToString();
phone.NAME = js["NAME"].ToString();
phone.NICK_NAME = js["NICK_NAME"].ToString();
phone.MDN = js["MDN"].ToString();
phone.DEVICE_TYPE = js["DEVICE_TYPE"].ToString();
phoneList.LIST.Add(phone);
}
return ret;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Exception." + ex.Message);
phoneList = null;
return -9;
}
}
/// <summary>
/// 선택된 XPT 단말기(스마트폰)에 BLE BOT 발급 요청
/// </summary>
/// <param name="xpt">결제키 발급대상 단말기 식별코드</param>
/// <param name="posID">요청POS식별번호</param>
/// <param name="deviceType">장비구분(001:안드로이드, 002:iOS)</param>
/// <returns</returns>
public bool ReqPosProvide(string xpt, string posID, string deviceType, out string errMsg)
{
errMsg = string.Empty;
try
{
//byte[] param1 = Encoding.Default.GetBytes(xpt);
//byte[] param2 = Encoding.Default.GetBytes(posID);
//int ret = ReqPOSProvide(param1);
string temp = JObject.FromObject(new { XPT = xpt, DEVICE_TYPE = deviceType }).ToString();
//string temp = "{" + string.Format("\"XPT\":\"{0}\",\"DEVICE_TYPE\":\"{1}\"", xpt, deviceType) + "}";
byte[] param1 = Encoding.Default.GetBytes(xpt);
byte[] param2 = Encoding.Default.GetBytes(temp);
int ret = ReqPOSProvide2(param1, param2);
if (ret < 0)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"XPayLib.dll ReqPOSProvide2 Function Error (ErrorCode=" + ret.ToString() + ")");
}
errMsg = ret == 0 ? string.Empty : "Error Code =" + ret.ToString();
return ret == 0 ? true : false;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Exception." + ex.Message);
errMsg = ex.Message;
return false;
}
}
/// <summary>
/// BLE OTB 수신
/// </summary>
/// <param name="result">성공:OTB, 실패:오류메시지</param>
/// <returns></returns>
/// <remarks>0:성공, -10001:Timeout, -10002:DeviceError</remarks>
public bool GetOTB(out string result)
{
result = string.Empty;
try
{
byte[] buffer = new byte[1024];
int ret = GetOTB(buffer);
switch(ret)
{
case 0:
result = Encoding.Default.GetString(buffer).Replace("\0", "").Trim();
break;
case -10001:
result = "Timeout";
break;
case -10002:
result = "Device Error";
break;
}
if (ret != 0)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"XPayLib.dll GetOTB Function Error (ErrorCode=" + ret.ToString() + ", " + result + ")");
}
return ret == 0 ? true : false;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Exception." + ex.Message);
result = ex.Message;
return false;
}
}
/// <summary>
/// 수신된 비밀번호를 40Byte 해시코드로 변환
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public string GetHashPassword(string password)
{
try
{
byte[] buffer = new byte[40];
byte[] pws = new byte[4];
pws = Encoding.Default.GetBytes(password);
PWHashing(buffer, pws);
return Encoding.Default.GetString(buffer).Replace("\0", "");
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Exception." + ex.Message);
return string.Empty;
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public bool CheckPaygle()
{
try
{
int ret = PaygleCheckProc();
return ret == 0 ? true : false;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"Exception." + ex.Message);
return false;
}
}
//#20170906 T페이 고도화 작업 phj, start
#region ## ClassifyOTBCheck OTB의 ,
public int ClassifyOTBCheck(string pOTB)
{
int ret = 0;
try
{
byte[] GetOTB = Encoding.Default.GetBytes(pOTB);
//입력된 OTB의 유효성과, 선인증여부를 확인
//10 : 구버전의 OTB로 제약 없음
//20 : 할인/결제 가능, 핀패드 입력 필요
//21 : 할인/결제 가능, 핀패드 입력 불필요
//30 : 결제만 가능, 핀패드 입력 필요
//31 : 결제만 가능, 핀패드 입력 불필요
ret = ClassifyOTB(GetOTB);
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"XPayLib.dll ClassifyOTB Function Result : " + ret.ToString() + ", (" + pOTB + ")");
return ret;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"XPayLib.dll ClassifyOTB Function Exception : " + ex.Message + ", Result : " + ret.ToString() + ", (" + pOTB + ")");
return ret;
}
}
#endregion
//#20170906 T페이 고도화 작업 phj, end
//#20170906 T페이 고도화 작업 phj, start
#region ## ClassifyOTBCheckMsg
public string ClassifyOTBCheckMsg(string pOTB)
{
string result = string.Empty;
try
{
switch (pOTB)
{
case "0":
result = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0729);//"유효하지 않은 OTB 입니다"
break;
case "10":
result = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0730);//"구버전의 OTB 입니다"
break;
case "20":
result = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0731);//"통합결제만 가능 합니다(결제비밀번호 필수)";
break;
case "21":
result = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0732);//"통합결제만 가능 합니다(결제비밀번호 불필요)";
break;
case "30":
result = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0733);//"일반결제만 가능 합니다(결제비밀번호 필수)";
break;
case "31":
result = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0734);//"일반결제만 가능 합니다(결제비밀번호 불필요)";
break;
default:
result = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0735);//"해당응답코드없음";
break;
}
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"XPayLib.dll ClassifyOTB Function Msg : " + result + ", (" + pOTB + ")");
return result;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"XPayLib.dll ClassifyOTB Function Msg Exception : " + ex.Message + ", Result : " + result + ", (" + pOTB + ")");
return result;
}
}
#endregion
//#20170906 T페이 고도화 작업 phj, end
}
}

View File

@ -0,0 +1,623 @@
using Cosmos.Common;
using Cosmos.CommonManager;
using Cosmos.ServiceProvider;
using Cosmos.UserFrame;
using System;
using System.Runtime.InteropServices;
using System.Text;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : OCB 직통신
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.OLEDevice
{
/// <summary>
/// OCB 직통신
/// </summary>
public class OCBDirect : IOCBDirect
{
#region MPS.DLL
/// <summary>
/// 가맹점등록
/// </summary>
[DllImport("MPS.dll")]
public static extern int RegisterMcht(string A, string B, string C, string D, string E, string F, string G, string H, string I, string J, byte[] K);
/// <summary>
/// 가맹점등록
/// </summary>
[DllImport("MPS.dll")]
public static extern int AuthMcht(string A, string B, string C, string D, string E, string F, string G, string H, string I, string J, byte[] K);
/// <summary>
/// 포인트조회
/// </summary>
[DllImport("MPS.dll")]
public static extern int InquiryPoint(string A, string B, string C, string D, string E, string F, string G, string H, string I, string J, string K, string L, byte[] M);
/// <summary>
/// 포인트적립
/// </summary>
[DllImport("MPS.dll")]
public static extern int SavePoint(string A, string B, string C, string D, string E, string F, string G, string H,
string I, string J, string K, string L, string M, string N, string O, string P,
string Q, string R, string S, string T, string U, string V, string W, string X,
string Y, int Z, byte[] AA, int BB, byte[] CC, byte[] DD);
/// <summary>
/// 포인트적립취소
/// </summary>
[DllImport("MPS.dll")]
public static extern int CancelSavePoint(string A, string B, string C, string D, string E, string F, string G, string H,
string I, string J, string K, string L, string M, string N, string O, string P,
string Q, string R, string S, string T, string U, string V, byte[] W);
/// <summary>
/// 포인트사용
/// </summary>
[DllImport("MPS.dll")]
public static extern int UsePoint ( string A, string B, string C, string D, string E, string F, string G, string H,
string I, string J, string K, string L, string M, string N, string O, string P,
string Q, string R, string S, string T, byte[] U );
/// <summary>
/// 포인트사용취소
/// </summary>
[DllImport("MPS.dll")]
public static extern int CancelUsePoint(string A, string B, string C, string D, string E, string F, string G, string H,
string I, string J, string K, string L, string M, string N, string O, string P,
string Q, string R, string S, byte[] T);
/// <summary>
/// 포인트할인
/// </summary>
[DllImport("MPS.dll")]
public static extern int DiscountService(string A, string B, string C, string D, string E, string F, string G, string H, string I,
string J, string K, string L, string M, string N, string O, string P, string Q, string R,
string S, string T, byte[] U);
/// <summary>
/// 포인트할인취소
/// </summary>
[DllImport("MPS.dll")]
public static extern int CancelDiscountService ( string A, string B, string C, string D, string E, string F, string G, string H, string I,
string J, string K, string L, string M, string N, string O, string P, string Q, string R,
string S, byte[] T );
/// <summary>
/// 망취소
/// </summary>
[DllImport("MPS.dll")]
public static extern int ForcedCancelUsePoint(string A, string B, string C, string D, string E, string F, string G, string H,
string I, string J, string K, string L, string M, string N, string O, string P,
string Q, string R, string S, byte[] T);
private IDataCommonUs m_cDataCommon = null;
protected SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
#endregion
#region
/// <summary>
/// StateServer Object (StateServer 객체)
/// </summary>
public StateServer StateObject = (StateServer)StateServer.GetInstance();
/// <summary>
/// Pos 상태 정보 객체
/// </summary>
public PosStatus m_cPosStatus = null;
/// <summary>
/// 생성자
/// </summary>
public OCBDirect()
{
try
{
m_cPosStatus = (PosStatus)StateObject.POS;
m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
#region OCB
/// <summary>
/// OCB 직통신
/// </summary>
/// <param name="sTradeDiv"></param>
/// <param name="sPayWayCD"></param>
/// <param name="sPayWayDtlCD"></param>
/// <param name="sTranType"></param>
/// <param name="sCardNo"></param>
/// <param name="sCardPwd"></param>
/// <param name="sPayAmt"></param>
/// <param name="sApprDt"></param>
/// <param name="sApprNo"></param>
/// <param name="sUniqueID"></param>
/// <param name="sResMsg"></param>
/// <param name="aIrtRspDTL"></param>
/// <returns></returns>
public string OCB_Direct_Point(string sTradeDiv, string sPayWayCD, string sPayWayDtlCD, string sTranType, string sCardNo, string sCardPwd, string sPayAmt, string sApprDt, string sApprNo, string sUniqueID, ref string sResMsg, ref string[] aIrtRspDTL)
{
int nRet = -1;
string sRet = UserCom.RST_ERR;
byte[] bRecvData = new byte[4096];
int nNowPos = 0;
string sResCD = "0";
string sApprTm = "";
try
{
#region 0.
// 응답메시지
sResMsg = "";
// VAN 정보 조회
//string sCMPApprID = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.POINT_ITEM, ItemConst.TR_ITEM_ID.POINT_USE.OKCASHBACK_POINT, PosMst.MST_VAN.DATA.CMP_APPR_ID);
//string sApprID = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.POINT_ITEM, ItemConst.TR_ITEM_ID.POINT_USE.OKCASHBACK_POINT, PosMst.MST_VAN.DATA.APPR_ID);
//string sApprPWD = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.POINT_ITEM, ItemConst.TR_ITEM_ID.POINT_USE.OKCASHBACK_POINT, PosMst.MST_VAN.DATA.APPR_PWD);
string sCMPApprID = PosMstManager.GetMstVan(PosMstManager.GetPosOption(POS_OPTION.OPT326), PosMst.MST_VAN.DATA.CMP_APPR_ID);
string sApprID = PosMstManager.GetMstVan(PosMstManager.GetPosOption(POS_OPTION.OPT326), PosMst.MST_VAN.DATA.APPR_ID);
string sApprPWD = PosMstManager.GetMstVan(PosMstManager.GetPosOption(POS_OPTION.OPT326), PosMst.MST_VAN.DATA.APPR_PWD);
// 입력구분
string sInputType = "2";
if (sCardNo.IndexOf("=") > 0) sInputType = "0";
// 추적번호 = POS번호(2) + 일자(DD) + 시간(SSFFF)
if (sTranType != PosConst.POS_OCB_DIRECT.NET_CAN_POINT)
sUniqueID = m_cPosStatus.Base.PosNo.PadLeft(2, '0') + DateTime.Now.ToString("dd") + string.Format("{0:00000}", DateTime.Now.ToString("ssfff")) + "0";
#endregion
// 요청 - 승인로그 저장 (판매구분, [0]결제수단, [1]결제상세코드, [2]전문구분, [3]요청구분, [4]카드번호, [5]결제금액, [6]승인번호, [7]승인일자, [8]승인시간, [9]응답상태값, [10]응답메시지, [11]전문)
string sSendData = sTranType + CmUtil.MidH(sCMPApprID, 0, 4) + DateTime.Now.ToString("yyyyMMdd") + DateTime.Now.ToString("HHmmss") + CmUtil.MidH(sUniqueID, 0, 10) + "A" + "A1" + CmUtil.MidH(sApprID, 0, 15) + CmUtil.MidH(m_cPosStatus.Mst.StorBizPsnNo, 0, 10) + CmUtil.MidH(sApprPWD, 0, 16) + CmUtil.MidH(sCardNo, 0, 16) + CmUtil.MidH(sCardPwd, 0, 16) + CmUtil.MidH(sPayAmt, 0, 16) + CmUtil.MidH(sApprDt, 0, 8) + CmUtil.MidH(sApprNo, 0, 16) + CmUtil.MidH(sUniqueID, 0, 10);
// 승인데이터 중 카드번호 마스킹 처리(2017.05.25)
string sWriteSendData = CmUtil.MakeLogDataToMask(false, sCardNo, sSendData);
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"[SEND:" + sWriteSendData);
m_cDataCommon.SetSaleApprLog(sTradeDiv, new string[] { sPayWayCD, sPayWayDtlCD, sTranType, "S", sCardNo, sPayAmt, "", "", "", "", "", sWriteSendData });
#region 1.
// 1.요청전문
switch (sTranType)
{
case PosConst.POS_OCB_DIRECT.STOR_REGISTER:
{
#region
/*
A CHAR 4 2A10
B CHAR 4
C CHAR 8 :20030924(YYYYMMDD)
D CHAR 6 :130201(HHMMSS)
E CHAR 10 Sequence number( Unique)
F CHAR 1 ID 'A' : OKCashbag
G CHAR 2 'A1' : OK캐쉬백서비스, 'A2' : T포인트서비스 , 'A3' :
H CHAR 15 (8)+SPACE 7
I CHAR 10 :1111111111
J CHAR 16 :1111
*/
nRet = RegisterMcht(sTranType, CmUtil.MidH(sCMPApprID, 0, 4), DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), CmUtil.MidH(sUniqueID, 0, 10), "A", "A1"
, CmUtil.MidH(sApprID, 0, 15), CmUtil.MidH(m_cPosStatus.Mst.StorBizPsnNo, 0, 10), CmUtil.MidH(sApprPWD, 0, 16), bRecvData);
break;
#endregion
}
case PosConst.POS_OCB_DIRECT.STOR_AUTH:
{
#region
/*
A CHAR 4 2A20
B CHAR 4
C CHAR 8 :20030924(YYYYMMDD)
D CHAR 6 :130201(HHMMSS)
E CHAR 10 Sequence number( Unique)
F CHAR 1 ID 'A' : OKCashbag
G CHAR 2 'A1' : OK캐쉬백서비스, 'A2' : T포인트서비스 , 'A3' :
H CHAR 15 (8)+SPACE 7
I CHAR 10 :1111111111
J CHAR 16 :1111
*/
nRet = AuthMcht(sTranType, CmUtil.MidH(sCMPApprID, 0, 4), DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), CmUtil.MidH(sUniqueID, 0, 10), "A", "A1"
, CmUtil.MidH(sApprID, 0, 15), CmUtil.MidH(m_cPosStatus.Mst.StorBizPsnNo, 0, 10), CmUtil.MidH(sApprPWD, 0, 16), bRecvData);
break;
#endregion
}
case PosConst.POS_OCB_DIRECT.INQ_POINT:
{
#region
/*
A CHAR 4 2M30
B CHAR 4
C CHAR 8 :20030924(YYYYMMDD)
D CHAR 6 :130201(HHMMSS)
E CHAR 10 Sequence number( Unique)
F CHAR 1 ID 'A' : OKCashbag
G CHAR 2 'A1' : OK캐쉬백서비스, 'A2' : T포인트서비스 , 'A3' :
H CHAR 15 (8)+SPACE 7
I CHAR 10 :1111111111
J CHAR 19 :1234123412341234 ('-')
K CHAR 19 :1234123412341234 ('-')
L CHAR 2 : 'R1' , :'R2'
*/
nRet = InquiryPoint(sTranType, CmUtil.MidH(sCMPApprID, 0, 4), DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), CmUtil.MidH(sUniqueID, 0, 10), "A", "A1"
, CmUtil.MidH(sApprID, 0, 15), CmUtil.MidH(m_cPosStatus.Mst.StorBizPsnNo, 0, 10), CmUtil.MidH(sCardNo, 0, 19), CmUtil.MidH("", 0, 19), "R1", bRecvData);
break;
#endregion
}
case PosConst.POS_OCB_DIRECT.SAVE_POINT:
{
#region
/*
A CHAR 4 2100
B CHAR 4
C CHAR 8 :20030924(YYYYMMDD)
D CHAR 6 :130201(HHMMSS)
E CHAR 10 Sequence number( Unique)
F CHAR 1 ID 'A' : OKCashbag
G CHAR 2 'A1' : OK캐쉬백서비스, 'A2' : T포인트서비스 , 'A3' :
H CHAR 15 (8)+SPACE 7
I CHAR 10 :1111111111
J CHAR 8 :20030924(YYYYMMDD)
K CHAR 6 :130201(HHMMSS)
L CHAR 1 KEY-IN '0':Swapping, '2':Key-in, 'F': mart only
M CHAR 19 :1234123412341234 ('-')
N CHAR 19 :1234123412341234 ('-')
O CHAR 2 '01' :
P CHAR 2 '11' : , '12' : , '21' : , '22' :
Q CHAR 2 :01, :02
R CHAR 10 :10000
S CHAR 9 :12000 ((T) + (U) + (V) )
T CHAR 9 :10000( )
U CHAR 9 :1000( )
V CHAR 9 :1000( )
W CHAR 1 (0:), (1)
X CHAR 1 +(0), Only(1)
Y CHAR 30 :123456789( Space처리)
Z INT 4 :2 (50 ) ( 0(Zero))
AA STRUCT (18) :8823456789123 ()( )
( CHAR형) (5) :2 ( Space로처리)( )
(6) :123456 ( )
(1)
BB INT 4 :2 (50 ) ( 0(Zero))
CC STRUCT (18) :8823456789123 ()( )
( CHAR형) (6) :2 ( Space로처리) ( )
(6) :123456 ( )
(9) :10000 ( Space로처리)( )
(6) :F10000 ( )
(CHAR *) Type Casting해서 .
*/
nRet = SavePoint(sTranType, CmUtil.MidH(sCMPApprID, 0, 4), DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), CmUtil.MidH(sUniqueID, 0, 10), "A", "A1", CmUtil.MidH(sApprID, 0, 15), CmUtil.MidH(m_cPosStatus.Mst.StorBizPsnNo, 0, 10)
, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss")
, CmUtil.MidH(sInputType, 0, 1), CmUtil.MidH(sCardNo, 0, 19), CmUtil.MidH("", 0, 19), "01", "11", "01"
, CmUtil.MidH(sPayAmt, 0, 10), CmUtil.MidH("", 0, 9), CmUtil.MidH("", 0, 9), CmUtil.MidH("", 0, 9), CmUtil.MidH("", 0, 9)
, CmUtil.MidH("0", 0, 1), "1", CmUtil.MidH("", 0, 30), 0, null, 0, null, bRecvData);
break;
#endregion
}
case PosConst.POS_OCB_DIRECT.SAVE_CAN_POINT:
{
#region
/*
A CHAR 4 2110
B CHAR 4
C CHAR 8 :20030924(YYYYMMDD)
D CHAR 6 :130201(HHMMSS)
E CHAR 10 Sequence number( Unique)
F CHAR 1 ID 'A' : OKCashbag
G CHAR 2 'A1' : OK캐쉬백서비스, 'A2' : T포인트서비스 , 'A3' :
H CHAR 15 (8)+SPACE 7
I CHAR 10 :1111111111
J CHAR 8 :20030924(YYYYMMDD)
K CHAR 6 :130201(HHMMSS)
L CHAR 1 KEY-IN 0':Swapping, '2':Key-in
M CHAR 19 :1234123412341234 ('-')
N CHAR 19 :1234123412341234 ('-')
O CHAR 8 :20030924(YYYYMMDD)
P CHAR 9 :123456789( Space로처리)
Q CHAR 2 '21' :
R CHAR 2 '41' :
S CHAR 10 :10000( Space로처리)
T CHAR 1 +(0), Only(1)
U CHAR 30 :123456789( Space처리)
V CHAR 1 '1' : /, '2' : , '3' : ( )
*/
nRet = CancelSavePoint(sTranType, CmUtil.MidH(sCMPApprID, 0, 4), DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), CmUtil.MidH(sUniqueID, 0, 10), "A", "A1", CmUtil.MidH(sApprID, 0, 15), CmUtil.MidH(m_cPosStatus.Mst.StorBizPsnNo, 0, 10)
, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss")
, CmUtil.MidH(sInputType, 0, 1), CmUtil.MidH(sCardNo, 0, 19), CmUtil.MidH("", 0, 19), CmUtil.MidH(sApprDt, 0, 8), CmUtil.MidH(sApprNo, 0, 9), "21", "41"
, CmUtil.MidH(sPayAmt, 0, 10), "1", CmUtil.MidH("", 0, 30), "1", bRecvData);
break;
#endregion
}
case PosConst.POS_OCB_DIRECT.USE_POINT:
{
#region
/*
A CHAR 4 2400
B CHAR 4
C CHAR 8 :20030924(YYYYMMDD)
D CHAR 6 :130201(HHMMSS)
E CHAR 10 Sequence number( Unique)
F CHAR 1 ID 'A' : OKCashbag
G CHAR 2 'A1' : OK캐쉬백서비스, 'A2' : T포인트서비스 , 'A3' :
H CHAR 15 (8)+SPACE 7
I CHAR 10 :1111111111
J CHAR 8 :20030924(YYYYMMDD)
K CHAR 6 :130201(HHMMSS)
L CHAR 1 KEY-IN 0':Swapping, '2':Key-in
M CHAR 19 :1234123412341234 ('-')
N CHAR 19 :1234123412341234 ('-')
O CHAR 16 :1111
P CHAR 2 '11' :
Q CHAR 2 '40' :
R CHAR 2 '08' :
S CHAR 10 :10000
T CHAR 10 :10000
*/
nRet = UsePoint(sTranType, CmUtil.MidH(sCMPApprID, 0, 4), DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), CmUtil.MidH(sUniqueID, 0, 10), "A", "A1", CmUtil.MidH(sApprID, 0, 15), CmUtil.MidH(m_cPosStatus.Mst.StorBizPsnNo, 0, 10)
, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss")
, CmUtil.MidH(sInputType, 0, 1), CmUtil.MidH(sCardNo, 0, 19), CmUtil.MidH("", 0, 19), CmUtil.MidH(sCardPwd, 0, 16), "11", "40", "08"
, CmUtil.MidH(sPayAmt, 0, 10), CmUtil.MidH("", 0, 10), bRecvData);
break;
#endregion
}
case PosConst.POS_OCB_DIRECT.USE_CAN_POINT:
{
#region
/*
A CHAR 4 2410
B CHAR 4
C CHAR 8 :20030924(YYYYMMDD)
D CHAR 6 :130201(HHMMSS)
E CHAR 10 Sequence number( Unique)
F CHAR 1 ID 'A' : OKCashbag
G CHAR 2 'A1' : OK캐쉬백서비스, 'A2' : T포인트서비스 , 'A3' :
H CHAR 15 (8)+SPACE 7
I CHAR 10 :1111111111
J CHAR 8 :20030924(YYYYMMDD)
K CHAR 6 :130201(HHMMSS)
L CHAR 1 KEY-IN 0':Swapping, '2':Key-in
M CHAR 19 :1234123412341234 ('-')
N CHAR 19 :1234123412341234 ('-')
O CHAR 8 :20030924(YYYYMMDD)
P CHAR 9 :123456789( Space로처리)
Q CHAR 2 '22' :
R CHAR 2 '42' :
S CHAR 10 :10000( Space로처리)
*/
nRet = CancelUsePoint(sTranType, CmUtil.MidH(sCMPApprID, 0, 4), DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), CmUtil.MidH(sUniqueID, 0, 10), "A", "A1", CmUtil.MidH(sApprID, 0, 15), CmUtil.MidH(m_cPosStatus.Mst.StorBizPsnNo, 0, 10)
, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss")
, CmUtil.MidH(sInputType, 0, 1), CmUtil.MidH(sCardNo, 0, 19), CmUtil.MidH("", 0, 19), CmUtil.MidH(sApprDt, 0, 8), CmUtil.MidH(sApprNo, 0, 9), "22", "42"
, CmUtil.MidH(sPayAmt, 0, 10), bRecvData);
break;
#endregion
}
case PosConst.POS_OCB_DIRECT.NET_CAN_POINT:
{
#region
/*
A CHAR 4 2410
B CHAR 4
C CHAR 8 :20030924(YYYYMMDD)
D CHAR 6 :130201(HHMMSS)
E CHAR 10
F CHAR 1 ID 'A' : OKCashbag
G CHAR 2 'A1' : OK캐쉬백서비스, 'A2' : T포인트서비스 , 'A3' :
H CHAR 15 (8)+SPACE 7
I CHAR 10 :1111111111
J CHAR 8 :20030924(YYYYMMDD)
K CHAR 6 :130201(HHMMSS)
L CHAR 1 KEY-IN 0':Swapping, '2':Key-in
M CHAR 19 :1234123412341234 ('-')
N CHAR 19 :1234123412341234 ('-')
O CHAR 8 :20030924(YYYYMMDD)
P CHAR 9 :123456789( Space로처리)
Q CHAR 2 '21' : '22' :
R CHAR 2 '41' : '42' :
S CHAR 10 :10000( Space로처리)
*/
nRet = ForcedCancelUsePoint(PosConst.POS_OCB_DIRECT.NET_CAN_POINT, CmUtil.MidH(sCMPApprID, 0, 4), DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), CmUtil.MidH(sUniqueID, 0, 10), "A", "A1", CmUtil.MidH(sApprID, 0, 15), CmUtil.MidH(m_cPosStatus.Mst.StorBizPsnNo, 0, 10)
, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss")
, CmUtil.MidH(sInputType, 0, 1), CmUtil.MidH(sCardNo, 0, 19), CmUtil.MidH("", 0, 19), CmUtil.MidH(sApprDt, 0, 8), CmUtil.MidH(sApprNo, 0, 9), (sTranType == PosConst.POS_OCB_DIRECT.SAVE_CAN_POINT ? "21" : "22"), (sTranType == PosConst.POS_OCB_DIRECT.SAVE_CAN_POINT ? "41" : "42")
, CmUtil.MidH(sPayAmt, 0, 10), bRecvData);
break;
#endregion
}
}
#endregion
#region 2.
// 2.처리결과
if (nRet != 1)
{
sResMsg = ErrCodeToMsg(nRet); // 오류
sResCD = "1";
}
#endregion
#region 3.()
else
{
// 정상응답
switch (sTranType)
{
case PosConst.POS_OCB_DIRECT.STOR_REGISTER: // 가맹점 등록
case PosConst.POS_OCB_DIRECT.STOR_AUTH: // 가맹점 인증
{
nNowPos = 0;
aIrtRspDTL = new string[Column.POS_REQ_OCB_AUTHMCHT.LEN.Length];
ItemColumn.ParseMessage(Column.POS_REQ_OCB_AUTHMCHT.LEN, Column.POS_REQ_OCB_AUTHMCHT.TYPE, bRecvData, ref nNowPos, ref aIrtRspDTL);
if (aIrtRspDTL[Column.POS_REQ_OCB_AUTHMCHT.SEQ.RES_CD].Trim() != "1")
{
// 응답오류
sResMsg = aIrtRspDTL[Column.POS_REQ_OCB_AUTHMCHT.SEQ.RES_MSG].Trim();
sResCD = "1";
}
else
{
// 정상
sResMsg = "OK";
sResCD = "0";
sRet = UserCom.RST_OK;
}
break;
}
case PosConst.POS_OCB_DIRECT.INQ_POINT: // 포인트 조회
{
nNowPos = 0;
aIrtRspDTL = new string[Column.POS_REQ_OCB_INQPOINT.LEN.Length];
ItemColumn.ParseMessage(Column.POS_REQ_OCB_INQPOINT.LEN, Column.POS_REQ_OCB_INQPOINT.TYPE, bRecvData, ref nNowPos, ref aIrtRspDTL);
if (aIrtRspDTL[Column.POS_REQ_OCB_INQPOINT.SEQ.RES_CD].Trim() != "1")
{
// 응답오류
sResMsg = aIrtRspDTL[Column.POS_REQ_OCB_INQPOINT.SEQ.RES_MSG1].Trim();
sResCD = "1";
}
else
{
// 정상
sResMsg = "OK";
sResCD = "0";
sRet = UserCom.RST_OK;
}
break;
}
case PosConst.POS_OCB_DIRECT.SAVE_POINT: // 포인트 적립
case PosConst.POS_OCB_DIRECT.USE_POINT: // 포인트 사용
{
nNowPos = 0;
aIrtRspDTL = new string[Column.POS_REQ_OCB_POINT.LEN.Length];
ItemColumn.ParseMessage(Column.POS_REQ_OCB_POINT.LEN, Column.POS_REQ_OCB_POINT.TYPE, bRecvData, ref nNowPos, ref aIrtRspDTL);
if (aIrtRspDTL[Column.POS_REQ_OCB_POINT.SEQ.RES_CD].Trim() != "1")
{
// 응답오류
sResMsg = aIrtRspDTL[Column.POS_REQ_OCB_POINT.SEQ.RES_MSG1].Trim();
sResCD = "1";
}
else
{
// 정상
sResMsg = "OK";
sResCD = "0";
sApprDt = aIrtRspDTL[Column.POS_REQ_OCB_POINT.SEQ.APPR_DATE].Trim();
sApprTm = aIrtRspDTL[Column.POS_REQ_OCB_POINT.SEQ.APPR_TIME].Trim();
sApprNo = aIrtRspDTL[Column.POS_REQ_OCB_POINT.SEQ.APPR_NO].Trim();
sRet = UserCom.RST_OK;
}
break;
}
case PosConst.POS_OCB_DIRECT.SAVE_CAN_POINT: // 포인트 적립 취소
case PosConst.POS_OCB_DIRECT.USE_CAN_POINT: // 포인트 사용 취소
case PosConst.POS_OCB_DIRECT.NET_CAN_POINT: // 포인트 망 취소
{
nNowPos = 0;
aIrtRspDTL = new string[Column.POS_REQ_OCB_CANPOINT.LEN.Length];
ItemColumn.ParseMessage(Column.POS_REQ_OCB_CANPOINT.LEN, Column.POS_REQ_OCB_CANPOINT.TYPE, bRecvData, ref nNowPos, ref aIrtRspDTL);
if (aIrtRspDTL[Column.POS_REQ_OCB_CANPOINT.SEQ.RES_CD].Trim() != "1")
{
// 응답오류
sResMsg = aIrtRspDTL[Column.POS_REQ_OCB_CANPOINT.SEQ.RES_MSG1].Trim();
sResCD = "1";
}
else
{
// 정상
sResMsg = "OK";
sResCD = "0";
sApprDt = aIrtRspDTL[Column.POS_REQ_OCB_CANPOINT.SEQ.APPR_DATE].Trim();
sApprTm = aIrtRspDTL[Column.POS_REQ_OCB_CANPOINT.SEQ.APPR_TIME].Trim();
sApprNo = aIrtRspDTL[Column.POS_REQ_OCB_CANPOINT.SEQ.APPR_NO].Trim();
sRet = UserCom.RST_OK;
}
break;
}
}
}
// 응답 - 승인로그 저장 (판매구분, [0]결제수단, [1]결제상세코드, [2]전문구분, [3]요청구분, [4]카드번호, [5]결제금액, [6]승인번호, [7]승인일자, [8]승인시간, [9]응답상태값, [10]응답메시지, [11]전문)
string sRecvData = ByteToString(bRecvData);
// 승인데이터 중 카드번호 마스킹 처리(2017.05.25)
string sWriteRecvData = CmUtil.MakeLogDataToMask(false, sCardNo, sRecvData.Trim());
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"[RECV:" + sWriteRecvData);
m_cDataCommon.SetSaleApprLog(sTradeDiv, new string[] { sPayWayCD, sPayWayDtlCD, sTranType, "R"
, sCardNo, sPayAmt
, sApprNo, (sApprDt == "" ? DateTime.Now.ToString("yyyyMMdd") : sApprDt), (sApprTm == "" ? DateTime.Now.ToString("HHmmss") : sApprTm)
, sResCD
, sResMsg
, sWriteRecvData });
#endregion
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
sResMsg = ex.Message;
}
return sRet;
}
#endregion
#region
/// <summary>
/// 응답코드
/// </summary>
/// <param name="nErrCode"></param>
/// <returns></returns>
private string ErrCodeToMsg(int nErrCode)
{
string sMsg = string.Empty;
try
{
switch (nErrCode)
{
case -1 : sMsg = "실패 - 함수Parameter값 이상"; break;
case 2 : sMsg = "암호화 실패 - 암호화, 복호화오류"; break;
case 3 : sMsg = "소켓 초기화 실패 - 네트워크 단절에 의한 소켓 초기화 실패"; break;
case 4 : sMsg = "소켓 Send 실패"; break;
case 5 : sMsg = "소켓 Receive 실패"; break;
case 6 : sMsg = "소켓 타임아웃"; break;
case 7 : sMsg = "인터넷 연결 실패"; break;
default: sMsg = "알 수 없는 에러"; break;
}
}
catch { }
return sMsg;
}
#endregion
#region Byte
/// <summary>
/// Byte배열을 string으로 변환 (Byte배열의 null(0x00)값 제거)
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
private string ByteToString(byte[] data)
{
int inx = Array.FindIndex(data, 0, (x) => x == 0x0);
if (inx >= 0)
{
return Encoding.Default.GetString(data, 0, inx);
}
else
{
return Encoding.Default.GetString(data);
}
}
#endregion
}
}

View File

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" 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>{404D077E-7CD4-49E6-8219-E79A28749DE0}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Cosmos.OLEDevice</RootNamespace>
<AssemblyName>Agent.OLEDevice</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>Svn</SccProjectName>
<SccLocalPath>Svn</SccLocalPath>
<SccAuxPath>Svn</SccAuxPath>
<SccProvider>SubversionScc</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\BIN\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\..\BIN\Agent.OLEDevice.XML</DocumentationFile>
<PlatformTarget>x86</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="AxInterop.SPCNSECUCATLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\AxInterop.SPCNSECUCATLib.dll</HintPath>
</Reference>
<Reference Include="AxInterop.SPCNSECUMSRLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\AxInterop.SPCNSECUMSRLib.dll</HintPath>
</Reference>
<Reference Include="Cosmos.BaseFrame, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.BaseFrame.dll</HintPath>
</Reference>
<Reference Include="Cosmos.ServiceProvider, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.ServiceProvider.dll</HintPath>
</Reference>
<Reference Include="Cosmos.UserFrame, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Cosmos.UserFrame.dll</HintPath>
</Reference>
<Reference Include="Microsoft.PointOfService, Version=1.12.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Microsoft.PointOfService.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\BIN\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Activator.cs" />
<Compile Include="DeviceCashdrawer.cs" />
<Compile Include="DeviceCatTerminal.cs" />
<Compile Include="DeviceICReader.cs" />
<Compile Include="DeviceLabelPrinter.cs" />
<Compile Include="DeviceLineDisplay.cs" />
<Compile Include="DeviceScale.cs" />
<Compile Include="DeviceOurHome.cs" />
<Compile Include="OCBDirect.cs" />
<Compile Include="DeviceTPaygle.cs" />
<Compile Include="frmDeviceOurHome.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmDeviceOurHome.Designer.cs">
<DependentUpon>frmDeviceOurHome.cs</DependentUpon>
</Compile>
<Compile Include="DeviceMsr.cs" />
<Compile Include="DevicePosPrinter.cs" />
<Compile Include="DeviceScanner.cs" />
<Compile Include="DeviceSignPad.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="frmDeviceOurHome.resx">
<DependentUpon>frmDeviceOurHome.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<COMReference Include="AxOUT_STOR_RF">
<Guid>{0C240E1D-AB66-45B9-A7D5-A523F36009C2}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>aximp</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Library\CommonManager\CommonManager.csproj">
<Project>{670a81be-cee3-4c29-846d-a37652ca270d}</Project>
<Name>CommonManager</Name>
</ProjectReference>
<ProjectReference Include="..\..\Library\Common\Common.csproj">
<Project>{a5b7accd-79eb-4261-bd36-01ab484ad8e3}</Project>
<Name>Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>copy .\IC\Agent.OLEDevice.dll .\Agent.OLEDevice.dll</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>copy .\Agent.OLEDevice.dll .\IC\Agent.OLEDevice.dll</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
// 어셈블리와 관련된 정보를 수정하려면
// 이 특성 값을 변경하십시오.
[assembly: AssemblyTitle("OLEDevice")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("OLEDevice")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("cec0ee82-9b18-4cf3-b591-21e8967580dc")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,65 @@
namespace Cosmos.OLEDevice
{
partial class frmDeviceOurHome
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmDeviceOurHome));
this.axOUT_STORE_RF1 = new AxOUT_STOR_RF.AxOUT_STORE_RF();
((System.ComponentModel.ISupportInitialize)(this.axOUT_STORE_RF1)).BeginInit();
this.SuspendLayout();
//
// axOUT_STORE_RF1
//
this.axOUT_STORE_RF1.Enabled = true;
this.axOUT_STORE_RF1.Location = new System.Drawing.Point(95, 12);
this.axOUT_STORE_RF1.Name = "axOUT_STORE_RF1";
this.axOUT_STORE_RF1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axOUT_STORE_RF1.OcxState")));
this.axOUT_STORE_RF1.Size = new System.Drawing.Size(34, 36);
this.axOUT_STORE_RF1.TabIndex = 0;
//
// frmDeviceOurHome
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(380, 325);
this.Controls.Add(this.axOUT_STORE_RF1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "frmDeviceOurHome";
this.ShowInTaskbar = false;
this.Text = "frmOurHome";
((System.ComponentModel.ISupportInitialize)(this.axOUT_STORE_RF1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private AxOUT_STOR_RF.AxOUT_STORE_RF axOUT_STORE_RF1;
}
}

View File

@ -0,0 +1,237 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cosmos.Common;
using Cosmos.ServiceProvider;
using Cosmos.CommonManager;
using Cosmos.UserFrame;
using Cosmos.BaseFrame;
namespace Cosmos.OLEDevice
{
public partial class frmDeviceOurHome : Form
{
#region
protected SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
protected StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
protected PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조
/// <summary>
/// 빌딩코드
/// </summary>
///private string m_sRegStorCode = "";
/// <summary>
/// 서버 IP
/// </summary>
private string m_sServerIP = "";
/// <summary>
/// DB 스키마
/// </summary>
private string m_sDBChema = "";
/// <summary>
/// ID
/// </summary>
private string m_sID = "";
/// <summary>
/// Password
/// </summary>
private string m_sPassword = "";
#endregion
public frmDeviceOurHome()
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
//this.UpdateStyles();
//m_sRegStorCode = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.EMP_PAY_ITEM, ItemConst.TR_ITEM_ID.EMP_PAY.OURHOME, PosMst.MST_VAN.DATA.CMP_APPR_ID);
m_sServerIP = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.EMP_PAY_ITEM, ItemConst.TR_ITEM_ID.EMP_PAY.OURHOME, PosMst.MST_VAN.DATA.IP);
// 접속정보
LoadPosConfig_OurHome();
if (m_sDBChema == null || m_sDBChema.Trim() == "") SavePosConfig_OurHome();
}
#region /
/// <summary>
/// DB 접속
/// </summary>
/// <param name="sStorCode"></param>
/// <param name="sServerIP"></param>
/// <param name="sDBSchema"></param>
/// <param name="sID"></param>
/// <param name="sPassword"></param>
/// <returns></returns>
private string DBConnect(string sStorCode, string sServerIP, string sDBSchema, string sID, string sPassword)
{
string sResult = "9^Not Connect DataBase!!!";
try
{
sResult = axOUT_STORE_RF1.DbConnect(sStorCode, sServerIP, sDBSchema, sID, sPassword);
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sResult;
}
/// <summary>
/// DB 접속 해제
/// </summary>
/// <returns></returns>
private void DBDisConnect()
{
try
{
axOUT_STORE_RF1.DbDisConnect();
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
#region
/// <summary>
/// 고객정보 조회
/// </summary>
/// <param name="sStoreCD"></param>
/// <param name="sRFNo"></param>
/// <param name="sRFType"></param>
/// <returns></returns>
public string Rf_EmpInfo(string sStoreCD, string sRFNo, string sRFType)
{
string sResult = "9^Not Connect DataBase!!!";
string[] aRecvData = null;
try
{
sResult = DBConnect(sStoreCD, m_sServerIP, m_sDBChema, m_sID, m_sPassword);
aRecvData = sResult.Split(new string[] { "^" }, StringSplitOptions.None);
if (aRecvData[0] != "1") return sResult;
sResult = axOUT_STORE_RF1.Rf_EmpInfo(sStoreCD, sRFNo, sRFType);
DBDisConnect();
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sResult;
}
#endregion
#region
/// <summary>
/// 결제
/// </summary>
/// <param name="sTranData"></param>
/// <param name="sRfType"></param>
/// <returns></returns>
public string Rf_TransData(string sStoreCD, string sTranData, string sRfType)
{
string sResult = "9^Not Connect DataBase!!!";
string[] aRecvData = null;
try
{
sResult = DBConnect(sStoreCD, m_sServerIP, m_sDBChema, m_sID, m_sPassword);
aRecvData = sResult.Split(new string[] { "^" }, StringSplitOptions.None);
if (aRecvData[0] != "1") return sResult;
sResult = axOUT_STORE_RF1.Rf_TransData(sTranData, sRfType);
DBDisConnect();
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return sResult;
}
#endregion
#region SavePosConfig Pos (PosConfig.INI)
/// <summary>
/// POS환경설정정보 파일저장 (PosConfig.INI)
/// </summary>
/// <returns></returns>
public string SavePosConfig_OurHome()
{
string sRet = UserCom.RST_ERR;
try
{
CmMessage cmPosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig);
cmPosConfig.GetMessage("OURHOME".Trim()).MakeMessageOverWrite("DBChema".Trim(), "OURHOME");
cmPosConfig.GetMessage("OURHOME".Trim()).MakeMessageOverWrite("ID".Trim(), "OUT_STORE");
cmPosConfig.GetMessage("OURHOME".Trim()).MakeMessageOverWrite("Password".Trim(), "OUT_STORE");
// 파일저장
cmPosConfig.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig);
LoadPosConfig_OurHome();
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#endregion
#region LoadPosConfig Pos (PosConfig.INI)
/// <summary>
/// POS환경설정정보 파일읽기 (PosConfig.INI)
/// </summary>
/// <returns></returns>
public string LoadPosConfig_OurHome()
{
string sRet = UserCom.RST_ERR;
try
{
CmMessage cmPosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig);
m_sDBChema = cmPosConfig.GetMessage("OURHOME").GetMessageValue("DBChema");
m_sID = cmPosConfig.GetMessage("OURHOME").GetMessageValue("ID");
m_sPassword = cmPosConfig.GetMessage("OURHOME").GetMessageValue("Password");
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#endregion
}
}

View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="axOUT_STORE_RF1.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAXQAAAAIB
AAAAAQAAAAAAAAAAAAAAAEgAAACTsgAASAAAAAMACAAL8ldHIAAAAF8AZQB4AHQAZQBuAHQAeACEAwAA
AwAIAAryV0fg////XwBlAHgAdABlAG4AdAB5ALkDAAAL
</value>
</data>
</root>

BIN
Dropimage/Bl_bar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

BIN
Dropimage/Bl_discount.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

BIN
Dropimage/Bl_num1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
Dropimage/Bl_num2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
Dropimage/Bl_num3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
Dropimage/Btn_toggle_on.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
Dropimage/Ic_Basket.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
Dropimage/Ic_ai_off.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
Dropimage/Ic_ai_on.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
Dropimage/Ic_mylist_d.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
Dropimage/Ic_mylist_n.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
Dropimage/Ic_mylist_s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
Dropimage/Ic_mylist_x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
Dropimage/Ic_order_off.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
Dropimage/Ic_order_on.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Some files were not shown because too many files have changed in this diff Show More