spc-kiosk-pb/Service/BsvOpenClose/DeviceService.cs
2019-06-16 14:12:09 +09:00

213 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.Common;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
namespace Cosmos.Service
{
class DeviceService : IServiceUs
{
private SManager sManager = new SManager();
private IPosPrinterUs m_objPrinter = null; // 영수증 프린터
private IICReaderUs m_objICReader = null; // IC 리더기
private ICatTerminalUs m_objCatTerminal = null; // CAT 단말기
private ILabelPrinterUs m_cLabelPrinterUs = null; // 라벨프린터
private ICashdrawerUs m_cCashdrawerUs = null; // 돈통
private IScaleUs m_cScaleUs = null; // 저울
private ISignPadUs m_cDeviceSignPad = null; // 서명패드
private IDeviceUpdate m_SignPadUpdate = null; // 서명패드 업데이트
//private IWirelessScaleUs m_cWirelessScaleUs = null; // 무선저울
//private IScannerUs m_cScannerUs = null; // 스캐너
private DeviceStatus m_cDevStatus = new DeviceStatus(); // 디바이스 관리
private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
public DeviceService()
{
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cDevStatus = (DeviceStatus)StateObject.DEVICE;
m_objPrinter = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER);
m_objICReader = (IICReaderUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER);
m_objCatTerminal = (ICatTerminalUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_CATTERMINAL);
m_cLabelPrinterUs = (ILabelPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_LABELPRINTER);
m_cCashdrawerUs = (ICashdrawerUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_CASHDRAWER);
m_cScaleUs = (IScaleUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_SCALE);
m_cDeviceSignPad = (ISignPadUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_SIGNPAD);
m_SignPadUpdate = m_SignPadUpdate = (IDeviceUpdate)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.SIGNPAD_UPDATE);
//m_cWirelessScaleUs = (IWirelessScaleUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_WIRELESSSCALE);
//m_cScannerUs = (IScannerUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_SCANNER);
}
public string Execute(string[] aParam)
{
bool lRet = false;
string sRet = UserCom.RST_ERR;
string[] arRet = null;
string sDeviceName = aParam[0];
switch (sDeviceName)
{
case "POSPRINTER":
lRet = m_objPrinter.OpenDevice(PosConst.OPOS_DEVICE.POSPRINTER, PosConst.OPOS_LDN.POSPRINTER);
System.Threading.Thread.Sleep(100);
if (lRet == true)
{
//#20171212 프린터 상태 체크 여부 추가 start
//0: 체크, 1: 체크안함
//기존
/*
if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON)
{
lRet = m_objPrinter.CheckPrinter();
}
*/
//변경
if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON &&
m_cPosStatus.Base.OlePosPrinterCheckYn == "0")
{
lRet = m_objPrinter.CheckPrinter();
}
//#20171212 프린터 상태 체크 여부 추가 end
System.Threading.Thread.Sleep(100);
if (lRet == true)
{
sRet = UserCom.RST_OK;
}
}
// 주변장비 체크 후 프린터 Close(2017.06.15)
m_objPrinter.CloseDevice();
System.Threading.Thread.Sleep(100);
break;
case "SCANNER":
//lRet = m_cScannerUs.OpenDevice(PosConst.OPOS_DEVICE.SCANNER, PosConst.OPOS_LDN.SCANNER);
//System.Threading.Thread.Sleep(100);
//if (lRet == true)
//{
// sRet = UserCom.RST_OK;
//}
//m_cScannerUs.CloseDevice();
//System.Threading.Thread.Sleep(100);
break;
case "ICREADER":
arRet = m_objICReader.GetStatus_ICReader(PosConst.POS_CARD_READER_DEVICE_TYPE.IC_READER);
System.Threading.Thread.Sleep(100);
if (arRet != null)
{
if (arRet[0] == " ")
{
sRet = UserCom.RST_OK;
}
}
break;
case "CATTERMINAL":
lRet = m_objCatTerminal.SPCNSecuCatStatus();
if (lRet == true)
{
sRet = UserCom.RST_OK;
}
break;
case "CASHDRAWER":
lRet = m_cCashdrawerUs.OpenDevice(PosConst.OPOS_DEVICE.CASHDRAWER, PosConst.OPOS_LDN.CASHDRAWER);
System.Threading.Thread.Sleep(100);
if (lRet == true)
{
sRet = UserCom.RST_OK;
}
m_cCashdrawerUs.CloseDevice();
System.Threading.Thread.Sleep(100);
break;
case "SCALE":
lRet = m_cScaleUs.OpenDevice(m_cPosStatus.Base.OlePosScaleSerialPortNumber, m_cPosStatus.Base.OlePosScaleSerialBaudRate);
System.Threading.Thread.Sleep(100);
if (lRet == true)
{
sRet = UserCom.RST_OK;
}
m_cScaleUs.CloseDevice();
System.Threading.Thread.Sleep(100);
break;
case "SCALEPOLEDISP":
lRet = m_cScaleUs.OpenDevice(m_cPosStatus.Base.OleScalePoleDisplayPortNumber, m_cPosStatus.Base.OleScalePoleDisplayBaudRate);
System.Threading.Thread.Sleep(100);
if (lRet == true)
{
sRet = UserCom.RST_OK;
}
m_cScaleUs.CloseDevice();
System.Threading.Thread.Sleep(100);
break;
case "SIGNPAD":
string retVal = string.Empty;
if (m_cDeviceSignPad.GetSignPadInfo(ref retVal) == true)
{
m_SignPadUpdate.SignPadModelCheck();
System.Threading.Thread.Sleep(100);
sRet = UserCom.RST_OK;
}
System.Threading.Thread.Sleep(100);
break;
case "LABELPRINTER":
lRet = m_cLabelPrinterUs.OpenDevice(m_cPosStatus.Base.OlePosLabelPrinterSerialPortNumber, m_cPosStatus.Base.OlePosLabelPrinterSerialBaudRate);
System.Threading.Thread.Sleep(100);
if (lRet == true)
{
sRet = UserCom.RST_OK;
}
m_cLabelPrinterUs.CloseDevice();
System.Threading.Thread.Sleep(100);
break;
case "MSR":
//lRet = m_cLabelPrinterUs.OpenDevice(aParam[1], UsUtil.GetValueToLong(aParam[2]));
//System.Threading.Thread.Sleep(50);
//if (lRet == true)
//{
// sRet = UserCom.RST_OK;
//}
//m_cLabelPrinterUs.CloseDevice();
//System.Threading.Thread.Sleep(50);
sRet = m_cDevStatus.Msr.UseYn == true ? UserCom.RST_OK : UserCom.RST_ERR;
break;
case "NETWORK":
sRet = SetServerSysDateTime();
break;
default:
sRet = UserCom.RST_ERR;
break;
}
return sRet;
}
#region -
/// <summary>
/// 서버 시간 동기화
/// </summary>
public string SetServerSysDateTime()
{
string sRet = UserCom.RST_ERR;
try
{
// 서버 시간 동기화
ISvr2Tran m_cSvr2Tran = (ISvr2Tran)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SVR2TRAN);
sRet = m_cSvr2Tran.ServerSysDateTime();
}
catch (Exception ex)
{
}
return sRet;
}
#endregion
}
}