5701 lines
332 KiB
C#
5701 lines
332 KiB
C#
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
#define PRT_ERROR //적용시 주석 해제
|
||
//출력 할때 마다 open, close 하는 부분 한번만 하도록 수정
|
||
//#define PRT_OPENCLOSE //적용시 주석 해제
|
||
//전체 버퍼 한번에 출력 하도록 수정
|
||
//#define PRT_ALLWRITE //적용시 주석 해제
|
||
//프린터 ErrorReceived
|
||
//#define PRT_RECVERR //적용시 주석 해제
|
||
//Printer Thread Event Wait
|
||
//#define PRT_WAITEVENT //적용시 주석 해제
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//O2Printer.exe 통해 프린터 출력
|
||
#define PRT_O2PRINTER // 적용시 주석 해제
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
using System;
|
||
using System.IO;
|
||
using System.IO.Ports;
|
||
using System.ComponentModel;
|
||
|
||
using Cosmos.UserFrame;
|
||
using Cosmos.BaseFrame;
|
||
using Cosmos.Common;
|
||
using Cosmos.CommonManager;
|
||
|
||
using Microsoft.PointOfService;
|
||
using System.Drawing;
|
||
using System.Text;
|
||
using System.Collections;
|
||
using System.Runtime.InteropServices;
|
||
using System.Threading;
|
||
|
||
/*-----------------------------------------------------------------------------------------------*/
|
||
// 설 명 : PosPrinter 제어
|
||
// 작 성 자 :
|
||
// 변경 이력 :
|
||
/*-----------------------------------------------------------------------------------------------*/
|
||
namespace Cosmos.OLEDevice
|
||
{
|
||
|
||
/// <summary>
|
||
/// PosPrinter 제어 CLASS
|
||
/// </summary>
|
||
public class DevicePosPrinter : IPosPrinterUs
|
||
{
|
||
|
||
public enum Printer_Interface
|
||
{
|
||
_USB_ = 0,
|
||
_COM_,
|
||
};
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public enum Barcode_Type
|
||
{
|
||
_UPC_A_,
|
||
_UPC_E_,
|
||
_JAN13_EAN13_,
|
||
_JAN8_EAN8_,
|
||
_CODE39_,
|
||
_ITF25_,
|
||
_CODABAR_,
|
||
_CODE93_, //1~255byte
|
||
_CODE128_ //2~255byte
|
||
};
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public enum AlignmentR { _Align_left_, _Center_, _Align_right }
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 오픈 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern bool REXOD_Setup_Printer(Printer_Interface nType, int dirverNum, int nbps);
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 초기화 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern int REXOD_Printer_DeInit();
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 출력 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern int REXOD_Print_CharW([MarshalAs(UnmanagedType.LPWStr)] string printData);
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 enum 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern int REXOD_Enum_Printer(Printer_Interface nType, int[] list);
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 용지 자르기 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern int REXOD_Part_Cut();
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 용지 자르기(전체) 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern int REXOD_Full_Cut();
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 마지막 라인 추가 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern int REXOD_Enter_With_nLine(int lineCount);
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 라인 볼드 처리 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern int REXOD_Bold_Word(bool bold);
|
||
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 라인 오른쪽으로 이동 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern bool REXOD_Set_This_Line_Start_Position(int leftMargin);
|
||
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 바코드 높이 조절 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern bool REXOD_Set_Barcode_Height(byte height);
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 바코드 출력 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern bool REXOD_Print_Barcode(Barcode_Type BarcodeType, byte[] pDate, int DateNum);
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 바코드 출력 함수
|
||
/// </summary>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern bool REXOD_Select_Barcode_Alignment(AlignmentR newAlignment);
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="newAlignment"></param>
|
||
/// <returns></returns>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern bool REXOD_Select_Alignment(AlignmentR newAlignment);
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 이미지 출력 함수
|
||
/// </summary>
|
||
/// <param name="bitmapImage"></param>
|
||
/// <returns></returns>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
//public static extern bool REXOD_Print_Bitmap(IntPtr bitmapImage);
|
||
public static extern bool REXOD_Print_Bitmap(IntPtr bitmapImage);
|
||
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 폰트 2배
|
||
/// </summary>
|
||
/// <param name="state"></param>
|
||
/// <returns></returns>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern bool REXOD_Double_Height(bool state);
|
||
|
||
/// <summary>
|
||
/// 영수증 프린터 폰트 2배
|
||
/// </summary>
|
||
/// <param name="state"></param>
|
||
/// <returns></returns>
|
||
[DllImport("REXOD_SDK.dll")]
|
||
public static extern bool REXOD_Double_Width(bool state);
|
||
|
||
|
||
private enum BarcodeType { CODE93, CODE128 };
|
||
private enum Alignment { CENTER, LEFT, RIGHT };
|
||
private enum HRIPosition { NO_PRINT, ABOVE, BELOW, ABOVE_BELOW };
|
||
/// <summary>
|
||
/// StateServer Object (StateServer 객체)
|
||
/// </summary>
|
||
public StateServer StateObject = (StateServer)StateServer.GetInstance();
|
||
/// <summary>
|
||
/// Device 상태 정보 객체
|
||
/// </summary>
|
||
public DeviceStatus devStatus = null;
|
||
public PosStatus m_cPosStatus = null;
|
||
|
||
/// <summary>
|
||
/// Posfor.Net PosPrinter 객체
|
||
/// </summary>
|
||
private PosPrinter posprinter = null;
|
||
/// <summary>
|
||
/// Pos for .Net의 Device 정보를 가져오기 위한 객체
|
||
/// </summary>
|
||
private PosExplorer posExplorer = null;
|
||
|
||
/// <summary>
|
||
/// StatusUpdateEvent의 Status 정보 저장
|
||
/// </summary>
|
||
private int m_sUpdateStatus = 0;
|
||
///// <summary>
|
||
///// Bitmap 상단 Logo 설정 성공 여부 플래그
|
||
///// <para>true:SetBitmap성공, false:SetBitmap실패</para>
|
||
///// </summary>
|
||
//private bool SetTopLogo = false;
|
||
///// <summary>
|
||
///// Bitmap 하단 Logo 설정 성공 여부 플래그
|
||
///// <para>true:SetBitmap성공, false:SetBitmap실패</para>
|
||
///// </summary>
|
||
//private bool SetBottomLogo = false;
|
||
///// <summary>
|
||
///// ErrorEvent의 Error응답 정보 저장
|
||
///// </summary>
|
||
//private ErrorResponse m_sErrorResponse;
|
||
|
||
/// <summary>
|
||
/// RS232통신을 위한 시리얼포트 객체
|
||
/// </summary>
|
||
private SerialPort m_serialPort = null;
|
||
|
||
private BackgroundWorker bw = null;
|
||
|
||
// Printer Status/Error 응답 이벤트
|
||
|
||
private string DELIMETER = "^:|";
|
||
|
||
private bool m_bFreeEvents;
|
||
public bool FreeEvents
|
||
{
|
||
get { return m_bFreeEvents; }
|
||
set { m_bFreeEvents = value; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// Printer Daemon 작동 여부
|
||
/// </summary>
|
||
private bool m_PrinterDaemonRunning = true;
|
||
/// <summary>
|
||
/// Printer Daemon Thread
|
||
/// </summary>
|
||
private Thread m_tPrtDaemon = null;
|
||
/// <summary>
|
||
/// Thread Waiting Time(스레드 대기시간)
|
||
/// </summary>
|
||
private int m_ThreadSleepTerm = 1000;
|
||
|
||
private static ArrayList m_PrtBuffer;
|
||
|
||
private const string CMD_OPEN_CASHDRAWER = "_OPEN_A_CASHDRAWER_";
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//변경
|
||
#if(PRT_O2PRINTER)
|
||
int lRecvLen = 20;
|
||
byte[] bytRecvBuff = new byte[1024];
|
||
int lTimeout = 1000;
|
||
private TcpSocket m_cPrtSocket = null;
|
||
#endif
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
#if(PRT_WAITEVENT)
|
||
private AutoResetEvent m_AutoResetEvent = null;
|
||
#endif
|
||
|
||
/// <summary>
|
||
/// 생성자
|
||
/// </summary>
|
||
public DevicePosPrinter()
|
||
{
|
||
try
|
||
{
|
||
try
|
||
{
|
||
|
||
#if(PRT_WAITEVENT)
|
||
// TEST::Printer Thread Event Wait
|
||
m_AutoResetEvent = new AutoResetEvent(false);
|
||
#endif
|
||
|
||
posExplorer = new PosExplorer();
|
||
}
|
||
catch (Exception ex) { }
|
||
devStatus = (DeviceStatus)StateObject.DEVICE;
|
||
m_cPosStatus = (PosStatus)StateObject.POS;
|
||
DeviceStatusInit();
|
||
bw = new BackgroundWorker();
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Printer StateServer 정보 초기화
|
||
/// </summary>
|
||
private void DeviceStatusInit()
|
||
{
|
||
devStatus.Printer.TopLogoFileName = "";
|
||
devStatus.Printer.BottomLogoFileName = "";
|
||
devStatus.Printer.DeviceName = "";
|
||
devStatus.Printer.Status = "";
|
||
devStatus.Printer.ErrorStatus = "";
|
||
devStatus.Printer.Open = false;
|
||
}
|
||
|
||
#region PrinterDaemon Start/Stop
|
||
/// <summary>
|
||
/// Printer Daemon Start
|
||
/// </summary>
|
||
public void StartPrinterDaemon()
|
||
{
|
||
try
|
||
{
|
||
m_PrtBuffer = new ArrayList();
|
||
|
||
m_tPrtDaemon = new Thread(new ThreadStart(ThreadPrtDaemonRun));
|
||
m_PrinterDaemonRunning = true;
|
||
m_tPrtDaemon.Start();
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Printer Daemon Stop
|
||
/// </summary>
|
||
public void StopPrinterDaemon()
|
||
{
|
||
try
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Printer Daemon Stop!!!");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"Printer Daemon Stop!!!");
|
||
#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 (함수명))
|
||
"Printer Daemon Stop!!!");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
// 통신서버 Send Terminated (SC Send 종료)
|
||
m_PrinterDaemonRunning = false;
|
||
|
||
#if(PRT_WAITEVENT)
|
||
m_AutoResetEvent.Set();
|
||
#endif
|
||
|
||
int count = 0;
|
||
//while (count < 10)
|
||
while (count < 5)
|
||
{
|
||
if (m_tPrtDaemon != null && m_tPrtDaemon.IsAlive) m_PrinterDaemonRunning = false;
|
||
else break;
|
||
|
||
count++;
|
||
Thread.Sleep(300);
|
||
}
|
||
|
||
if (count >= 10)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 Printer Daemon Stop!!!");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 Printer Daemon Stop!!!");
|
||
#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 (함수명))
|
||
"Force Printer Daemon Stop!!!");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
m_tPrtDaemon.Abort();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
#endregion PrinterThread Start/Stop
|
||
|
||
#region Printer Buffer 관련
|
||
/// <summary>
|
||
/// Printer Buffer 초기화
|
||
/// </summary>
|
||
public void PrinterBufferClear()
|
||
{
|
||
try
|
||
{
|
||
m_PrtBuffer.Clear();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
|
||
public ArrayList GetPrinterBuffer()
|
||
{
|
||
return m_PrtBuffer;
|
||
}
|
||
|
||
public void AddToPrinterBuffer(byte[] arData)
|
||
{
|
||
try
|
||
{
|
||
m_PrtBuffer.Add(arData);
|
||
|
||
#if(PRT_WAITEVENT)
|
||
m_AutoResetEvent.Set();
|
||
#endif
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region Printer Daemon Main
|
||
/// <summary>
|
||
/// Printer Daemon Run
|
||
/// </summary>
|
||
private void ThreadPrtDaemonRun()
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//출력 할때 마다 open, close 하는 부분 한번만 하도록 수정
|
||
#if(PRT_OPENCLOSE) //프린터 포트 동작 변경시
|
||
bool bClsRet = false;
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
bool bRet = false;
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Printer Daemon Run!!");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"Printer Daemon Run!!");
|
||
#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 (함수명))
|
||
"Printer Daemon Run!!");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
while(m_PrinterDaemonRunning)
|
||
{
|
||
try
|
||
{
|
||
#if(PRT_WAITEVENT)
|
||
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 (함수명))
|
||
"▶▶▶ Printer Device Thread Event WaitOne ");
|
||
m_AutoResetEvent.WaitOne();
|
||
m_AutoResetEvent.Reset();
|
||
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 (함수명))
|
||
"▶▶▶ Printer Device Thread Event Run ");
|
||
#endif
|
||
|
||
ArrayList alBuffer = GetPrinterBuffer();
|
||
|
||
if(alBuffer.Count > 0)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Prineter Buffer Count : " + alBuffer.Count);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Prineter Buffer Count : " + alBuffer.Count);
|
||
#else
|
||
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 (함수명))
|
||
"Prineter Buffer Count : " + alBuffer.Count);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
bRet = OpenDevice(PosConst.OPOS_DEVICE.POSPRINTER, PosConst.OPOS_LDN.POSPRINTER);
|
||
if( bRet == false)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Failed to open printer device ...");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Failed to open printer device ...");
|
||
#else
|
||
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 (함수명))
|
||
"Failed to open printer device ...");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
}
|
||
System.Threading.Thread.Sleep(100);
|
||
|
||
if (devStatus.Printer.Open == true)
|
||
{
|
||
//MemoryStream stream = new MemoryStream();
|
||
//BinaryWriter bw = new BinaryWriter(stream);
|
||
|
||
bool bCheckPrinter = true;
|
||
|
||
//#20171212 프린터 상태 체크 여부 추가 start
|
||
//0: 체크, 1: 체크안함
|
||
//기존
|
||
/*
|
||
if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON)
|
||
{
|
||
bCheckPrinter = CheckPrinter();
|
||
}
|
||
*/
|
||
//변경
|
||
if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON &&
|
||
m_cPosStatus.Base.OlePosPrinterCheckYn == "0")
|
||
{
|
||
bCheckPrinter = CheckPrinter();
|
||
}
|
||
//#20171212 프린터 상태 체크 여부 추가 end
|
||
|
||
//if (CheckPrinter() == true)
|
||
if(bCheckPrinter == false)
|
||
{
|
||
//프린터 상태 체크 실패 시에도 Port Close(20170508-조충연K)
|
||
WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0691));
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"CheckPrinter() Failed...");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"CheckPrinter() Failed...");
|
||
#else
|
||
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 (함수명))
|
||
"CheckPrinter() Failed...");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
}
|
||
//else
|
||
//{
|
||
//헬스체크 후 응답값과 상관없이 프린트 출력업무 수행.
|
||
for (int nBufCnt = 0; nBufCnt < alBuffer.Count; nBufCnt++)
|
||
{
|
||
if (devStatus.Printer.Open == false) break;
|
||
byte[] arPrtData = (byte[])alBuffer[nBufCnt];
|
||
|
||
//#20180123 프린터 다운 현상 관련 로그 추가 start
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Prineter nBufCnt : " + nBufCnt);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Prineter nBufCnt : " + nBufCnt);
|
||
#else
|
||
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 (함수명))
|
||
"Prineter nBufCnt : " + nBufCnt);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
//#20180123 프린터 다운 현상 관련 로그 추가 end
|
||
|
||
if (Encoding.UTF8.GetString(arPrtData).Equals(CMD_OPEN_CASHDRAWER) == true)
|
||
{
|
||
switch (m_cPosStatus.Base.OlePosPrinterModel)
|
||
{
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._6_P2C:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_1NR://2018.01.22;"7:4610_1NR" 모델 추가, 처리는 _1_EPSON 과 동일;girak.kim
|
||
default:
|
||
//bw.Write(PosConst.ESCP_COMMAND.OPEN_CASHDRAWER);
|
||
TransmitCommand(PosConst.ESCP_COMMAND.OPEN_CASHDRAWER);
|
||
break;
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TOSHIBA:
|
||
//bw.Write(PosConst.ESCP_COMMAND.OPEN_CASHDRAWER_FOR_TOSHIBA);
|
||
TransmitCommand(PosConst.ESCP_COMMAND.OPEN_CASHDRAWER_FOR_TOSHIBA);
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//bw.Write(arPrtData);
|
||
//bw.Write(string.Format("{0}{1}", (char)13, (char)10));
|
||
TransmitCommand(arPrtData);
|
||
}
|
||
}
|
||
//}
|
||
|
||
|
||
//bw.Flush();
|
||
//TransmitCommand(stream.ToArray());
|
||
|
||
PrinterBufferClear();
|
||
}
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//출력 할때 마다 open, close 하는 부분 한번만 하도록 수정
|
||
//기존
|
||
/*
|
||
bRet = CloseDevice();
|
||
if(bRet == false)
|
||
{
|
||
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 (함수명))
|
||
"Failed to close printer device ...");
|
||
}
|
||
*/
|
||
//변경
|
||
#if(PRT_OPENCLOSE) //프린터 포트 동작 변경시
|
||
#else
|
||
bRet = CloseDevice();
|
||
if(bRet == false)
|
||
{
|
||
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 (함수명))
|
||
"Failed to close printer device ...");
|
||
}
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
#if(PRT_WAITEVENT)
|
||
#else
|
||
int nNowSleepTerm = 0;
|
||
while (nNowSleepTerm < m_ThreadSleepTerm)
|
||
{
|
||
if (m_PrinterDaemonRunning == false) break;
|
||
Thread.Sleep(100);
|
||
nNowSleepTerm += 100;
|
||
}
|
||
#endif
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Printer Daemon Exception : " + ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Printer Daemon Exception : " + ex.Message);
|
||
#else
|
||
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 (함수명))
|
||
"Printer Daemon Exception : " + ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Printer Daemon Exit!!");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"Printer Daemon Exit!!");
|
||
#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 (함수명))
|
||
"Printer Daemon Exit!!");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//출력 할때 마다 open, close 하는 부분 한번만 하도록 수정
|
||
#if(PRT_OPENCLOSE) //프린터 포트 동작 변경시
|
||
bClsRet = CloseDevice();
|
||
if (bClsRet == false)
|
||
{
|
||
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 (함수명))
|
||
"Failed to close printer device ...");
|
||
}
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
}
|
||
#endregion
|
||
|
||
#region Convert Graysacle Image
|
||
[DllImport("gdi32.dll")]
|
||
public static extern bool DeleteObject(IntPtr hObject);
|
||
|
||
[DllImport("user32.dll")]
|
||
public static extern IntPtr GetDC(IntPtr hwnd);
|
||
|
||
[DllImport("gdi32.dll")]
|
||
public static extern IntPtr CreateCompatibleDC(IntPtr hdc);
|
||
|
||
[DllImport("user32.dll")]
|
||
public static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc);
|
||
|
||
[DllImport("gdi32.dll")]
|
||
public static extern int DeleteDC(IntPtr hdc);
|
||
|
||
[DllImport("gdi32.dll")]
|
||
public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);
|
||
|
||
[DllImport("gdi32.dll")]
|
||
public static extern int BitBlt(IntPtr hdcDst, int xDst, int yDst, int w, int h, IntPtr hdcSrc, int xSrc, int ySrc, int rop);
|
||
static int SRCCOPY = 0x00CC0020;
|
||
|
||
[DllImport("gdi32.dll")]
|
||
static extern IntPtr CreateDIBSection(IntPtr hdc, ref BITMAPINFO bmi, uint Usage, out IntPtr bits, IntPtr hSection, uint dwOffset);
|
||
|
||
static uint BI_RGB = 0;
|
||
static uint DIB_RGB_COLORS = 0;
|
||
[StructLayout(LayoutKind.Sequential)]
|
||
private struct BITMAPINFO
|
||
{
|
||
public uint biSize;
|
||
public int biWidth, biHeight;
|
||
public short biPlanes, biBitCount;
|
||
public uint biCompression, biSizeImage;
|
||
public int biXPelsPerMeter, biYPelsPerMeter;
|
||
public uint biClrUsed, biClrImportant;
|
||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
|
||
public uint[] cols;
|
||
}
|
||
#endregion
|
||
|
||
#region OPEN/RESET/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.Printer.UseYn == false)
|
||
{
|
||
return bRet;
|
||
}
|
||
|
||
switch(m_cPosStatus.Base.OlePosPrinterController)
|
||
{
|
||
case PosConst.POS_DEVICE_CONTROLLER.OPOS:
|
||
bRet = OpenDeviceByOPOS(sDeviceType, sLogicalName);
|
||
break;
|
||
case PosConst.POS_DEVICE_CONTROLLER.RS232:
|
||
bRet = OpenDeviceByRS232(m_cPosStatus.Base.OlePosPrinterSerialPortNumber, m_cPosStatus.Base.OlePosPrinterSerialBaudRate);
|
||
break;
|
||
}
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
return bRet;
|
||
}
|
||
/// <summary>
|
||
/// OPOS사용 디바이스 Open시 처리함수
|
||
/// </summary>
|
||
/// <param name="sDeviceType">장비종류(ex- "Msr","PosPrinter","Scanner"...)</param>
|
||
/// <param name="sLogicalName">레지스트리 항목(ex- "DefaultMsr","DefaultPosPrinter","DefaultScanner"...)</param>
|
||
/// <returns></returns>
|
||
public bool OpenDeviceByOPOS(string sDeviceType, string sLogicalName)
|
||
{
|
||
bool bRet = false;
|
||
//SetTopLogo = false;
|
||
//SetBottomLogo = false;
|
||
try
|
||
{
|
||
if(devStatus.Printer.Open == true)
|
||
{
|
||
return true;
|
||
}
|
||
|
||
DeviceInfo devinfo = null;
|
||
|
||
if (sDeviceType == DeviceType.PosPrinter && sLogicalName == PosConst.OPOS_LDN.POSPRINTER)
|
||
devinfo = posExplorer.GetDevice(DeviceType.PosPrinter, PosConst.OPOS_LDN.POSPRINTER);
|
||
else
|
||
{
|
||
devStatus.Printer.Open = false;
|
||
devStatus.Printer.Status = "DEVICE INFO ERROR";
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
return bRet;
|
||
}
|
||
|
||
if (devinfo == null)
|
||
{
|
||
devStatus.Printer.Open = false;
|
||
devStatus.Printer.Status = "DEVICE INFO ERROR";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return bRet;
|
||
}
|
||
|
||
posprinter = (PosPrinter)posExplorer.CreateInstance(devinfo);
|
||
|
||
if (posprinter != null)
|
||
{
|
||
posprinter.StatusUpdateEvent += new StatusUpdateEventHandler(Printer_StatusUpdateEvent);
|
||
posprinter.ErrorEvent += new DeviceErrorEventHandler(Printer_ErrorEvent);
|
||
|
||
try
|
||
{
|
||
posprinter.Open();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "OPEN FAIL";
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"Exception :" + "DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return bRet;
|
||
}
|
||
|
||
try
|
||
{
|
||
posprinter.Claim(1000);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "CLAIM FAIL";
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"Exception :" + "DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return bRet;
|
||
}
|
||
|
||
try
|
||
{
|
||
posprinter.DeviceEnabled = true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "DEVICE ENABLED FAIL";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"Exception :" + "DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return bRet;
|
||
}
|
||
|
||
try
|
||
{
|
||
posprinter.AsyncMode = true;
|
||
posprinter.RecLineChars = 42;
|
||
posprinter.RecLetterQuality = true;
|
||
posprinter.RecLineSpacing = 20;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "RecLetterQuality 설정 Fail";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"Exception :" + "DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", devStatus.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return bRet;
|
||
}
|
||
|
||
devStatus.Printer.DeviceName = devinfo.ServiceObjectName;
|
||
devStatus.Printer.Open = true;
|
||
devStatus.Printer.Status = "SUCCESS";
|
||
devStatus.Printer.ErrorStatus = "OK";
|
||
|
||
bw.DoWork += OlePosHandler;
|
||
bRet = true;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"Exception :" + "DevicePosPrinter.OpenDeviceByOPOS()", ex.Message);
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.OpenDeviceByOPOS()", ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
devStatus.Printer.Open = false;
|
||
devStatus.Printer.Status = "DEVICE OPEN EXCEPTION";
|
||
bRet = false;
|
||
}
|
||
return bRet;
|
||
}
|
||
/// <summary>
|
||
/// RS232사용 디바이스 Open시 처리함수
|
||
/// </summary>
|
||
/// <param name="sSerialPort">SerialPort 번호</param>
|
||
/// <param name="lBaudrate">Baudrate</param>
|
||
/// <returns></returns>
|
||
public bool OpenDeviceByRS232(string sSerialPort, long lBaudrate)
|
||
{
|
||
bool bRet = false;
|
||
|
||
try
|
||
{
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//변경
|
||
#if(PRT_O2PRINTER)
|
||
int iRet = OpenPrtTcpDevice("127.0.0.1", 9110);
|
||
if (iRet == UserCom.OK)
|
||
{
|
||
devStatus.Printer.Open = true;
|
||
devStatus.Printer.Status = "SUCCESS";
|
||
devStatus.Printer.ErrorStatus = "OK";
|
||
|
||
ResetDevice();
|
||
|
||
bRet = true;
|
||
}
|
||
else
|
||
{
|
||
devStatus.Printer.Open = false;
|
||
devStatus.Printer.Status = "TCP CONNECT ERROR";
|
||
bRet = false;
|
||
}
|
||
|
||
return bRet;
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//출력 할때 마다 open, close 하는 부분 한번만 하도록 수정
|
||
//기존
|
||
/*
|
||
if (m_serialPort != null)
|
||
{
|
||
// add by wani(20170914) - Serial Port Close 보완(Buffer 초기화 추가)
|
||
m_serialPort.DiscardInBuffer();
|
||
m_serialPort.DiscardOutBuffer();
|
||
m_serialPort.Close();
|
||
m_serialPort.Dispose();
|
||
System.Threading.Thread.Sleep(50);
|
||
m_serialPort = null;
|
||
}
|
||
*/
|
||
//변경
|
||
#if(PRT_OPENCLOSE) //프린터 포트 동작 변경시
|
||
if (m_serialPort != null)
|
||
{
|
||
if (m_serialPort.IsOpen == false)
|
||
{
|
||
// add by wani(20170914) - Serial Port Close 보완(Buffer 초기화 추가)
|
||
m_serialPort.DiscardInBuffer();
|
||
m_serialPort.DiscardOutBuffer();
|
||
m_serialPort.Close();
|
||
m_serialPort.Dispose();
|
||
System.Threading.Thread.Sleep(50);
|
||
m_serialPort = null;
|
||
}
|
||
else
|
||
{
|
||
bRet = true;
|
||
return bRet;
|
||
}
|
||
}
|
||
#else
|
||
if (m_serialPort != null)
|
||
{
|
||
// add by wani(20170914) - Serial Port Close 보완(Buffer 초기화 추가)
|
||
m_serialPort.DiscardInBuffer();
|
||
m_serialPort.DiscardOutBuffer();
|
||
m_serialPort.Close();
|
||
m_serialPort.Dispose();
|
||
System.Threading.Thread.Sleep(50);
|
||
m_serialPort = null;
|
||
}
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
if( m_serialPort == null )
|
||
{
|
||
//m_serialPort = new SerialPort(m_cPosStatus.Base.OlePosPrinterSerialPortNumber, (int)m_cPosStatus.Base.OlePosPrinterSerialBaudRate);
|
||
m_serialPort = new SerialPort();
|
||
if (m_serialPort == null)
|
||
{
|
||
devStatus.Printer.Open = false;
|
||
devStatus.Printer.Status = "SERIAL PORT ERROR";
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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.Printer.Status);
|
||
#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 (함수명))
|
||
devStatus.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
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");
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//전체 버퍼 한번에 출력 하도록 수정
|
||
#if(PRT_ALLWRITE) //프린터 포트 동작 변경시
|
||
m_serialPort.WriteBufferSize = 1024 * 10;
|
||
#else
|
||
m_serialPort.WriteBufferSize = 1024 * 3;
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
m_serialPort.PortName = sSerialPort;
|
||
m_serialPort.BaudRate = (int)lBaudrate;
|
||
m_serialPort.DataBits = 8;
|
||
m_serialPort.StopBits = StopBits.One;
|
||
m_serialPort.Parity = Parity.None;
|
||
|
||
//#20170808 프린터 출력 안되는 현상 수정 start
|
||
//특정 케이블에 따라 출력이 안되는 현상이 있음 전부 Handshake.none로 처리
|
||
//적용시 변경 소스로 적용
|
||
//기존
|
||
/*
|
||
if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_LIST.POS_PRINTER._6_P2C)
|
||
{
|
||
m_serialPort.Handshake = Handshake.None;
|
||
}
|
||
else
|
||
{
|
||
m_serialPort.Handshake = Handshake.RequestToSend;
|
||
}
|
||
*/
|
||
//변경
|
||
m_serialPort.Handshake = Handshake.None;
|
||
//#20170808 프린터 출력 안되는 현상 수정 end
|
||
|
||
// 프린터 NV메모리에 upload 하기 위해 WriteTimeout 값이 10초 이상 되어야 함
|
||
m_serialPort.ReadTimeout = 10000;
|
||
m_serialPort.WriteTimeout = 10000;
|
||
|
||
m_serialPort.RtsEnable = true;
|
||
m_serialPort.DtrEnable = true;
|
||
FreeEvents = false;
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"[1] Before opening port");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"[1] Before opening port");
|
||
#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 (함수명))
|
||
"[1] Before opening port");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
m_serialPort.Close();
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
m_serialPort.Open();
|
||
|
||
//#20180316 프린터 출력 안되는 증상 - 포트 오픈, 리셋 후 sleep 추가 start
|
||
//#20180402 프린터 출력 안되는 점포 증가로 해당 sleep 소스 주석 start
|
||
//System.Threading.Thread.Sleep(100);
|
||
//#20180402 프린터 출력 안되는 점포 증가로 해당 sleep 소스 주석 end
|
||
//#20180316 프린터 출력 안되는 증상 - 포트 오픈, 리셋 후 sleep 추가 end
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"[2] After opening port");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"[2] After opening port");
|
||
#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 (함수명))
|
||
"[2] After opening port");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
|
||
if (m_serialPort.IsOpen == false)
|
||
{
|
||
devStatus.Printer.Open = false;
|
||
devStatus.Printer.Status = "SERIAL PORT OPEN ERROR";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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.Printer.Status);
|
||
#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 (함수명))
|
||
devStatus.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return bRet;
|
||
}
|
||
ResetDevice();
|
||
|
||
devStatus.Printer.Open = true;
|
||
devStatus.Printer.Status = "SUCCESS";
|
||
devStatus.Printer.ErrorStatus = "OK";
|
||
|
||
bw.DoWork += OlePosHandler;
|
||
|
||
bRet = true;
|
||
}
|
||
else
|
||
{
|
||
devStatus.Printer.Open = false;
|
||
devStatus.Printer.Status = "SERIAL PORT ERROR";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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.Printer.Status);
|
||
#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 (함수명))
|
||
devStatus.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return bRet;
|
||
}
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception : " + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
return bRet;
|
||
}
|
||
/// <summary>
|
||
/// 디바이스 Rest시 처리함수
|
||
/// </summary>
|
||
public void ResetDevice()
|
||
{
|
||
try
|
||
{
|
||
switch (m_cPosStatus.Base.OlePosPrinterModel)
|
||
{
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TOSHIBA:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_1NR://2018.01.22;"7:4610_1NR" 모델 추가, 처리는 _1_EPSON 과 동일;girak.kim
|
||
TransmitCommand(PosConst.ESCP_COMMAND.INITIALIZE_PRINTER);
|
||
break;
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._3_IBM:
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//변경
|
||
#if(PRT_O2PRINTER)
|
||
TransmitCommand(new byte[] { (byte)0x1B, (byte)0x31,
|
||
(byte)0x1B, (byte)0x20, (byte)0x03,
|
||
(byte)0x1B, (byte)0x33, (byte)10, // 라인간격
|
||
(byte)0x1B, (byte)0x25, (byte)0x00, // Double Byte Mode
|
||
(byte)0x1B, (byte)0x20, (byte)3, // 글자간 간격
|
||
(byte)0x1B, (byte)0x54, (byte)6 });
|
||
//기존
|
||
#else
|
||
TransmitCommand(new byte[] { (byte)0x1B, (byte)0x31 });
|
||
TransmitCommand(new byte[] { (byte)0x1B, (byte)0x20, (byte)0x03 }); // 글자간 간격
|
||
TransmitCommand(new byte[] { (byte)0x1B, (byte)0x33, (byte)10 }); // 라인간격
|
||
TransmitCommand(new byte[] { (byte)0x1B, (byte)0x25, (byte)0x00 }); // Double Byte Mode
|
||
TransmitCommand(new byte[] { (byte)0x1B, (byte)0x20, (byte)3 }); //
|
||
TransmitCommand(new byte[] { (byte)0x1B, (byte)0x54, (byte)6 });
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
/// <summary>A
|
||
/// 디바이스 Close시 처리함수
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool CloseDevice()
|
||
{
|
||
bool bRet = false;
|
||
|
||
try
|
||
{
|
||
switch(m_cPosStatus.Base.OlePosPrinterController)
|
||
{
|
||
case PosConst.POS_DEVICE_CONTROLLER.OPOS:
|
||
bRet = CloseDeviceByOPOS();
|
||
bRet = true;
|
||
break;
|
||
case PosConst.POS_DEVICE_CONTROLLER.RS232:
|
||
bRet = CloseDeviceByRS232();
|
||
break;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "CLOSE EXCEPTION";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
return bRet;
|
||
}
|
||
/// <summary>
|
||
/// OPOS사용 디바이스 Close시 처리함수
|
||
/// </summary>
|
||
public bool CloseDeviceByOPOS()
|
||
{
|
||
bool bRet = false;
|
||
|
||
try
|
||
{
|
||
if (posprinter == null)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.CloseDeviceByOPOS()", "posprinter == null");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.CloseDeviceByOPOS()", "posprinter == null");
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.CloseDeviceByOPOS()", "posprinter == null");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return bRet;
|
||
}
|
||
posprinter.DeviceEnabled = false;
|
||
posprinter.Release();
|
||
posprinter.Close();
|
||
bRet = true;
|
||
posprinter = null;
|
||
devStatus.Printer.Status = "CLOSE";
|
||
devStatus.Printer.Open = false;
|
||
//SetTopLogo = false;
|
||
//SetBottomLogo = false;
|
||
bw.DoWork -= OlePosHandler;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "CLOSE EXCEPTION";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
return bRet;
|
||
}
|
||
/// <summary>
|
||
/// RS232사용 디바이스 Close시 처리함수
|
||
/// </summary>
|
||
public bool CloseDeviceByRS232()
|
||
{
|
||
bool bRet = false;
|
||
bool PortOpenResult = false;
|
||
|
||
try
|
||
{
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//변경
|
||
#if(PRT_O2PRINTER)
|
||
devStatus.Printer.Status = "CLOSE";
|
||
devStatus.Printer.Open = false;
|
||
return true;
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
if (m_serialPort == null)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.CloseDeviceByRS232()", "m_serialPort == null");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.CloseDeviceByRS232()", "m_serialPort == null");
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.CloseDeviceByRS232()", "m_serialPort == null");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return bRet;
|
||
}
|
||
|
||
// add by wani(20170914) - Serial Port Close 보완(Buffer 초기화 추가)
|
||
m_serialPort.DiscardInBuffer();
|
||
m_serialPort.DiscardOutBuffer();
|
||
m_serialPort.Close();
|
||
System.Threading.Thread.Sleep(100);
|
||
PortOpenResult = m_serialPort.IsOpen;
|
||
if (PortOpenResult.Equals(true))
|
||
{
|
||
m_serialPort.Close();
|
||
System.Threading.Thread.Sleep(100);
|
||
}
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"SerialPort.IsOpen => " + PortOpenResult.ToString());
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"SerialPort.IsOpen => " + PortOpenResult.ToString());
|
||
#else
|
||
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 (함수명))
|
||
"SerialPort.IsOpen => " + PortOpenResult.ToString());
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
m_serialPort.Dispose();
|
||
bRet = true;
|
||
m_serialPort = null;
|
||
|
||
devStatus.Printer.Status = "CLOSE";
|
||
devStatus.Printer.Open = false;
|
||
//SetTopLogo = false;
|
||
//SetBottomLogo = false;
|
||
bw.DoWork -= OlePosHandler;
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "CLOSE EXCEPTION";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
return bRet;
|
||
}
|
||
#endregion
|
||
|
||
#region Printer check
|
||
/// <summary>
|
||
/// Enable transmission of automatic status.
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool CheckPrinter()
|
||
{
|
||
bool bRet = false;
|
||
string sTemp = "";
|
||
int nLen = 0;
|
||
string sResp = "";
|
||
byte[] bytReadData;
|
||
|
||
try
|
||
{
|
||
if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_CONTROLLER.RS232)
|
||
{
|
||
switch (m_cPosStatus.Base.OlePosPrinterModel)
|
||
{
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_TM_T88II:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TM_T88III:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._3_TM_T88IV:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._4_TM_T88V:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._8_SRP_352PLUSIII:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON:
|
||
if (devStatus.Printer.Open == false)
|
||
{
|
||
if (OpenDevice(PosConst.OPOS_DEVICE.POSPRINTER, PosConst.OPOS_LDN.POSPRINTER) == false) return bRet;
|
||
}
|
||
|
||
bytReadData = new byte[1];
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//기존
|
||
#if(PRT_O2PRINTER)
|
||
#else
|
||
if (m_serialPort != null && m_serialPort.IsOpen == true)
|
||
{
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
// 프린터 초기화
|
||
TransmitCommand(PosConst.ESCP_COMMAND.INITIALIZE_PRINTER, false);
|
||
System.Threading.Thread.Sleep(10);
|
||
|
||
// Cover Check
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//기존
|
||
#if(PRT_O2PRINTER)
|
||
#else
|
||
TransmitCommand(PosConst.ESCP_COMMAND.TRANSMIT_OFFLINE_STATUS, false);
|
||
#endif
|
||
//변경
|
||
#if(PRT_O2PRINTER)
|
||
TransmitCommand(PosConst.ESCP_COMMAND.TRANSMIT_OFFLINE_STATUS, false, true);
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
System.Threading.Thread.Sleep(70);
|
||
|
||
#region
|
||
//sResp = m_serialPort.ReadExisting();
|
||
//if (sResp.Length > 0)
|
||
//{
|
||
// byte[] respByte = Encoding.Default.GetBytes(sResp);
|
||
// if (respByte[0] == PosConst.ESCP_COMMAND.STATUS_OK[0])
|
||
// {
|
||
// bRet = true;
|
||
// }
|
||
// else
|
||
// {
|
||
// return bRet;
|
||
// }
|
||
//}
|
||
//else
|
||
//{
|
||
// return bRet;
|
||
//}
|
||
#endregion
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//기존
|
||
#if(PRT_O2PRINTER)
|
||
#else
|
||
m_serialPort.Read(bytReadData, 0, 1);
|
||
if (bytReadData.Length > 0)
|
||
{
|
||
if (bytReadData[0] == PosConst.ESCP_COMMAND.STATUS_OK[0])
|
||
{
|
||
bRet = true;
|
||
}
|
||
else
|
||
{
|
||
return bRet;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return bRet;
|
||
}
|
||
#endif
|
||
//변경
|
||
#if(PRT_O2PRINTER)
|
||
if (bytRecvBuff.Length > 0)
|
||
{
|
||
if (bytRecvBuff[12] == PosConst.ESCP_COMMAND.STATUS_OK[0])
|
||
{
|
||
bRet = true;
|
||
}
|
||
else
|
||
{
|
||
return bRet;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return bRet;
|
||
}
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
// Paper Check
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//기존
|
||
#if(PRT_O2PRINTER)
|
||
#else
|
||
TransmitCommand(PosConst.ESCP_COMMAND.TRANSMIT_CONTINUOUS_PAPER_DETECTOR_STATUS, false);
|
||
#endif
|
||
//변경
|
||
#if(PRT_O2PRINTER)
|
||
TransmitCommand(PosConst.ESCP_COMMAND.TRANSMIT_CONTINUOUS_PAPER_DETECTOR_STATUS, false, true);
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
System.Threading.Thread.Sleep(70);
|
||
|
||
#region
|
||
//sResp = m_serialPort.ReadExisting();
|
||
|
||
//if (sResp.Length > 0)
|
||
//{
|
||
// byte[] respByte = Encoding.Default.GetBytes(sResp);
|
||
// if (respByte[0] == PosConst.ESCP_COMMAND.STATUS_OK[0])
|
||
// {
|
||
// bRet = true;
|
||
// }
|
||
// else
|
||
// {
|
||
// //bRet = false;
|
||
// string NEAR_END = Encoding.Default.GetString(new byte[] { 0x1E });
|
||
// string NOT_PRESENT = Encoding.Default.GetString(new byte[] { 0x72 });
|
||
|
||
// string sErrMsg = string.Empty;
|
||
// if (sResp == NEAR_END)
|
||
// {
|
||
// bRet = true;
|
||
// sErrMsg = "Local Printer : RECEIPT_PAPER_NEAR_END";
|
||
// }
|
||
// else if (sResp == NOT_PRESENT) sErrMsg = "Local Printer : RECEIPT_PAPER_NOT_PRESENT";
|
||
// else sErrMsg = "Local Printer : 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);
|
||
// }
|
||
//}
|
||
//else
|
||
//{
|
||
// return bRet;
|
||
//}
|
||
#endregion
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//기존
|
||
#if(PRT_O2PRINTER)
|
||
#else
|
||
m_serialPort.Read(bytReadData, 0, 1);
|
||
if (bytReadData.Length > 0)
|
||
{
|
||
if (bytReadData[0] == PosConst.ESCP_COMMAND.STATUS_OK[0])
|
||
{
|
||
bRet = true;
|
||
}
|
||
else
|
||
{
|
||
string NEAR_END = Encoding.Default.GetString(new byte[] { 0x1E });
|
||
string NOT_PRESENT = Encoding.Default.GetString(new byte[] { 0x72 });
|
||
string sReadData = Encoding.Default.GetString(bytReadData);
|
||
|
||
string sErrMsg = string.Empty;
|
||
if (sReadData == NEAR_END)
|
||
{
|
||
bRet = true;
|
||
sErrMsg = "Local Printer : RECEIPT_PAPER_NEAR_END";
|
||
}
|
||
else if (sReadData == NOT_PRESENT) sErrMsg = "Local Printer : RECEIPT_PAPER_NOT_PRESENT";
|
||
else sErrMsg = "Local Printer : ETC_ERROR";
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
||
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
||
sErrMsg);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
||
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
||
sErrMsg);
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
||
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
||
sErrMsg);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return bRet;
|
||
}
|
||
#endif
|
||
//변경
|
||
#if(PRT_O2PRINTER)
|
||
if (bytRecvBuff.Length > 0)
|
||
{
|
||
if (bytRecvBuff[12] == PosConst.ESCP_COMMAND.STATUS_OK[0])
|
||
{
|
||
bRet = true;
|
||
}
|
||
else
|
||
{
|
||
string NEAR_END = Encoding.Default.GetString(new byte[] { 0x1E });
|
||
string NOT_PRESENT = Encoding.Default.GetString(new byte[] { 0x72 });
|
||
string sReadData = Encoding.Default.GetString(bytRecvBuff);
|
||
|
||
string sErrMsg = string.Empty;
|
||
if (sReadData == NEAR_END)
|
||
{
|
||
bRet = true;
|
||
sErrMsg = "Local Printer : RECEIPT_PAPER_NEAR_END";
|
||
}
|
||
else if (sReadData == NOT_PRESENT) sErrMsg = "Local Printer : RECEIPT_PAPER_NOT_PRESENT";
|
||
else sErrMsg = "Local Printer : ETC_ERROR";
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
||
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
||
sErrMsg);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
||
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
||
sErrMsg);
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
||
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
||
sErrMsg);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return bRet;
|
||
}
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
#region
|
||
//if (sResp.Length > 0)
|
||
//{
|
||
// byte[] respByte = Encoding.Default.GetBytes(sResp);
|
||
// if (respByte[0] == PosConst.ESCP_COMMAND.STATUS_OK[1])
|
||
// {
|
||
// bRet = true;
|
||
// }
|
||
// else
|
||
// {
|
||
// return bRet;
|
||
// }
|
||
//}
|
||
//else
|
||
//{
|
||
// return bRet;
|
||
//}
|
||
#endregion
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//기존
|
||
#if(PRT_O2PRINTER)
|
||
#else
|
||
}
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
break;
|
||
#region
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TOSHIBA:
|
||
// // Cover Check
|
||
// TransmitCommand(PosConst.ESCP_COMMAND.TRANSMIT_OFFLINE_STATUS, false);
|
||
// System.Threading.Thread.Sleep(100);
|
||
// sResp = m_serialPort.ReadExisting();
|
||
// if (sResp.Length > 0)
|
||
// {
|
||
// byte[] respByte = Encoding.Default.GetBytes(sResp);
|
||
// if (respByte[0] == PosConst.ESCP_COMMAND.STATUS_OK[0])
|
||
// {
|
||
// bRet = true;
|
||
// }
|
||
// else
|
||
// {
|
||
// return bRet;
|
||
// }
|
||
// }
|
||
// else
|
||
// {
|
||
// return bRet;
|
||
// }
|
||
// break;
|
||
#endregion
|
||
default:
|
||
bRet = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "Status Check Error";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
return bRet;
|
||
}
|
||
|
||
//private int IsPrinterStatusOK()
|
||
//{
|
||
// int iReturn = UserCom.NG;
|
||
// byte[] bytReadData;
|
||
// string sReadData;
|
||
// BitArray arBit = null;
|
||
// try
|
||
// {
|
||
// switch(m_cPosStatus.Base.OlePosPrinterModel)
|
||
// {
|
||
// case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_TRST_A00:
|
||
// if (m_serialPort != null && m_serialPort.IsOpen == true)
|
||
// {
|
||
// FreeEvents = true;
|
||
|
||
// bytReadData = new byte[1];
|
||
|
||
// // 프린터 초기화
|
||
// TransmitCommand(PosConst.ESCP_COMMAND.INITIALIZE_PRINTER, false);
|
||
// System.Threading.Thread.Sleep(10);
|
||
|
||
// // To check whether ONLINE or OFFLINE
|
||
// //TransmitCommand(PosConst.ESCP_COMMAND.TRANSMIT_PRINTER_STATUS);
|
||
// //sReadData = m_serialPort.ReadExisting();
|
||
// ////m_serialPort.Read(bytReadData, 0, 1);
|
||
// ////arBit = new BitArray(bytReadData);
|
||
// //arBit = new BitArray(Encoding.Default.GetBytes(sReadData));
|
||
// //// ONLINE/ONFFLINE Status(ONLINE : 0, OFFLINE : 1)
|
||
// //if(arBit[3] == true)
|
||
// //{
|
||
// // return UserCom.NG1;
|
||
// //}
|
||
|
||
// // To check cover status
|
||
// TransmitCommand(PosConst.ESCP_COMMAND.TRANSMIT_OFFLINE_STATUS);
|
||
// m_serialPort.Read(bytReadData, 0, 1);
|
||
// arBit = new BitArray(bytReadData);
|
||
// // Cover Status(Closed : 0, Open : 1)
|
||
// if(arBit[2] == true)
|
||
// {
|
||
// return UserCom.NG2;
|
||
// }
|
||
|
||
// // To check paper out status
|
||
// TransmitCommand(PosConst.ESCP_COMMAND.TRANSMIT_CONTINUOUS_PAPER_DETECTOR_STATUS);
|
||
// m_serialPort.Read(bytReadData, 0, 1);
|
||
// // Paper out sensor(Has paper : 0, Paper Out : 1)
|
||
// if(arBit[5] == true)
|
||
// {
|
||
// return UserCom.NG3;
|
||
// }
|
||
|
||
// iReturn = UserCom.OK;
|
||
|
||
// FreeEvents = false;
|
||
// }
|
||
// break;
|
||
// default:
|
||
// iReturn = UserCom.OK;
|
||
// break;
|
||
// }
|
||
// }
|
||
// catch (Exception ex)
|
||
// {
|
||
// FreeEvents = false;
|
||
// 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 UserCom.NG;
|
||
// }
|
||
|
||
// return iReturn;
|
||
//}
|
||
#endregion
|
||
|
||
#region 시리얼 이벤트
|
||
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//프린터 ErrorReceived
|
||
/*
|
||
SerialData err = e.EventType;
|
||
string strErr = "";
|
||
|
||
switch (err)
|
||
{
|
||
case SerialData.Chars:
|
||
strErr = "문자를 받아서 입력 버퍼에 배치했습니다.";
|
||
break;
|
||
case SerialData.Eof:
|
||
strErr = "파일 끝 문자를 받아서 입력 버퍼에 배치했습니다.";
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
strErr);
|
||
*/
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
private void serialPort_PinChanged(object sender, SerialPinChangedEventArgs e)
|
||
{
|
||
|
||
}
|
||
|
||
private void serialPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//프린터 ErrorReceived
|
||
#if(PRT_RECVERR)
|
||
|
||
SerialError err = e.EventType;
|
||
string strErr = "";
|
||
|
||
switch (err)
|
||
{
|
||
case SerialError.Frame:
|
||
strErr = "HardWare Framing Error";
|
||
break;
|
||
case SerialError.Overrun:
|
||
strErr = "Charaters Buffer Over Run";
|
||
break;
|
||
case SerialError.RXOver:
|
||
strErr = "Input Buffer OverFlow";
|
||
break;
|
||
case SerialError.RXParity:
|
||
strErr = "Founded Parity Error";
|
||
break;
|
||
case SerialError.TXFull:
|
||
strErr = "Write Buffer was Fulled";
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
strErr);
|
||
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
private void POSPrinter_StatusUpdateEvent(string sData)
|
||
{
|
||
|
||
}
|
||
|
||
/// <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.POSPRINTER, devStatus.Printer.Status, devStatus.Printer.ErrorStatus, string.Empty);
|
||
else
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"이벤트 전송 대상 없음");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"이벤트 전송 대상 없음");
|
||
#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 (함수명))
|
||
"이벤트 전송 대상 없음");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// Printer 상태 변경에 따른 이벤트 처리
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void Printer_StatusUpdateEvent(object sender, StatusUpdateEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (!bw.IsBusy)
|
||
{
|
||
m_sUpdateStatus = e.Status;
|
||
|
||
switch (m_sUpdateStatus)
|
||
{
|
||
case PosPrinter.StatusCoverOK:
|
||
devStatus.Printer.ErrorStatus = "OK";
|
||
devStatus.Printer.Status = "COVER OK";
|
||
break;
|
||
case PosPrinter.StatusReceiptEmpty:
|
||
devStatus.Printer.ErrorStatus = "NO PAPER";
|
||
devStatus.Printer.Status = "RECEIPT EMPTY";
|
||
break;
|
||
case PosPrinter.StatusCoverOpen:
|
||
devStatus.Printer.ErrorStatus = "COVER OPEN";
|
||
devStatus.Printer.Status = "COVER OPEN";
|
||
break;
|
||
case PosPrinter.StatusReceiptNearEmpty:
|
||
devStatus.Printer.ErrorStatus = "OK";
|
||
devStatus.Printer.Status = "REC_NEAREMPTY";
|
||
break;
|
||
case PosPrinter.StatusReceiptPaperOK:
|
||
devStatus.Printer.ErrorStatus = "OK";
|
||
devStatus.Printer.Status = "REC PAPEROK";
|
||
break;
|
||
default:
|
||
devStatus.Printer.ErrorStatus = "OK";
|
||
devStatus.Printer.Status = "OK";
|
||
break;
|
||
}
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_StatusUpdateEvent()", "POS Printer Status=[" + devStatus.Printer.Status + "], ErrStatus=[" + devStatus.Printer.ErrorStatus + "]");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_StatusUpdateEvent()", "POS Printer Status=[" + devStatus.Printer.Status + "], ErrStatus=[" + devStatus.Printer.ErrorStatus + "]");
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_StatusUpdateEvent()", "POS Printer Status=[" + devStatus.Printer.Status + "], ErrStatus=[" + devStatus.Printer.ErrorStatus + "]");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
bw.RunWorkerAsync();
|
||
if (PosOLEDevice.m_delegateOlePos != null)
|
||
PosOLEDevice.m_delegateOlePos(PosConst.OPOS_DEVICE.POSPRINTER, devStatus.Printer.Status, devStatus.Printer.ErrorStatus, string.Empty);
|
||
}
|
||
else
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"프린터 이벤트 처리 전 이벤트 발생 불가");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"프린터 이벤트 처리 전 이벤트 발생 불가");
|
||
#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 (함수명))
|
||
"프린터 이벤트 처리 전 이벤트 발생 불가");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "STATUS UPDATE EVENT ERROR";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
finally
|
||
{
|
||
//posprinter.ClearOutput();
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Printer 에러이벤트 처리
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void Printer_ErrorEvent(object sender, DeviceErrorEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_ErrorEvent()", "ErrorEvent 발생, ErrorCode=[" + e.ErrorCode.ToString() + "], ErrorResponse=[" + e.ErrorResponse.ToString() + "]");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_ErrorEvent()", "ErrorEvent 발생, ErrorCode=[" + e.ErrorCode.ToString() + "], ErrorResponse=[" + e.ErrorResponse.ToString() + "]");
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_ErrorEvent()", "ErrorEvent 발생, ErrorCode=[" + e.ErrorCode.ToString() + "], ErrorResponse=[" + e.ErrorResponse.ToString() + "]");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
if (e.ErrorResponse == ErrorResponse.Clear)
|
||
{
|
||
if (devStatus.Printer.ErrorStatus != "ER_CLEAR")
|
||
{
|
||
//devStatus.Printer.ErrorStatus = "ER_CLEAR";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_ErrorEvent()",
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_ErrorEvent()",
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_ErrorEvent()",
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
e.ErrorCode + " " + devStatus.Printer.ErrorStatus + " " + posprinter.ErrorString);
|
||
//UserLog.WriteAMSLog("DEV", "ERR", "0302", "Printer " + e.ErrorCode.ToString() + " " + posprinter.ErrorString);
|
||
}
|
||
}
|
||
|
||
if (e.ErrorCode == ErrorCode.Failure)
|
||
{
|
||
if (devStatus.Printer.ErrorStatus != "E_FAILURE")
|
||
{
|
||
devStatus.Printer.ErrorStatus = "E_FAILURE";
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_ErrorEvent()",
|
||
e.ErrorCode + " " + devStatus.Printer.ErrorStatus + " " + posprinter.ErrorString);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_ErrorEvent()",
|
||
e.ErrorCode + " " + devStatus.Printer.ErrorStatus + " " + posprinter.ErrorString);
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
|
||
"DevicePosPrinter.Printer_ErrorEvent()",
|
||
e.ErrorCode + " " + devStatus.Printer.ErrorStatus + " " + posprinter.ErrorString);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
//UserLog.WriteAMSLog("DEV", "ERR", "0402", "Printer " + e.ErrorCode.ToString() + " " + posprinter.ErrorString);
|
||
}
|
||
}
|
||
|
||
posprinter.ClearOutput();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "ERROREVENT ERROR";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 출력
|
||
/// <summary>
|
||
/// 바코드 아래 출력할 문구의 가운데 정렬후 리턴
|
||
/// </summary>
|
||
/// <param name="sData"></param>
|
||
/// <returns></returns>
|
||
private string TextAlignCenter(string sData)
|
||
{
|
||
string sPrtData = string.Empty;
|
||
|
||
if (m_cPosStatus.Base.OptBillPrintSize == "0") //0:42bytes
|
||
{
|
||
if (CmUtil.LenH(sData) < 42) sPrtData = CmUtil.LPadH("", 21 - (CmUtil.LenH(sData) / 2)) + sData;
|
||
}
|
||
|
||
return sPrtData;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 출력할 데이터를 Line group 단위로 받아 처리
|
||
/// </summary>
|
||
/// <param name="pLinedDataGroup"></param>
|
||
private void PrintLineDataGroup(string pLineDataGroup)
|
||
{
|
||
StringBuilder sbPrintData = new StringBuilder();
|
||
string sHeader = string.Empty;
|
||
string sData = string.Empty;
|
||
//20170913 IBM 프린터 행간 축소 start
|
||
//기존
|
||
//string CrLf = string.Format("{0}{1}", (char)13, (char)10);
|
||
//변경
|
||
byte[] CrLf;
|
||
//20170913 IBM 프린터 행간 축소 end
|
||
string[] aLineDataGroup;
|
||
byte[] bytTemp = null;
|
||
|
||
try
|
||
{
|
||
MemoryStream stream = new MemoryStream();
|
||
BinaryWriter bw = new BinaryWriter(stream);
|
||
|
||
//20170913 IBM 프린터 행간 축소 start
|
||
CrLf = new byte[5];
|
||
Array.Clear(CrLf, 0, CrLf.Length);
|
||
|
||
if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_LIST.POS_PRINTER._3_IBM)
|
||
{
|
||
// LF + WIDTH_X2_OFF
|
||
CrLf[0] = 10;
|
||
CrLf[1] = 27;
|
||
CrLf[2] = 33;
|
||
CrLf[3] = 0;
|
||
}
|
||
else
|
||
{
|
||
// CRLF
|
||
CrLf[0] = 13;
|
||
CrLf[1] = 10;
|
||
}
|
||
//20170913 IBM 프린터 행간 축소 end
|
||
|
||
aLineDataGroup = pLineDataGroup.Split(new string[] { DELIMETER }, StringSplitOptions.None);
|
||
int nLoop = 0;
|
||
foreach (string sLineData in aLineDataGroup)
|
||
{
|
||
if (sLineData.Length < 5) continue;
|
||
|
||
sHeader = sLineData.Substring(0, 5);
|
||
sData = sLineData.Substring(5);
|
||
|
||
switch(sHeader)
|
||
{
|
||
case PosConst.PRT_HDR.PRT_BMP: //[BMP]
|
||
bytTemp = PrintBMP(sData);
|
||
if (bytTemp != null)
|
||
{
|
||
bw.Write(bytTemp);
|
||
}
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_SGN:
|
||
bytTemp = PrintBMP(BaseCom.NxDataPath + "SIGN\\" + sData);
|
||
if (bytTemp != null)
|
||
{
|
||
bw.Write(bytTemp);
|
||
}
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_TBM: //[TBM]
|
||
//if (File.Exists(BaseCom.NxImgPath + m_cPosStatus.Base.BrandDiv + "_TOP.bmp") == true)
|
||
//{
|
||
// bw.Write(PosConst.ESCP_COMMAND.CENTER_ALIGN);
|
||
// bw.Write(PrintTopLogo());
|
||
// bw.Write(PosConst.ESCP_COMMAND.LEFT_ALIGN);
|
||
//}
|
||
|
||
//2018.01.22; 1NR 모델은 상단부터 출력;girak.kim;Start
|
||
if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_LIST.POS_PRINTER._7_1NR)
|
||
{
|
||
if (m_cPosStatus.Base.TextLogoMsgUseYn == "0" && File.Exists(BaseCom.NxImgPath + m_cPosStatus.Base.BrandDiv + "_TOP.bmp") == true)
|
||
{
|
||
bw.Write(PosConst.ESCP_COMMAND.CENTER_ALIGN);
|
||
bw.Write(PrintTopLogo());
|
||
bw.Write(PosConst.ESCP_COMMAND.LEFT_ALIGN);
|
||
}
|
||
}
|
||
//2018.01.22; 1NR 모델은 상단부터 출력;girak.kim;End
|
||
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_BBM: //[BBM]
|
||
if (m_cPosStatus.Base.TextLogoMsgUseYn == "0" &&
|
||
File.Exists(BaseCom.NxImgPath + m_cPosStatus.Base.BrandDiv + "_BOT.bmp") == true)
|
||
{
|
||
bw.Write(PosConst.ESCP_COMMAND.CENTER_ALIGN);
|
||
bw.Write(PrintBottomLogo());
|
||
bw.Write(PosConst.ESCP_COMMAND.LEFT_ALIGN);
|
||
}
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_BAR: //[BAR]
|
||
bw.Write(Encoding.Default.GetBytes(PrintBarcodeData(BarcodeType.CODE128, Alignment.CENTER, HRIPosition.BELOW, sData)));
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_BA1: //[BA1]
|
||
case PosConst.PRT_HDR.PRT_SIS:
|
||
bw.Write(Encoding.Default.GetBytes(PrintBarcodeData(BarcodeType.CODE128, Alignment.CENTER, HRIPosition.NO_PRINT, sData)));
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_CUT: //[CUT]
|
||
int iMaxCnt = 0;
|
||
switch(m_cPosStatus.Base.OlePosPrinterModel)
|
||
{
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TOSHIBA:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_1NR://2018.01.22; 1NR 모델 추가 ;girak.kim
|
||
default:
|
||
iMaxCnt = 4;
|
||
break;
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._6_P2C:
|
||
iMaxCnt = 2;
|
||
break;
|
||
}
|
||
if (m_cPosStatus.Base.OlePosPrinterModel != PosConst.POS_DEVICE_LIST.POS_PRINTER._7_1NR)//2018.01.22; 1NR 모델은 상단에 출력하므로 조건문 추가, 그 외는 기존 처리;girak.kim;
|
||
{
|
||
//원래 소스 부분
|
||
// 영수증 상단 로고를 컷팅 바로 직전에 출력하는 것으로 변경함(20170623)
|
||
//for (int i = 0; i < iMaxCnt; i++)
|
||
//{
|
||
// bw.Write(CrLf);
|
||
//}
|
||
|
||
if (m_cPosStatus.Base.TextLogoMsgUseYn == "0" && File.Exists(BaseCom.NxImgPath + m_cPosStatus.Base.BrandDiv + "_TOP.bmp") == true)
|
||
{
|
||
bw.Write(PosConst.ESCP_COMMAND.CENTER_ALIGN);
|
||
bw.Write(PrintTopLogo());
|
||
bw.Write(PosConst.ESCP_COMMAND.LEFT_ALIGN);
|
||
}
|
||
else
|
||
{
|
||
for (int i = 0; i < iMaxCnt; i++)
|
||
{
|
||
bw.Write(CrLf);
|
||
}
|
||
}
|
||
//원래 소스 부분 끝
|
||
}
|
||
|
||
|
||
switch (m_cPosStatus.Base.OlePosPrinterModel)
|
||
{
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._3_IBM:
|
||
bw.Write(PosConst.ESCP_COMMAND.PAPER_CUT_1NR);
|
||
break;
|
||
default:
|
||
bw.Write(PosConst.ESCP_COMMAND.PAPER_CUT);
|
||
break;
|
||
}
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_NOR: //[NOR]
|
||
bw.Write(Encoding.Default.GetBytes(sData));
|
||
bw.Write(CrLf);
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_BLD: //[BLD]
|
||
bw.Write(PosConst.ESCP_COMMAND.BOLD_ON);
|
||
bw.Write(Encoding.Default.GetBytes(sData));
|
||
bw.Write(PosConst.ESCP_COMMAND.BOLD_OFF);
|
||
bw.Write(CrLf);
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_LIN:
|
||
bw.Write(PosConst.ESCP_COMMAND.UNDERLINE_ON);
|
||
bw.Write(Encoding.Default.GetBytes(sData));
|
||
bw.Write(PosConst.ESCP_COMMAND.UNDERLINE_OFF);
|
||
bw.Write(CrLf);
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_HOR:
|
||
bw.Write(PosConst.ESCP_COMMAND.WIDTH_X2_ON);
|
||
bw.Write(Encoding.Default.GetBytes(sData));
|
||
bw.Write(PosConst.ESCP_COMMAND.WIDTH_X2_OFF);
|
||
bw.Write(CrLf);
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_VER:
|
||
bw.Write(PosConst.ESCP_COMMAND.HEIGHT_X2_ON);
|
||
bw.Write(Encoding.Default.GetBytes(sData));
|
||
bw.Write(PosConst.ESCP_COMMAND.HEIGHT_X2_OFF);
|
||
bw.Write(CrLf);
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_BIG:
|
||
bw.Write(PosConst.ESCP_COMMAND.ZOOM_ON);
|
||
bw.Write(Encoding.Default.GetBytes(sData));
|
||
bw.Write(PosConst.ESCP_COMMAND.ZOOM_OFF);
|
||
bw.Write(CrLf);
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_VRB:
|
||
bw.Write(PosConst.ESCP_COMMAND.HEIGHT_X2_ON);
|
||
bw.Write(PosConst.ESCP_COMMAND.BOLD_ON);
|
||
bw.Write(Encoding.Default.GetBytes(sData));
|
||
bw.Write(PosConst.ESCP_COMMAND.BOLD_OFF);
|
||
bw.Write(PosConst.ESCP_COMMAND.HEIGHT_X2_OFF);
|
||
bw.Write(CrLf);
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_HRB:
|
||
bw.Write(PosConst.ESCP_COMMAND.WIDTH_X2_ON);
|
||
bw.Write(PosConst.ESCP_COMMAND.BOLD_ON);
|
||
bw.Write(Encoding.Default.GetBytes(sData));
|
||
bw.Write(PosConst.ESCP_COMMAND.BOLD_OFF);
|
||
bw.Write(PosConst.ESCP_COMMAND.WIDTH_X2_OFF);
|
||
bw.Write(CrLf);
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_BGB:
|
||
bw.Write(PosConst.ESCP_COMMAND.ZOOM_ON);
|
||
bw.Write(PosConst.ESCP_COMMAND.BOLD_ON);
|
||
bw.Write(Encoding.Default.GetBytes(sData));
|
||
bw.Write(PosConst.ESCP_COMMAND.BOLD_OFF);
|
||
bw.Write(PosConst.ESCP_COMMAND.ZOOM_OFF);
|
||
bw.Write(CrLf);
|
||
break;
|
||
|
||
case PosConst.PRT_HDR.PRT_VRE :
|
||
//bw.Write(PosConst.ESCP_COMMAND.HEIGHT_X2_ON);
|
||
//bw.Write(PosConst.ESCP_COMMAND.REVERSE_MODE_ON);
|
||
//bw.Write(Encoding.Default.GetBytes(sData));
|
||
//bw.Write(PosConst.ESCP_COMMAND.REVERSE_MODE_OFF);
|
||
//bw.Write(PosConst.ESCP_COMMAND.HEIGHT_X2_OFF);
|
||
|
||
bw.Write(PosConst.ESCP_COMMAND.CENTER_ALIGN);
|
||
bw.Write(PosConst.ESCP_COMMAND.HEIGHT_X2_ON);
|
||
bw.Write(PosConst.ESCP_COMMAND.REVERSE_MODE_ON);
|
||
bw.Write(Encoding.Default.GetBytes(sData.Trim()));
|
||
bw.Write(PosConst.ESCP_COMMAND.REVERSE_MODE_OFF);
|
||
bw.Write(PosConst.ESCP_COMMAND.HEIGHT_X2_OFF);
|
||
|
||
bw.Write(CrLf);
|
||
bw.Write(PosConst.ESCP_COMMAND.LEFT_ALIGN);
|
||
break;
|
||
}
|
||
|
||
nLoop++;
|
||
}
|
||
|
||
bw.Flush();
|
||
//TransmitCommand(stream.ToArray());
|
||
AddToPrinterBuffer(stream.ToArray());
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 출력할 데이터를 1 Line 단위로 받아 처리
|
||
/// </summary>
|
||
/// <param name="pLineData"></param>
|
||
private void PrintLineData(string pLineData)
|
||
{
|
||
string sType = "";
|
||
|
||
string sLineData = "";
|
||
|
||
string CrLf = string.Format("{0}{1}", (char)13, (char)10);
|
||
|
||
string sTxtData = "";
|
||
|
||
if (pLineData.Length < 5) return;
|
||
|
||
sType = pLineData.Substring(0, 5);
|
||
sLineData = pLineData.Substring(5);
|
||
|
||
string sPosMode = string.Empty;
|
||
|
||
switch (sType)
|
||
{
|
||
case PosConst.PRT_HDR.PRT_BMP: //[BMP]
|
||
try
|
||
{
|
||
posprinter.PrintBitmap(PrinterStation.Receipt, sLineData, PosPrinter.PrinterBitmapAsIs, PosPrinter.PrinterBitmapCenter);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "BITMAP PRT FAIL";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Print BMP Exception : "+devStatus.Printer.Status + "/" + ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Print BMP Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
#else
|
||
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 (함수명))
|
||
"Print BMP Exception : "+devStatus.Printer.Status + "/" + ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_TBM: //[TBM]
|
||
try
|
||
{
|
||
posprinter.PrintNormal(PrinterStation.Receipt, (char)27 + "|1B"); //'Bitmap Image Print ('비트맵 이미지 출력)
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "TOP BMP PRT FAIL";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Print BMP Exception : "+devStatus.Printer.Status + "/" + ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Print BMP Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
#else
|
||
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 (함수명))
|
||
"Print BMP Exception : "+devStatus.Printer.Status + "/" + ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_BBM: //[BBM]
|
||
try
|
||
{
|
||
posprinter.PrintNormal(PrinterStation.Receipt, (char)27 + "|2B"); //'Bitmap Image Print ('비트맵 이미지 출력)
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "BOTTOM BMP PRT FAIL";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Print BBM Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Print BBM Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
#else
|
||
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 (함수명))
|
||
"Print BBM Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_BAR: //[BAR]
|
||
try
|
||
{
|
||
posprinter.PrintBarCode(PrinterStation.Receipt, sLineData, BarCodeSymbology.Code128, 50, 368, PosPrinter.PrinterBarCodeCenter, BarCodeTextPosition.Below);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "BAR PRT FAIL";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Print BAR Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Print BAR Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
#else
|
||
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 (함수명))
|
||
"Print BAR Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_BA1: //[BA1]
|
||
case PosConst.PRT_HDR.PRT_SIS:
|
||
try
|
||
{
|
||
posprinter.PrintBarCode(PrinterStation.Receipt, sLineData, BarCodeSymbology.Code128, 50, 368, PosPrinter.PrinterBarCodeCenter, BarCodeTextPosition.None);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "BAREx PRT FAIL";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Print BA1 Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Print BA1 Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
#else
|
||
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 (함수명))
|
||
"Print BA1 Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
break;
|
||
case PosConst.PRT_HDR.PRT_CUT: //[CUT]
|
||
try
|
||
{
|
||
for(int nLoop = 0;nLoop < 5;nLoop++)
|
||
{
|
||
posprinter.PrintNormal(PrinterStation.Receipt, (char)27 + "|N" + " " + CrLf);
|
||
}
|
||
posprinter.CutPaper(100);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "CUT PAPER FAIL";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Print 1 Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Print 1 Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
#else
|
||
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 (함수명))
|
||
"Print 1 Exception : " + devStatus.Printer.Status + "/" + ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
break;
|
||
default: // Text Print (텍스트 출력)
|
||
sTxtData = "";
|
||
switch (sType)
|
||
{
|
||
case PosConst.PRT_HDR.PRT_NOR:
|
||
sTxtData = sTxtData + (char)27 + "|N" + sLineData + CrLf;
|
||
posprinter.PrintNormal(PrinterStation.Receipt, sTxtData);
|
||
break; //'Normal (보통문자)
|
||
case PosConst.PRT_HDR.PRT_BLD:
|
||
sTxtData = sTxtData + (char)27 + "|bC" + sLineData + CrLf;
|
||
posprinter.PrintNormal(PrinterStation.Receipt, sTxtData);
|
||
break; //'Bold (진하게)
|
||
case PosConst.PRT_HDR.PRT_LIN:
|
||
sTxtData = sTxtData + (char)27 + "|uC" + sLineData + CrLf;
|
||
posprinter.PrintNormal(PrinterStation.Receipt, sTxtData);
|
||
break; //'Under Line (Under Line 출력)
|
||
case PosConst.PRT_HDR.PRT_HOR:
|
||
sTxtData = sTxtData + (char)27 + "|2C" + sLineData + CrLf;
|
||
posprinter.PrintNormal(PrinterStation.Receipt, sTxtData);
|
||
break; //'2 times horizontal expansion (가로 2배 확대)
|
||
case PosConst.PRT_HDR.PRT_VER:
|
||
sTxtData = sTxtData + (char)27 + "|3C" + sLineData + CrLf;
|
||
posprinter.PrintNormal(PrinterStation.Receipt, sTxtData);
|
||
break; //'2 times vertical expansion (세로 2배 확대)
|
||
case PosConst.PRT_HDR.PRT_BIG:
|
||
sTxtData = sTxtData + (char)27 + "|4C" + sLineData + CrLf;
|
||
posprinter.PrintNormal(PrinterStation.Receipt, sTxtData);
|
||
break; //'2 times horizontal and vertical expansion (가로세로 2배 확대)
|
||
case PosConst.PRT_HDR.PRT_VRB:
|
||
sTxtData = sTxtData + (char)27 + "|bC" + (char)27 + "|3C" + sLineData + CrLf;
|
||
break; //'2 times vertical expansion and bold(진하게 세로 2배 확대)
|
||
case PosConst.PRT_HDR.PRT_HRB:
|
||
sTxtData = sTxtData + (char)27 + "|bC" + (char)27 + "|2C" + sLineData + CrLf;
|
||
break; //'2 times horizontal expansion and bold(진하게 가로 2배 확대)
|
||
case PosConst.PRT_HDR.PRT_BGB:
|
||
sTxtData = sTxtData + (char)27 + "|bC" + (char)27 + "|4C" + sLineData + CrLf;
|
||
break; //'2 times horizontal and vertical expansion, bold(진하게 가로세로 2배 확대)
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
private byte[] PrintBMP(string sFilePath)
|
||
{
|
||
byte[] arRet = null;
|
||
try
|
||
{
|
||
arRet = GetSelectBitImageByte(sFilePath, 0, false);
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception : " + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
return arRet;
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 상단 로고 출력
|
||
/// </summary>
|
||
private byte[] PrintTopLogo()
|
||
{
|
||
byte[] arRet = null;
|
||
try
|
||
{
|
||
switch (m_cPosStatus.Base.OlePosPrinterModel)
|
||
{
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_TM_T88II:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TM_T88III:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._3_TM_T88IV:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._4_TM_T88V:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._6_4610_1NR:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_TRST_A00:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._9_TP_600:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._10_GIANT_100S:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._11_P2C_All_In_One:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._6_P2C:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_1NR://2018.01.22;"7:4610_1NR" 모델 추가, 이미지 처리는 _1_EPSON 과 동일;girak.kim
|
||
default:
|
||
|
||
arRet = PosConst.ESCP_COMMAND.PRINT_NV_BIT_IMAGE_1;
|
||
break;
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TOSHIBA:
|
||
arRet = PosConst.ESCP_COMMAND.PRINT_NV_BIT_IMAGE_3;
|
||
break;
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._5_4610_TF7:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._3_IBM:
|
||
arRet = PosConst.ESCP_COMMAND.PRINT_NV_BIT_IMAGE_1_1NR;
|
||
//arRet = PosConst.ESCP_COMMAND.PRINT_NV_BIT_IMAGE_1;
|
||
break;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"PrintTopLogo Exception : " + ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + "PrintTopLogo : " + ex.Message);
|
||
#else
|
||
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 (함수명))
|
||
"PrintTopLogo Exception : " + ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
return arRet;
|
||
}
|
||
/// <summary>
|
||
/// 하단 로고 출력
|
||
/// </summary>
|
||
private byte[] PrintBottomLogo()
|
||
{
|
||
byte[] arRet = null;
|
||
try
|
||
{
|
||
switch (m_cPosStatus.Base.OlePosPrinterModel)
|
||
{
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_TM_T88II:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TM_T88III:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._3_TM_T88IV:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._4_TM_T88V:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._6_4610_1NR:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_TRST_A00:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._9_TP_600:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._10_GIANT_100S:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._11_P2C_All_In_One:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._6_P2C:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_1NR://2018.01.22;"7:4610_1NR" 모델 추가, 이미지 처리는 _1_EPSON 과 동일;girak.kim
|
||
default:
|
||
|
||
arRet = PosConst.ESCP_COMMAND.PRINT_NV_BIT_IMAGE_2;
|
||
break;
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TOSHIBA:
|
||
arRet = PosConst.ESCP_COMMAND.PRINT_NV_BIT_IMAGE_4;
|
||
|
||
break;
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._5_4610_TF7:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._3_IBM:
|
||
arRet = PosConst.ESCP_COMMAND.PRINT_NV_BIT_IMAGE_2_1NR;
|
||
//arRet = PosConst.ESCP_COMMAND.PRINT_NV_BIT_IMAGE_2;
|
||
break;
|
||
}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"PrintBottomLogo Exception:" + ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + "PrintBottomLogo :" + ex.Message);
|
||
#else
|
||
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 (함수명))
|
||
"PrintBottomLogo Exception:" + ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
return arRet;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 바코드 출력 함수
|
||
/// </summary>
|
||
/// <param name="btBarcodeType">바코드형태</param>
|
||
/// <param name="aAlignment">정렬위치</param>
|
||
/// <param name="hpHriPosition">HRI Character position</param>
|
||
/// <param name="sLineData">바코드데이터</param>
|
||
private string PrintBarcodeData(BarcodeType btBarcodeType, Alignment aAlignment, HRIPosition hpHriPosition, string sLineData)
|
||
{
|
||
try
|
||
{
|
||
string sBarcodeData = string.Empty;
|
||
|
||
switch(m_cPosStatus.Base.OlePosPrinterModel)
|
||
{
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_TM_T88II:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TM_T88III:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._3_TM_T88IV:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._4_TM_T88V:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._6_4610_1NR:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_TRST_A00:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._9_TP_600:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._10_GIANT_100S:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._11_P2C_All_In_One:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TOSHIBA:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._6_P2C:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_1NR://2018.01.22;"7:4610_1NR" 모델 추가, 처리는 _1_EPSON 과 동일;girak.kim
|
||
default:
|
||
// 바코드 출력 위치 정렬
|
||
sBarcodeData += GetAlignCommandToString(aAlignment);
|
||
// Set HRI chracter print position
|
||
sBarcodeData += GetHRIPositionCommandToString(hpHriPosition);
|
||
// Set Barcode horizontal size.
|
||
sBarcodeData += String.Format("{0}{1}{2}",
|
||
Convert.ToChar(0x1D), Convert.ToChar(0x77), Convert.ToChar(0x02));
|
||
// Set Barcode height
|
||
sBarcodeData += String.Format("{0}{1}{2}",
|
||
Convert.ToChar(0x1D), Convert.ToChar(0x68), Convert.ToChar(0x32));
|
||
// Print Barcode
|
||
sBarcodeData += String.Format("{0}{1}",
|
||
Convert.ToChar(0x1D), Convert.ToChar(0x6B));
|
||
|
||
switch (btBarcodeType)
|
||
{
|
||
case BarcodeType.CODE93:
|
||
sBarcodeData += String.Format("{0}", Convert.ToChar(0x48));
|
||
sBarcodeData += Convert.ToChar(sLineData.Length);
|
||
sBarcodeData += sLineData;
|
||
break;
|
||
case BarcodeType.CODE128:
|
||
sBarcodeData += String.Format("{0}", Convert.ToChar(0x49));
|
||
int nDataLen = sLineData.Length + 2;
|
||
sBarcodeData += String.Format("{0}", Convert.ToChar(nDataLen));
|
||
sBarcodeData += String.Format("{0}", Convert.ToChar(0x7B)); // "{"
|
||
sBarcodeData += String.Format("{0}", Convert.ToChar(0x42)); // "B"
|
||
sBarcodeData += sLineData;
|
||
break;
|
||
}
|
||
break;
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._5_4610_TF7:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._3_IBM:
|
||
// 바코드 출력 위치 정렬
|
||
sBarcodeData += GetAlignCommandToString(aAlignment);
|
||
// Set HRI chracter print position
|
||
sBarcodeData += GetHRIPositionCommandToString(hpHriPosition);
|
||
// Set Barcode horizontal size.
|
||
sBarcodeData += String.Format("{0}{1}{2}",
|
||
Convert.ToChar(0x1D), Convert.ToChar(0x77), Convert.ToChar(0x02));
|
||
// Set Barcode height
|
||
sBarcodeData += String.Format("{0}{1}{2}",
|
||
Convert.ToChar(0x1D), Convert.ToChar(0x68), Convert.ToChar(50));
|
||
// Print Barcode
|
||
sBarcodeData += String.Format("{0}{1}",
|
||
Convert.ToChar(0x1D), Convert.ToChar(0x6B));
|
||
|
||
switch (btBarcodeType)
|
||
{
|
||
case BarcodeType.CODE93:
|
||
sBarcodeData += String.Format("{0}", Convert.ToChar(0x48));
|
||
sBarcodeData += Convert.ToChar(sLineData.Length);
|
||
sBarcodeData += sLineData;
|
||
break;
|
||
case BarcodeType.CODE128:
|
||
sBarcodeData += String.Format("{0}", Convert.ToChar(0x08));
|
||
sBarcodeData += sLineData;
|
||
break;
|
||
}
|
||
break;
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._4_IBM_1NR:
|
||
// // 바코드 출력 위치 정렬
|
||
// sBarcodeData += GetAlignCommandToString(aAlignment);
|
||
// // Set HRI chracter print position
|
||
// sBarcodeData += GetHRIPositionCommandToString(hpHriPosition);
|
||
// // Set Barcode horizontal size.
|
||
// sBarcodeData += String.Format("{0}{1}{2}",
|
||
// Convert.ToChar(0x1D), Convert.ToChar(0x77), Convert.ToChar(0x02));
|
||
// // Set Barcode height
|
||
// sBarcodeData += String.Format("{0}{1}{2}",
|
||
// Convert.ToChar(0x1D), Convert.ToChar(0x68), Convert.ToChar(0x50));
|
||
// // Print Barcode
|
||
// sBarcodeData += String.Format("{0}{1}",
|
||
// Convert.ToChar(0x1D), Convert.ToChar(0x6B));
|
||
|
||
// switch (btBarcodeType)
|
||
// {
|
||
// case BarcodeType.CODE93:
|
||
// sBarcodeData += String.Format("{0}", Convert.ToChar(0x48));
|
||
// sBarcodeData += Convert.ToChar(sLineData.Length);
|
||
// sBarcodeData += sLineData;
|
||
// break;
|
||
// case BarcodeType.CODE128:
|
||
// sBarcodeData += String.Format("{0}", Convert.ToChar(0x07));
|
||
// //sBarcodeData += String.Format("{0}", Convert.ToChar(0x07));
|
||
// sBarcodeData += sLineData;
|
||
// break;
|
||
// }
|
||
// break;
|
||
}
|
||
// 출력 정렬 위치 원복
|
||
sBarcodeData += GetAlignCommandToString(Alignment.LEFT);
|
||
|
||
//m_serialPort.Write(sBarcodeData);
|
||
return sBarcodeData;
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return "";
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// Byte 배열의 HRI print position Command 를 string으로 변환
|
||
/// </summary>
|
||
/// <param name="hpHriPosition"></param>
|
||
/// <returns></returns>
|
||
private string GetHRIPositionCommandToString(HRIPosition hpHriPosition)
|
||
{
|
||
string sCommand = string.Empty;
|
||
try
|
||
{
|
||
switch(hpHriPosition)
|
||
{
|
||
case HRIPosition.NO_PRINT:
|
||
sCommand = System.Text.Encoding.Default.GetString(buildESCPCommand(PosConst.ESCP_COMMAND.HRI_PRINT_POSITION, (byte)0));
|
||
break;
|
||
case HRIPosition.ABOVE:
|
||
sCommand = System.Text.Encoding.Default.GetString(buildESCPCommand(PosConst.ESCP_COMMAND.HRI_PRINT_POSITION, (byte)1));
|
||
break;
|
||
case HRIPosition.BELOW:
|
||
sCommand = System.Text.Encoding.Default.GetString(buildESCPCommand(PosConst.ESCP_COMMAND.HRI_PRINT_POSITION, (byte)2));
|
||
break;
|
||
case HRIPosition.ABOVE_BELOW:
|
||
sCommand = System.Text.Encoding.Default.GetString(buildESCPCommand(PosConst.ESCP_COMMAND.HRI_PRINT_POSITION, (byte)3));
|
||
break;
|
||
}
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
return sCommand;
|
||
}
|
||
/// <summary>
|
||
/// Byte 배열의 Align Command 를 string으로 변환
|
||
/// </summary>
|
||
/// <param name="aAlignment">정렬위치</param>
|
||
/// <returns></returns>
|
||
private string GetAlignCommandToString(Alignment aAlignment)
|
||
{
|
||
string sCommand = string.Empty;
|
||
try
|
||
{
|
||
switch(aAlignment)
|
||
{
|
||
case Alignment.CENTER:
|
||
sCommand = System.Text.Encoding.Default.GetString(PosConst.ESCP_COMMAND.CENTER_ALIGN);
|
||
break;
|
||
case Alignment.LEFT:
|
||
sCommand = System.Text.Encoding.Default.GetString(PosConst.ESCP_COMMAND.LEFT_ALIGN);
|
||
break;
|
||
case Alignment.RIGHT:
|
||
sCommand = System.Text.Encoding.Default.GetString(PosConst.ESCP_COMMAND.RIGHT_ALIGN);
|
||
break;
|
||
}
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
return sCommand;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 프린터 출력
|
||
/// </summary>
|
||
/// <param name="pPrintData">출력할 데이터 Line 단위 배열</param>
|
||
/// <param name="kiosk">해피스테이션만 사용할꺼임 2019.03.27</param>
|
||
/// <returns></returns>
|
||
public bool ReceiptPrinter(string[] pPrintData, bool kiosk)
|
||
{
|
||
bool bRet = false;
|
||
|
||
int[] List = new int[32];
|
||
int ListNum = 0;
|
||
bool Interface_opend = true;
|
||
|
||
|
||
if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.RS232) //해피스테이션 rs232 사용
|
||
{
|
||
string sPrtPort = CmUtil.MidH(m_cPosStatus.Base.OlePosPrinterSerialPortNumber, 3, m_cPosStatus.Base.OlePosPrinterSerialPortNumber.Length - 3);
|
||
long baudRate = m_cPosStatus.Base.OlePosPrinterSerialBaudRate;
|
||
Interface_opend = REXOD_Setup_Printer(Printer_Interface._COM_, int.Parse(sPrtPort), (int)baudRate);
|
||
|
||
}
|
||
else if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.OPOS) //해피스테이션 usb 사용
|
||
{
|
||
ListNum = REXOD_Enum_Printer(Printer_Interface._USB_, List);
|
||
|
||
if (ListNum >= 1)
|
||
{
|
||
Interface_opend = REXOD_Setup_Printer(Printer_Interface._USB_, List[0], 0);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
Bitmap bitmapImage;
|
||
int iRet = 0;
|
||
string sFileName = string.Empty;
|
||
string lastPrintData = "";
|
||
string printDataGbn = "";
|
||
byte[] strBarcode = null;
|
||
for (int i = 0; i < pPrintData.Length; i++)
|
||
{
|
||
|
||
if (pPrintData[i].Length >= 5)
|
||
printDataGbn = pPrintData[i].Substring(0, 5);
|
||
if (pPrintData[i].Length >= 5)
|
||
lastPrintData = pPrintData[i].Substring(5) + "\r\n";
|
||
else
|
||
lastPrintData = "" + "\r\n";
|
||
|
||
|
||
|
||
|
||
if (printDataGbn.Equals("[BLD]")) REXOD_Bold_Word(true);
|
||
|
||
|
||
if (printDataGbn.Equals("[BAR]"))
|
||
{
|
||
strBarcode = Encoding.UTF8.GetBytes(PrintBarcodeData(BarcodeType.CODE128, Alignment.CENTER, HRIPosition.NO_PRINT, lastPrintData.Replace("\r\n", "")));
|
||
|
||
REXOD_Select_Barcode_Alignment(AlignmentR._Center_);
|
||
REXOD_Print_Barcode(Barcode_Type._CODE128_, strBarcode, strBarcode.Length);
|
||
}
|
||
else if (printDataGbn.Equals("[SGN]"))
|
||
{
|
||
sFileName = BaseCom.NxDataPath + "SIGN\\" + lastPrintData.Replace("\r\n", "");
|
||
if (File.Exists(sFileName))
|
||
{
|
||
bitmapImage = new Bitmap(sFileName);
|
||
if (bitmapImage != null)
|
||
{
|
||
// var rectangle = new System.Drawing.Rectangle(0, 0, 496, 100);
|
||
// var lastImg = bitmapImage.Clone(rectangle, System.Drawing.Imaging.PixelFormat.Format8bppIndexed);
|
||
|
||
// ImageConverter converter = new ImageConverter();
|
||
// GCHandle pinnedArray = GCHandle.Alloc((byte[])converter.ConvertTo(bitmapImage, typeof(byte[])), GCHandleType.Pinned);
|
||
// IntPtr pointer = pinnedArray.AddrOfPinnedObject();
|
||
|
||
REXOD_Select_Alignment(AlignmentR._Center_);
|
||
IntPtr hbit = bitmapImage.GetHbitmap();
|
||
REXOD_Print_Bitmap(hbit);
|
||
//REXOD_Print_Bitmap(pointer);
|
||
//pinnedArray.Free();
|
||
DeleteObject(hbit);
|
||
REXOD_Select_Alignment(AlignmentR._Align_left_);
|
||
}
|
||
}
|
||
}
|
||
else if (printDataGbn.Equals("[TBM]"))
|
||
{
|
||
sFileName = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.RLOGO + @"PB_TOP.bmp";
|
||
if (File.Exists(sFileName))
|
||
{
|
||
bitmapImage = new Bitmap(sFileName);
|
||
if (bitmapImage != null)
|
||
{
|
||
|
||
// var rectangle = new System.Drawing.Rectangle(0, 0, 496, 100);
|
||
// var lastImg = bitmapImage.Clone(rectangle, System.Drawing.Imaging.PixelFormat.Format8bppIndexed);
|
||
|
||
// ImageConverter converter = new ImageConverter();
|
||
// GCHandle pinnedArray = GCHandle.Alloc((byte[])converter.ConvertTo(bitmapImage, typeof(byte[])), GCHandleType.Pinned);
|
||
// IntPtr pointer = pinnedArray.AddrOfPinnedObject();
|
||
|
||
REXOD_Select_Alignment(AlignmentR._Center_);
|
||
IntPtr hbit = bitmapImage.GetHbitmap();
|
||
REXOD_Print_Bitmap(hbit);
|
||
//REXOD_Print_Bitmap(pointer);
|
||
//pinnedArray.Free();
|
||
DeleteObject(hbit);
|
||
REXOD_Select_Alignment(AlignmentR._Align_left_);
|
||
}
|
||
}
|
||
}
|
||
else if (printDataGbn.Equals("[BBM]"))
|
||
{
|
||
sFileName = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.RLOGO + @"PB_BOT.bmp";
|
||
if (File.Exists(sFileName))
|
||
{
|
||
bitmapImage = new Bitmap(sFileName);
|
||
if (bitmapImage != null)
|
||
{
|
||
// var rectangle = new System.Drawing.Rectangle(0, 0, 496, 100);
|
||
// var lastImg = bitmapImage.Clone(rectangle, System.Drawing.Imaging.PixelFormat.Format8bppIndexed);
|
||
|
||
// ImageConverter converter = new ImageConverter();
|
||
// GCHandle pinnedArray = GCHandle.Alloc((byte[])converter.ConvertTo(bitmapImage, typeof(byte[])), GCHandleType.Pinned);
|
||
// IntPtr pointer = pinnedArray.AddrOfPinnedObject();
|
||
|
||
REXOD_Select_Alignment(AlignmentR._Center_);
|
||
IntPtr hbit = bitmapImage.GetHbitmap();
|
||
REXOD_Print_Bitmap(hbit);
|
||
//REXOD_Print_Bitmap(pointer);
|
||
//pinnedArray.Free();
|
||
DeleteObject(hbit);
|
||
REXOD_Select_Alignment(AlignmentR._Align_left_);
|
||
|
||
}
|
||
}
|
||
}
|
||
else if (printDataGbn.Equals("[BIG]"))
|
||
{
|
||
//RE
|
||
REXOD_Double_Height(true);
|
||
REXOD_Double_Width(true);
|
||
REXOD_Bold_Word(true);
|
||
|
||
REXOD_Set_This_Line_Start_Position(40);
|
||
iRet = REXOD_Print_CharW(lastPrintData);
|
||
|
||
REXOD_Double_Height(false);
|
||
REXOD_Double_Width(false);
|
||
REXOD_Bold_Word(false);
|
||
iRet = REXOD_Print_CharW(" " + "\r\n");
|
||
}else if (printDataGbn.Equals("[HOR]"))
|
||
{
|
||
REXOD_Double_Width(true);
|
||
|
||
REXOD_Set_This_Line_Start_Position(40);
|
||
iRet = REXOD_Print_CharW(lastPrintData);
|
||
|
||
REXOD_Double_Width(false);
|
||
}
|
||
else if (printDataGbn.Equals("[VER]"))
|
||
{
|
||
|
||
iRet = REXOD_Print_CharW(" " + "\r\n");
|
||
REXOD_Set_This_Line_Start_Position(40);
|
||
iRet = REXOD_Print_CharW(lastPrintData);
|
||
iRet = REXOD_Print_CharW(" " + "\r\n");
|
||
|
||
}
|
||
else
|
||
{
|
||
REXOD_Set_This_Line_Start_Position(40);
|
||
iRet = REXOD_Print_CharW(lastPrintData);
|
||
|
||
}
|
||
|
||
|
||
if (printDataGbn.Equals("[BLD]")) REXOD_Bold_Word(false);
|
||
}
|
||
|
||
REXOD_Enter_With_nLine(6);
|
||
|
||
REXOD_Full_Cut();
|
||
|
||
return bRet;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 프린터 출력
|
||
/// </summary>
|
||
/// <param name="pPrintData">출력할 데이터 Line 단위 배열</param>
|
||
/// <returns></returns>
|
||
public bool ReceiptPrinter(string[] pPrintData)
|
||
{
|
||
bool bRet = false;
|
||
|
||
try
|
||
{
|
||
if (devStatus.Printer.ErrorStatus == "E_FAILURE") devStatus.Printer.ErrorStatus = "OK";
|
||
|
||
if(devStatus.Printer.UseYn == false)
|
||
{
|
||
return bRet;
|
||
}
|
||
|
||
//if (devStatus.Printer.Open == false)
|
||
//{
|
||
// if (OpenDevice(PosConst.OPOS_DEVICE.POSPRINTER, PosConst.OPOS_LDN.POSPRINTER) == false) return bRet;
|
||
//}
|
||
|
||
if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.OPOS)
|
||
{
|
||
if (devStatus.Printer.Open == false)
|
||
{
|
||
if (OpenDevice(PosConst.OPOS_DEVICE.POSPRINTER, PosConst.OPOS_LDN.POSPRINTER) == false) return bRet;
|
||
}
|
||
|
||
// (OPOS) Begin a transaction.
|
||
posprinter.TransactionPrint(PrinterStation.Receipt, PrinterTransactionControl.Transaction);
|
||
|
||
foreach (string sLineData in pPrintData)
|
||
{
|
||
this.PrintLineData(sLineData);
|
||
}
|
||
|
||
// (OPOS) End a transaction by printing the buffered data.
|
||
posprinter.TransactionPrint(PrinterStation.Receipt, PrinterTransactionControl.Normal);
|
||
|
||
if (devStatus.Printer.ErrorStatus != "OK")
|
||
{
|
||
//프린터 상태 체크 실패 시에도 Port Close(20170508-조충연K)
|
||
CloseDevice();
|
||
|
||
devStatus.Printer.Status = "Receipt Print Fail";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"ReceiptPrinter Fail " + devStatus.Printer.ErrorStatus);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"ReceiptPrinter Fail " + devStatus.Printer.ErrorStatus);
|
||
#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 (함수명))
|
||
"ReceiptPrinter Fail " + devStatus.Printer.ErrorStatus);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return bRet;
|
||
}
|
||
else
|
||
{
|
||
devStatus.Printer.Status = "Receipt Print Success";
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"ReceiptPrinter SUCCESS");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"ReceiptPrinter SUCCESS");
|
||
#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 (함수명))
|
||
"ReceiptPrinter SUCCESS");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
CloseDevice();
|
||
}
|
||
else if(m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.RS232)
|
||
{
|
||
//if (m_serialPort == null || m_serialPort.IsOpen == false)
|
||
//{
|
||
// return false;
|
||
//}
|
||
|
||
//if (CheckPrinter() == false)
|
||
//{
|
||
// //프린터 상태 체크 실패 시에도 Port Close(20170508-조충연K)
|
||
// CloseDevice();
|
||
// WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0691));
|
||
// return false;
|
||
//}
|
||
|
||
|
||
// PAGE MODE 에서 Print NV bit image 명령어(FS p)를 사용할 수 없으므로
|
||
// Serial I/F 사용 시에는 PAGE MODE 사용 안 함 (2016/06/16-CYCHO)
|
||
// (RS232) Begin a transaction.
|
||
//TransmitCommand(PosConst.ESCP_COMMAND.SET_PAGE_MODE);
|
||
|
||
StringBuilder sbBuffer = new StringBuilder();
|
||
|
||
int nCnt = 0;
|
||
int nEndIdx;
|
||
for (int i = 0; i < (nEndIdx = pPrintData.Length); i++)
|
||
{
|
||
sbBuffer.Append(pPrintData[i]);
|
||
sbBuffer.Append(DELIMETER);
|
||
nCnt++;
|
||
//20180611 프린터 미출력 개선 02Printer.exe start, 20180719
|
||
#if(PRT_O2PRINTER)
|
||
if(nCnt >= 1000 || i + 1 == nEndIdx)
|
||
#else
|
||
if(nCnt >= 100 || i + 1 == nEndIdx)
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end, 20180719
|
||
{
|
||
nCnt = 0;
|
||
this.PrintLineDataGroup(sbBuffer.ToString());
|
||
sbBuffer.Clear();
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
pPrintData.Length.ToString() + "," + i.ToString());
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
pPrintData.Length.ToString() + "," + i.ToString());
|
||
#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 (함수명))
|
||
pPrintData.Length.ToString() + "," + i.ToString());
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"ReceiptPrinter SUCCESS");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"ReceiptPrinter SUCCESS");
|
||
#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 (함수명))
|
||
"ReceiptPrinter SUCCESS");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
//// 빚은몰 웹페이지에서 출력 기능이 존재하여 계속 물고 있을 수 없다.(안호성C - 2017.04.28)
|
||
//CloseDevice();
|
||
bRet = true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "Receipt Print Fail";
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return bRet;
|
||
}
|
||
|
||
return bRet;
|
||
}
|
||
#endregion
|
||
|
||
#region Print Bitmap image
|
||
/// <summary>
|
||
/// BMP 이미지를 byte로 반환
|
||
/// </summary>
|
||
/// <param name="sFilePath"></param>
|
||
private byte[] GetSelectBitImageByte(string sFilePath, double nImgWidth, bool bImgScale)
|
||
{
|
||
byte[] bytes = new byte[0];
|
||
try
|
||
{
|
||
// BMP파일 경로가 없거나 경로에 파일이 없으면 return
|
||
if (sFilePath == "" || File.Exists(sFilePath) == false)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"BMP File not Exists : " + sFilePath);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"BMP File not Exists : " + sFilePath);
|
||
#else
|
||
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 (함수명))
|
||
"BMP File not Exists : " + sFilePath);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
return null;
|
||
}
|
||
|
||
ConvertBitmapData data = GetBitmapData(sFilePath, nImgWidth, bImgScale);
|
||
|
||
BitArray dots = data.Dots;
|
||
byte[] width = BitConverter.GetBytes(data.Width);
|
||
|
||
int offset = 0;
|
||
MemoryStream stream = new MemoryStream();
|
||
BinaryWriter bw = new BinaryWriter(stream);
|
||
|
||
// 초기화
|
||
bw.Write((char)0x1B);
|
||
bw.Write('@');
|
||
|
||
bw.Write((char)0x1B);
|
||
bw.Write('3');
|
||
bw.Write((byte)24);
|
||
|
||
bw.Write((char)0x1B);
|
||
bw.Write((char)0x61);
|
||
bw.Write((char)0x31);
|
||
|
||
while (offset < data.Height)
|
||
{
|
||
/* Select bit image mode
|
||
* [Format] ASCII ESC ✻ m nL nH d1 ... dk
|
||
* Hex 1B 2A m nL nH d1 ... dk
|
||
* Decimal 27 42 m nL nH d1 ... dk
|
||
*-------------------------------------------------
|
||
* m Mode Number of bits for Dot density Amount of data (k)
|
||
* vertical data in horizontal
|
||
* 0 8-dot single-density 8 Single-density nL + nH × 256
|
||
* 1 8-dot double-density 8 Double-density nL + nH × 256
|
||
* 32 24-dot single-density 24 Single-density (nL +nH × 256) × 3
|
||
* 33 24-dot double-density 24 Double-density (nL + nH × 256) × 3
|
||
*/
|
||
bw.Write((char)0x1B);
|
||
bw.Write('*'); // bit-image mode(0x2A)
|
||
bw.Write((byte)33); // 24-dot double-density
|
||
bw.Write(width[0]); // width low byte
|
||
bw.Write(width[1]); // width high byte
|
||
|
||
for (int x = 0; x < data.Width; ++x)
|
||
{
|
||
for (int k = 0; k < 3; ++k)
|
||
{
|
||
byte slice = 0;
|
||
for (int b = 0; b < 8; ++b)
|
||
{
|
||
int y = (((offset / 8) + k) * 8) + b;
|
||
// Calculate the location of the pixel we want in the bit array.
|
||
// It'll be at (y * width) + x.
|
||
int i = (y * data.Width) + x;
|
||
|
||
// If the image is shorter than 24 dots, pad with zero.
|
||
bool v = false;
|
||
if (i < dots.Length)
|
||
{
|
||
v = dots[i];
|
||
}
|
||
slice |= (byte)((v ? 1 : 0) << (7 - b));
|
||
}
|
||
|
||
bw.Write(slice);
|
||
}
|
||
}
|
||
offset += 24; // 24-dot double-density
|
||
bw.Write((char)0x0A);
|
||
}
|
||
// Restore the line spacing to the default of 30 dots.
|
||
bw.Write((char)0x1B);
|
||
bw.Write('3');
|
||
bw.Write((byte)30);
|
||
|
||
bw.Flush();
|
||
bytes = stream.ToArray();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception : " + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
|
||
return bytes;
|
||
}
|
||
|
||
internal class ConvertBitmapData
|
||
{
|
||
public BitArray Dots { get; set; }
|
||
|
||
public int Height { get; set; }
|
||
|
||
public int Width { get; set; }
|
||
}
|
||
|
||
private ConvertBitmapData GetBitmapData(string sFilePath, double nImgWidth, bool bImgScale)
|
||
{
|
||
try
|
||
{
|
||
using(var bitmaptmp = (Bitmap)Bitmap.FromFile(sFilePath))
|
||
{
|
||
Bitmap bitmap = bitmaptmp;
|
||
|
||
var threshold = 127;
|
||
var index = 0;
|
||
|
||
if(nImgWidth <= 0)
|
||
{
|
||
nImgWidth = (double)bitmap.Width;
|
||
}
|
||
double multiplier = nImgWidth;
|
||
|
||
double scale = (double)(multiplier / (double)bitmap.Width);
|
||
if (!bImgScale)
|
||
scale = 1;
|
||
|
||
int xheight = (int)(bitmap.Height * scale);
|
||
int xwidth = (int)(bitmap.Width * scale);
|
||
var dimensions = xwidth * xheight;
|
||
var dots = new BitArray(dimensions);
|
||
|
||
for(var y = 0;y < xheight;y++)
|
||
{
|
||
for(var x = 0;x < xwidth;x++)
|
||
{
|
||
var _x = (int)(x / scale);
|
||
var _y = (int)(y / scale);
|
||
var color = bitmap.GetPixel(_x, _y);
|
||
var luminance = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);
|
||
dots[index] = (luminance < threshold);
|
||
index++;
|
||
}
|
||
}
|
||
|
||
return new ConvertBitmapData() { Dots = dots, Height = (int)(bitmap.Height * scale), Width = (int)(bitmap.Width * scale) };
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
return null;
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region Upload image to NV memory region
|
||
/// <summary>
|
||
/// Logo BMP 파일을 프린터 메모리에 Upload
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool SetLogoBmp()
|
||
{
|
||
string sTopLogoTargetFile = string.Empty;
|
||
string sBotLogoTargetFile = string.Empty;
|
||
string sTopLogoFile = string.Empty;
|
||
string sBotLogoFile = string.Empty;
|
||
string[] sLogoFiles = null;
|
||
|
||
//if (SetTopLogo && SetBottomLogo) return true;
|
||
|
||
try
|
||
{
|
||
|
||
sTopLogoFile = BaseFrame.BaseCom.NxImgPath + m_cPosStatus.Base.BrandDiv + "_TOP.bmp";
|
||
sBotLogoFile = BaseFrame.BaseCom.NxImgPath + m_cPosStatus.Base.BrandDiv + "_BOT.bmp";
|
||
|
||
if(File.Exists(sTopLogoFile))
|
||
{
|
||
if(File.Exists(sBotLogoFile))
|
||
{
|
||
sLogoFiles = new string[] { sTopLogoFile, sBotLogoFile };
|
||
}
|
||
else
|
||
{
|
||
sLogoFiles = new string[] { sTopLogoFile };
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//SetTopLogo = false;
|
||
//SetBottomLogo = false;
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, " Logo file Not Exists ", sTopLogoFile + "," + sBotLogoFile);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, " Logo file Not Exists ", sTopLogoFile + "," + sBotLogoFile);
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, " Logo file Not Exists ", sTopLogoFile + "," + sBotLogoFile);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
return true;
|
||
}
|
||
|
||
foreach(String img in sLogoFiles)
|
||
{
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"Logo file : "+img);
|
||
}
|
||
|
||
if (devStatus.Printer.Open == false) return false;
|
||
|
||
if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.OPOS)
|
||
{
|
||
for (int i = 0; i < sLogoFiles.Length; i++)
|
||
{
|
||
posprinter.SetBitmap(i + 1, PrinterStation.Receipt, sLogoFiles[i], 496, PosPrinter.PrinterBitmapCenter);
|
||
System.Threading.Thread.Sleep(1000);
|
||
}
|
||
}
|
||
else if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.RS232)
|
||
{
|
||
switch (m_cPosStatus.Base.OlePosPrinterModel)
|
||
{
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_TM_T88II:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TM_T88III:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._3_TM_T88IV:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._4_TM_T88V:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_TRST_A00:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._9_TP_600:
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._10_GIANT_100S:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._7_1NR://2018.01.22;"7:4610_1NR" 모델 추가, 이미지 처리는 _1_EPSON 과 동일;girak.kim
|
||
default:
|
||
SetBitmap_EPSON(sLogoFiles);
|
||
break;
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TOSHIBA:
|
||
SetBitmap_TOSHIBA(sLogoFiles);
|
||
break;
|
||
//case PosConst.POS_DEVICE_LIST.POS_PRINTER._11_P2C_All_In_One:
|
||
case PosConst.POS_DEVICE_LIST.POS_PRINTER._6_P2C:
|
||
break;
|
||
}
|
||
// 이미지 upload 후 sleep 필수
|
||
System.Threading.Thread.Sleep(8000);
|
||
}
|
||
devStatus.Printer.Status = "LOGO BMP DOWN SUCCESS";
|
||
//SetTopLogo = true;
|
||
//SetBottomLogo = true;
|
||
|
||
UserLog.WriteLogFile(UserCom.LOG_OP,
|
||
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 (함수명))
|
||
"devStatus.Printer.Status:"+devStatus.Printer.Status);
|
||
|
||
|
||
return true;
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
devStatus.Printer.Status = "LOGO BMP DOWN FAIL";
|
||
//SetBottomLogo = false;
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"SetLogoBmp Exception, devStatus.Printer.Status : " + devStatus.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"SetLogoBmp Exception, devStatus.Printer.Status : " + devStatus.Printer.Status);
|
||
#else
|
||
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 (함수명))
|
||
"SetLogoBmp Exception, devStatus.Printer.Status : " + devStatus.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
return false;
|
||
}
|
||
}
|
||
|
||
private void SetBitmap_TOSHIBA(string[] sFileName)
|
||
{
|
||
byte[] bytes;
|
||
try
|
||
{
|
||
int nBitmapCnt = sFileName.Length;
|
||
|
||
MemoryStream stream = new MemoryStream();
|
||
BinaryWriter bw = new BinaryWriter(stream);
|
||
|
||
for(int nRow = 0;nRow < nBitmapCnt;nRow++)
|
||
{
|
||
bw.Write((char)0x1F);
|
||
bw.Write((char)0x30);
|
||
|
||
bw.Write((byte)(3 + nRow));
|
||
|
||
byte[] raw = File.ReadAllBytes(sFileName[nRow]);
|
||
|
||
bw.Write((char)0x1F);
|
||
for(int i = 0;i < raw.Length;i++)
|
||
{
|
||
bw.Write(raw[i]);
|
||
}
|
||
}
|
||
bw.Flush();
|
||
bytes = stream.ToArray();
|
||
|
||
if (bytes != null && bytes.Length > 0)
|
||
{
|
||
TransmitCommand(bytes, false);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"SetBitmap_TOSHIBA() Exception : " + ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"SetBitmap_TOSHIBA() Exception : " + ex.Message);
|
||
#else
|
||
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 (함수명))
|
||
"SetBitmap_TOSHIBA() Exception : " + ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 명판 출력할 로고 이미지 Set
|
||
/// </summary>
|
||
/// <param name="sFileName">명판 출력 파일명</param>
|
||
/// <returns></returns>
|
||
private void SetBitmap_EPSON(string[] sFileName)
|
||
{
|
||
byte[] bytes;
|
||
try
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"SetBitmap_EPSON Start");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"SetBitmap_EPSON Start");
|
||
#else
|
||
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 (함수명))
|
||
"SetBitmap_EPSON Start");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
/* ──────────────────────────────────────────────────────
|
||
* [Name] Define NV bit image
|
||
* [Format] ASCII FS q n [xL xH yL yH d1...dk]1...[xL xH yL yH d1...dk]n
|
||
* Hex 1C 71 n [xL xH yL yH d1...dk]1...[xL xH yL yH d1...dk]n
|
||
* Decimal 28 113 n [xL xH yL yH d1...dk]1...[xL xH yL yH d1...dk]n
|
||
* [Description] Defines the NV bit image in the NV graphics area.
|
||
* • n specifies the number of defined NV bit images.
|
||
* • xL, xH specifies (xL + xH × 256) bytes in the horizontal direction for the NV bit image you defined.
|
||
* • yL, yH specifies (yL + yH × 256) bytes in the vertical direction for the NV bit image you defined.
|
||
* • d specifies the definition data for the NV bit image (column format).
|
||
* • k indicates the number of the definition data. k is an explanation parameter; therefore it does not need to be transmitted.
|
||
* Defined Region 1 ≤ n ≤ 255
|
||
* 0 ≤ xL ≤ 255
|
||
* 0 ≤ xH ≤ 3 However, 1 ≤ (xL+xH×256) ≤ 1023
|
||
* 0 ≤ yL ≤ 255
|
||
* 0 ≤ yH ≤ 1 However, 1 ≤ (yL+yH×256) ≤ 288
|
||
* 0 ≤ d ≤ 255
|
||
* k = (xL+xH×256) × (yL+yH×256) ×8
|
||
* Total defined data area = 2 M bytes (256 K bytes)
|
||
* ──────────────────────────────────────────────────────
|
||
*/
|
||
int nBitmapCnt = sFileName.Length;
|
||
|
||
MemoryStream stream = new MemoryStream();
|
||
BinaryWriter bw = new BinaryWriter(stream);
|
||
|
||
// 초기화
|
||
bw.Write((char)0x1B);
|
||
bw.Write((char)0x40);
|
||
|
||
//// Select pripheral device
|
||
//bw.Write((char)0x1B);
|
||
//bw.Write((char)0x3D);
|
||
//bw.Write((char)0x01);
|
||
|
||
// Define NV bit image
|
||
bw.Write((char)0x1C); // FS
|
||
bw.Write((char)0x71); // q
|
||
bw.Write((byte)nBitmapCnt);
|
||
|
||
|
||
for (int nRow = 0; nRow < nBitmapCnt; nRow++)
|
||
{
|
||
// 원본 이미지 Load
|
||
Bitmap image = new Bitmap(sFileName[nRow]);
|
||
// 1Bit Graysacle로 Convert
|
||
Bitmap bmptmp = ConvertGrayscale1or8Bit(image, 1);
|
||
byte[] raw = ConvertNVBitmap(bmptmp, true);
|
||
//byte[] raw = ConvertNVBitmap(image, true);
|
||
bw.Write(raw);
|
||
image.Dispose();
|
||
bmptmp.Dispose();
|
||
}
|
||
bw.Flush();
|
||
bytes = stream.ToArray();
|
||
|
||
if (bytes != null && bytes.Length > 0)
|
||
{
|
||
TransmitCommand(bytes, false);
|
||
}
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"SetBitmap_EPSON End");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"SetBitmap_EPSON End");
|
||
#else
|
||
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 (함수명))
|
||
"SetBitmap_EPSON End");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"SetBitmap_EPSON Exception : " + ex.Message);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"SetBitmap_EPSON Exception : " + ex.Message);
|
||
#else
|
||
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 (함수명))
|
||
"SetBitmap_EPSON Exception : " + ex.Message);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
|
||
private byte[] ConvertNVBitmap(Bitmap bitmap, bool bIncludeSize)
|
||
{
|
||
int baseIndex = ((bIncludeSize) ? 4 : 0);
|
||
int xSize = (bitmap.Width / 8);
|
||
if (xSize * 8 != bitmap.Width)
|
||
{
|
||
xSize++;
|
||
}
|
||
int ySize = (bitmap.Height / 8);
|
||
if (ySize * 8 != bitmap.Height)
|
||
{
|
||
ySize++;
|
||
}
|
||
|
||
byte[] raw = new byte[xSize * ySize * 8 + ((bIncludeSize) ? 4 : 0)];
|
||
|
||
try
|
||
{
|
||
for (int i = 0; i < raw.Length; raw[i++] = 0) ;
|
||
|
||
if (bIncludeSize)
|
||
{
|
||
raw[0] = (byte)(xSize & 0x00FF);
|
||
raw[1] = (byte)(xSize & 0xFF00);
|
||
raw[2] = (byte)(ySize & 0x00FF);
|
||
raw[3] = (byte)(ySize & 0xFF00);
|
||
}
|
||
|
||
int k = (raw[0] + raw[1] * 256) * (raw[2] + raw[3] * 256) * 8;
|
||
if (k > 2000000)
|
||
{
|
||
throw new Exception("Incorrect size");
|
||
}
|
||
if (raw[0] < 0 || raw[0] > 255 || raw[1] < 0 || raw[1] > 3 || (raw[0] + raw[1] * 255) < 1 || (raw[0] + raw[1] * 255) > 1023 ||
|
||
raw[2] < 0 || raw[2] > 255 || raw[3] < 0 || raw[3] > 1 || (raw[2] + raw[3] * 255) < 1 || (raw[2] + raw[3] * 255) > 288)
|
||
{
|
||
throw new Exception("Incorrect size");
|
||
}
|
||
|
||
for (int x = 0; x < bitmap.Width; x++)
|
||
{
|
||
for (int y = 0; y < bitmap.Height; y++)
|
||
{
|
||
Color color = bitmap.GetPixel(x, y);
|
||
if (RGBGreatEqual(color, 255, 255, 128))
|
||
{
|
||
continue;
|
||
}
|
||
int idx = (ySize * x) + y / 8;
|
||
byte mask = (byte)(0x80 >> (y % 8));
|
||
raw[idx + baseIndex] |= mask;
|
||
}
|
||
}
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + ex.Message);
|
||
#else
|
||
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);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
return raw;
|
||
}
|
||
|
||
private static bool RGBGreatEqual(Color c1, int R, int G, int B)
|
||
{
|
||
return (c1.R >= R && c1.G >= G && c1.B >= B);
|
||
}
|
||
|
||
private Bitmap ConvertGrayscale1or8Bit(System.Drawing.Bitmap b, int bitpixel)
|
||
{
|
||
if (bitpixel != 1 && bitpixel != 8) throw new System.ArgumentException("1 or 8", "bit");
|
||
|
||
int w = b.Width, h = b.Height;
|
||
IntPtr hbm = b.GetHbitmap();
|
||
|
||
BITMAPINFO bmi = new BITMAPINFO();
|
||
bmi.biSize = 40;
|
||
bmi.biWidth = w;
|
||
bmi.biHeight = h;
|
||
bmi.biPlanes = 1;
|
||
bmi.biBitCount = (short)bitpixel;
|
||
bmi.biCompression = BI_RGB;
|
||
bmi.biSizeImage = (uint)(((w + 7) & 0xFFFFFFF8) * h / 8);
|
||
bmi.biXPelsPerMeter = 1000000;
|
||
bmi.biYPelsPerMeter = 1000000;
|
||
|
||
uint ncols = (uint)1 << bitpixel;
|
||
bmi.biClrUsed = ncols;
|
||
bmi.biClrImportant = ncols;
|
||
bmi.cols = new uint[256];
|
||
if (bitpixel == 1) { bmi.cols[0] = MAKERGB(0, 0, 0); bmi.cols[1] = MAKERGB(255, 255, 255); }
|
||
else { for (int i = 0; i < ncols; i++) bmi.cols[i] = MAKERGB(i, i, i); }
|
||
|
||
IntPtr bits0;
|
||
IntPtr hbm0 = CreateDIBSection(IntPtr.Zero, ref bmi, DIB_RGB_COLORS, out bits0, IntPtr.Zero, 0);
|
||
IntPtr sdc = GetDC(IntPtr.Zero);
|
||
IntPtr hdc = CreateCompatibleDC(sdc); SelectObject(hdc, hbm);
|
||
IntPtr hdc0 = CreateCompatibleDC(sdc); SelectObject(hdc0, hbm0);
|
||
|
||
BitBlt(hdc0, 0, 0, w, h, hdc, 0, 0, SRCCOPY);
|
||
|
||
System.Drawing.Bitmap b0 = System.Drawing.Bitmap.FromHbitmap(hbm0);
|
||
|
||
DeleteDC(hdc);
|
||
DeleteDC(hdc0);
|
||
ReleaseDC(IntPtr.Zero, sdc);
|
||
DeleteObject(hbm);
|
||
DeleteObject(hbm0);
|
||
|
||
return b0;
|
||
}
|
||
private static uint MAKERGB(int r, int g, int b)
|
||
{
|
||
return ((uint)(b & 255)) | ((uint)((r & 255) << 8)) | ((uint)((g & 255) << 16));
|
||
}
|
||
#endregion
|
||
|
||
#region (RS232통신) 텍스트 출력 함수
|
||
|
||
private void WriteData(string sText)
|
||
{
|
||
byte[] outputBytes = System.Text.Encoding.Default.GetBytes(sText);
|
||
|
||
TransmitCommand(outputBytes);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 텍스트 왼쪽 정렬로 출력 후 Line feed
|
||
/// </summary>
|
||
/// <param name="sText"></param>
|
||
/// <returns></returns>
|
||
private void WriteLine(string sText, int nAlign = PosConst.PRINT_ALIGN.LEFT_ALIGN)
|
||
{
|
||
sText = sText.Trim('\n').Trim('\r');
|
||
byte[] outputBytes = System.Text.Encoding.Default.GetBytes(sText);
|
||
|
||
if (nAlign == PosConst.PRINT_ALIGN.LEFT_ALIGN)
|
||
{
|
||
TransmitCommand(PosConst.ESCP_COMMAND.LEFT_ALIGN, false);
|
||
}
|
||
else if (nAlign == PosConst.PRINT_ALIGN.CENTER_ALIGN)
|
||
{
|
||
TransmitCommand(PosConst.ESCP_COMMAND.CENTER_ALIGN, false);
|
||
}
|
||
else if (nAlign == PosConst.PRINT_ALIGN.RIGHT_ALIGN)
|
||
{
|
||
TransmitCommand(PosConst.ESCP_COMMAND.RIGHT_ALIGN, false);
|
||
}
|
||
|
||
TransmitCommand(outputBytes);
|
||
|
||
TransmitCommand(PosConst.ESCP_COMMAND.LEFT_ALIGN, false);
|
||
|
||
TransmitCommand(PosConst.ESCP_COMMAND.LINE_FEED);
|
||
}
|
||
/// <summary>
|
||
/// BOLD 옵션으로 텍스트 출력 후 Line feed
|
||
/// </summary>
|
||
/// <param name="sText"></param>
|
||
/// <returns></returns>
|
||
private void WriteLineBold(string sText, int nAlign = PosConst.PRINT_ALIGN.LEFT_ALIGN)
|
||
{
|
||
TransmitCommand(PosConst.ESCP_COMMAND.BOLD_ON);
|
||
WriteLine(sText, nAlign);
|
||
TransmitCommand(PosConst.ESCP_COMMAND.BOLD_OFF);
|
||
}
|
||
/// <summary>
|
||
/// 텍스트를 가로, 세로 2배 확대로 출력 후 Line feed
|
||
/// </summary>
|
||
/// <param name="sText"></param>
|
||
/// <returns></returns>
|
||
private void WriteLineZoom(string sText, int nAlign = PosConst.PRINT_ALIGN.LEFT_ALIGN)
|
||
{
|
||
TransmitCommand(PosConst.ESCP_COMMAND.ZOOM_ON);
|
||
WriteLine(sText, nAlign);
|
||
TransmitCommand(PosConst.ESCP_COMMAND.ZOOM_OFF);
|
||
}
|
||
/// <summary>
|
||
/// 텍스트를 가로 2배 확대로 출력 후 Line feed
|
||
/// </summary>
|
||
/// <param name="sText"></param>
|
||
/// <returns></returns>
|
||
private void WriteLineWidthX2(string sText, int nAlign = PosConst.PRINT_ALIGN.LEFT_ALIGN)
|
||
{
|
||
TransmitCommand(PosConst.ESCP_COMMAND.WIDTH_X2_ON);
|
||
WriteLine(sText, nAlign);
|
||
TransmitCommand(PosConst.ESCP_COMMAND.WIDTH_X2_OFF);
|
||
}
|
||
/// <summary>
|
||
/// 텍스트를 세로 2배 확대로 출력 후 Line feed
|
||
/// </summary>
|
||
/// <param name="sText"></param>
|
||
/// <returns></returns>
|
||
private void WriteLineHeightX2(string sText, int nAlign = PosConst.PRINT_ALIGN.LEFT_ALIGN)
|
||
{
|
||
TransmitCommand(PosConst.ESCP_COMMAND.HEIGHT_X2_ON);
|
||
WriteLine(sText, nAlign);
|
||
TransmitCommand(PosConst.ESCP_COMMAND.HEIGHT_X2_OFF);
|
||
}
|
||
/// <summary>
|
||
/// Set line spacing
|
||
/// </summary>
|
||
/// <param name="nLines">nLines < 0 일 경우, Set default line spacing</param>
|
||
/// <returns></returns>
|
||
private void SetLineSpace(int nLines)
|
||
{
|
||
if (nLines >= 0)
|
||
{
|
||
TransmitCommand(buildESCPCommand(PosConst.ESCP_COMMAND.SET_LINE_SPACING, (byte)nLines));
|
||
}
|
||
else
|
||
{
|
||
TransmitCommand(PosConst.ESCP_COMMAND.SET_DEFAULT_LINE_SPACING);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// Underline 옵션으로 텍스트 출력 후 Line feed
|
||
/// </summary>
|
||
/// <param name="sText"></param>
|
||
/// <returns></returns>
|
||
private void WriteLineUnderline(string sText, int nAlign = PosConst.PRINT_ALIGN.LEFT_ALIGN)
|
||
{
|
||
TransmitCommand(PosConst.ESCP_COMMAND.UNDERLINE_ON);
|
||
WriteLine(sText, nAlign);
|
||
TransmitCommand(PosConst.ESCP_COMMAND.UNDERLINE_OFF);
|
||
}
|
||
#endregion
|
||
|
||
#region (RS232) 명령어 조합 및 전송
|
||
private byte[] buildESCPCommand(byte[] command, byte[] args)
|
||
{
|
||
byte[] ESCPCommand = new byte[command.Length + args.Length];
|
||
|
||
Array.Copy(command, 0, ESCPCommand, 0, command.Length);
|
||
Array.Copy(args, 0, ESCPCommand, command.Length, args.Length);
|
||
|
||
return ESCPCommand;
|
||
}
|
||
|
||
private byte[] buildESCPCommand(byte[] command, byte arg)
|
||
{
|
||
byte[] ESCPCommand = new byte[command.Length + 1];
|
||
|
||
Array.Copy(command, 0, ESCPCommand, 0, command.Length);
|
||
ESCPCommand[command.Length] = arg;
|
||
|
||
return ESCPCommand;
|
||
}
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//기존
|
||
#if(PRT_O2PRINTER)
|
||
#else
|
||
private void TransmitCommand(byte[] aCmd, bool bSleepOn = true)
|
||
#endif
|
||
//변경
|
||
#if(PRT_O2PRINTER)
|
||
private void TransmitCommand(byte[] aCmd, bool bSleepOn = true, bool bHeathChk = false)
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
{
|
||
try
|
||
{
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//기존
|
||
#if(PRT_O2PRINTER)
|
||
#else
|
||
if (m_serialPort.IsOpen == true)
|
||
{
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
int iOffset = 0;
|
||
// Send 를 위한 buffer 크기를 1024 byte 로 고정(20170608)
|
||
int iReadBuf = 1024;
|
||
//int iReadBuf = m_serialPort.WriteBufferSize;
|
||
|
||
while (true)
|
||
{
|
||
if (iOffset >= aCmd.Length)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "TransmitCommand Finish " + aCmd.Length.ToString() + "," + iOffset.ToString());
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "TransmitCommand Finish " + aCmd.Length.ToString() + "," + iOffset.ToString());
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "TransmitCommand Finish " + aCmd.Length.ToString() + "," + iOffset.ToString());
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
break;
|
||
}
|
||
if (iReadBuf + iOffset > aCmd.Length)
|
||
{
|
||
iReadBuf = aCmd.Length - iOffset;
|
||
}
|
||
|
||
//#20180123 프린터 다운 현상 관련 로그 추가 start
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Prineter Write : TransmitCommand() Start");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Prineter Write : TransmitCommand() Start");
|
||
#else
|
||
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 (함수명))
|
||
"Prineter Write : TransmitCommand() Start");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
//#20180123 프린터 다운 현상 관련 로그 추가 end
|
||
|
||
|
||
// grayber@20180124 프린터 출력관련 오류 수정 start - 프린터 배열 오프셋 설정 오류로 변수 변경
|
||
//기존
|
||
//m_serialPort.Write(aCmd, iOffset, aCmd.Length);
|
||
//수정
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//전체 버퍼 한번에 출력 하도록 수정
|
||
#if(PRT_ALLWRITE) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Prineter Write data: " + Encoding.Default.GetString(aCmd));
|
||
|
||
m_serialPort.Write(Encoding.Default.GetString(aCmd));
|
||
//m_serialPort.Write(aCmd, iOffset, aCmd.Length);
|
||
#else
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//기존
|
||
#if(PRT_O2PRINTER)
|
||
#else
|
||
m_serialPort.Write(aCmd, iOffset, iReadBuf);
|
||
#endif
|
||
//변경
|
||
#if(PRT_O2PRINTER)
|
||
// TCP 접속 정보
|
||
string sPrtTcpIp = "127.0.0.1";
|
||
string sPrtTcpPort = "9110";
|
||
|
||
// 프린터 PORT 번호
|
||
string sPrtPort = CmUtil.MidH(m_cPosStatus.Base.OlePosPrinterSerialPortNumber, 3, m_cPosStatus.Base.OlePosPrinterSerialPortNumber.Length - 3);
|
||
|
||
//Connect
|
||
int iRet = OpenPrtTcpDevice(sPrtTcpIp, int.Parse(sPrtTcpPort));
|
||
|
||
//#20181114 영수증 프린터 base63로 전송 start
|
||
//기존
|
||
#region 기존
|
||
|
||
//출력
|
||
// 0001: 출력, 0002: 헬스체크
|
||
string sPrtGb = "0001";
|
||
string sTimeOut = "00000";
|
||
|
||
if (bHeathChk == true)
|
||
{
|
||
sPrtGb = "0002";
|
||
sTimeOut = "00500";
|
||
}
|
||
else if (bHeathChk == false)
|
||
{
|
||
sPrtGb = "0001";
|
||
sTimeOut = "00000";
|
||
}
|
||
|
||
// tcp 헤더
|
||
string sCommHeader = sPrtGb + // 0001: 출력, 0002: 헬스체크
|
||
string.Format("{0:D2}", Convert.ToInt32(sPrtPort)) + // 01,02,03 포트번호
|
||
string.Format("{0:D6}", (int)m_cPosStatus.Base.OlePosPrinterSerialBaudRate) + // 프린터 속도
|
||
sTimeOut + // 타임아웃
|
||
string.Format("{0:D6}", (int)aCmd.Length); // 출력 데이터 길이
|
||
|
||
// tcp 종료구분자
|
||
string sETX = string.Format("{0}", (char)0x03) +
|
||
string.Format("{0}", (char)0x03) +
|
||
string.Format("{0}", (char)0x03);
|
||
|
||
// tcp 헤더 byte로 변환
|
||
byte[] sSendbt = null;
|
||
sSendbt = Encoding.Default.GetBytes(sCommHeader);
|
||
|
||
// tcp 종료구분자 byte로 변환
|
||
byte[] byEtx = null;
|
||
byEtx = Encoding.Default.GetBytes(sETX);
|
||
|
||
// 전체 tcp 전송 데이터 byte 배열 생성
|
||
byte[] sSendData = new byte[sSendbt.Length + aCmd.Length + byEtx.Length];
|
||
|
||
// sSendData 배열에 tcp 헤더 데이터 복사
|
||
Array.Copy(sSendbt, 0, sSendData, 0, sSendbt.Length);
|
||
// sSendData 배열에 영수증 출력 데이터 복사
|
||
Array.Copy(aCmd, 0, sSendData, sSendbt.Length, aCmd.Length);
|
||
// sSendData 배열에 tcp 종료구분자 복사
|
||
Array.Copy(byEtx, 0, sSendData, sSendbt.Length + aCmd.Length, byEtx.Length);
|
||
|
||
// 응답 배열 초기화
|
||
bytRecvBuff = null;
|
||
|
||
// 전체 한번에 전송하기 위에 전송 길이 재설정
|
||
iOffset += aCmd.Length;
|
||
|
||
// byte[], int, ref byte[], int
|
||
int iPrtSendSocket = m_cPrtSocket.Prt_ByPassSendReceiveData(sSendData, lRecvLen, ref bytRecvBuff, lTimeout);
|
||
|
||
//string sTemp0 = Encoding.Default.GetString(aCmd);
|
||
|
||
#endregion 기존
|
||
//변경
|
||
#region 변경
|
||
/*
|
||
//출력
|
||
// 0101: 출력, 0102: 헬스체크
|
||
string sPrtGb = "0101";
|
||
string sTimeOut = "00000";
|
||
|
||
if (bHeathChk == true)
|
||
{
|
||
sPrtGb = "0102";
|
||
sTimeOut = "00500";
|
||
}
|
||
else if (bHeathChk == false)
|
||
{
|
||
sPrtGb = "0101";
|
||
sTimeOut = "00000";
|
||
}
|
||
|
||
string sSendDataBase64 = Convert.ToBase64String(aCmd);
|
||
byte[] btSendDataBase64 = Encoding.Default.GetBytes(sSendDataBase64);
|
||
|
||
|
||
// tcp 헤더
|
||
string sCommHeader = sPrtGb + // 0001: 출력, 0002: 헬스체크
|
||
string.Format("{0:D2}", Convert.ToInt32(sPrtPort)) + // 01,02,03 포트번호
|
||
string.Format("{0:D6}", (int)m_cPosStatus.Base.OlePosPrinterSerialBaudRate) + // 프린터 속도
|
||
sTimeOut + // 타임아웃
|
||
string.Format("{0:D6}", (int)btSendDataBase64.Length); // 출력 데이터 길이
|
||
|
||
// tcp 종료구분자
|
||
string sETX = string.Format("{0}", (char)0x03) +
|
||
string.Format("{0}", (char)0x03) +
|
||
string.Format("{0}", (char)0x03);
|
||
|
||
// tcp 헤더 byte로 변환
|
||
byte[] sSendbt = null;
|
||
sSendbt = Encoding.Default.GetBytes(sCommHeader);
|
||
|
||
// tcp 종료구분자 byte로 변환
|
||
byte[] byEtx = null;
|
||
byEtx = Encoding.Default.GetBytes(sETX);
|
||
|
||
// 전체 tcp 전송 데이터 byte 배열 생성
|
||
byte[] sSendData = new byte[sSendbt.Length + btSendDataBase64.Length + byEtx.Length];
|
||
|
||
// sSendData 배열에 tcp 헤더 데이터 복사
|
||
Array.Copy(sSendbt, 0, sSendData, 0, sSendbt.Length);
|
||
// sSendData 배열에 영수증 출력 데이터 복사
|
||
Array.Copy(btSendDataBase64, 0, sSendData, sSendbt.Length, btSendDataBase64.Length);
|
||
// sSendData 배열에 tcp 종료구분자 복사
|
||
Array.Copy(byEtx, 0, sSendData, sSendbt.Length + btSendDataBase64.Length, byEtx.Length);
|
||
|
||
// 응답 배열 초기화
|
||
bytRecvBuff = null;
|
||
|
||
// 전체 한번에 전송하기 위에 전송 길이 재설정
|
||
iOffset += aCmd.Length;
|
||
|
||
// byte[], int, ref byte[], int
|
||
int iPrtSendSocket = m_cPrtSocket.Prt_ByPassSendReceiveData(sSendData, lRecvLen, ref bytRecvBuff, lTimeout);
|
||
|
||
//string sTemp0 = Encoding.Default.GetString(aCmd);
|
||
//string sTemp1 = Encoding.Default.GetString(btSendDataBase64);
|
||
//byte[] sBtTemp1 = Convert.FromBase64String(sTemp1);
|
||
//string sTemp2 = Encoding.Default.GetString(sBtTemp1);
|
||
*/
|
||
#endregion 변경
|
||
//#20181114 영수증 프린터 base63로 전송 end
|
||
|
||
//System.Threading.Thread.Sleep(2000);
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
// grayber@20180124 프린터 출력관련 오류 수정 end
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//프린터 ErrorReceived
|
||
#if(PRT_RECVERR) //프린터 포트 동작 변경시
|
||
//m_serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
|
||
m_serialPort.ErrorReceived += new SerialErrorReceivedEventHandler(serialPort_ErrorReceived);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
|
||
//#20180123 프린터 다운 현상 관련 로그 추가 start
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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 (함수명))
|
||
"Prineter Write : TransmitCommand() End");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Prineter Write : TransmitCommand() End");
|
||
#else
|
||
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 (함수명))
|
||
"Prineter Write : TransmitCommand() End");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
//#20180123 프린터 다운 현상 관련 로그 추가 end
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//기존
|
||
#if(PRT_O2PRINTER)
|
||
#else
|
||
//전체 버퍼 한번에 출력 하도록 수정
|
||
#if(PRT_ALLWRITE) //프린터 포트 동작 변경시
|
||
iOffset += aCmd.Length;
|
||
#else
|
||
iOffset += iReadBuf;
|
||
#endif
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
System.Threading.Thread.Sleep(10);
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, aCmd.Length.ToString() + "," + iOffset.ToString());
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, aCmd.Length.ToString() + "," + iOffset.ToString());
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, aCmd.Length.ToString() + "," + iOffset.ToString());
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
//m_serialPort.Write(Encoding.Default.GetString(aCmd, 0, aCmd.Length));
|
||
|
||
if (bSleepOn == true) System.Threading.Thread.Sleep(30);
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//기존
|
||
#if(PRT_O2PRINTER)
|
||
#else
|
||
}
|
||
else
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Serial Port Is Not Opened");
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
UserLog.WriteLogFile(UserCom.LOG_OP, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Serial Port Is Not Opened");
|
||
#else
|
||
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
||
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Serial Port Is Not Opened");
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + devStatus.Printer.Status);
|
||
#else
|
||
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.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
|
||
this.CloseDevice();
|
||
}
|
||
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//출력 할때 마다 open, close 하는 부분 한번만 하도록 수정
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
finally
|
||
{
|
||
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 (함수명))
|
||
"Prineter Write : TransmitCommand() finally");
|
||
}
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
#endregion
|
||
|
||
#region 돈통 Open함수
|
||
/// <summary>
|
||
/// 돈통 Open 함수
|
||
/// </summary>
|
||
public void OpenCashDrawer()
|
||
{
|
||
try
|
||
{
|
||
if (m_cPosStatus.Base.OlePosCashDrawerType == PosConst.POS_DEVICE_LIST.CASHDRAWER._1_PRINTER)
|
||
{
|
||
this.AddToPrinterBuffer(Encoding.UTF8.GetBytes(CMD_OPEN_CASHDRAWER));
|
||
//if (devStatus.Printer.Open == false)
|
||
//{
|
||
// this.OpenDevice(PosConst.OPOS_DEVICE.POSPRINTER, PosConst.OPOS_LDN.POSPRINTER);
|
||
//}
|
||
//switch (m_cPosStatus.Base.OlePosPrinterModel)
|
||
//{
|
||
// case PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON:
|
||
// case PosConst.POS_DEVICE_LIST.POS_PRINTER._6_P2C:
|
||
// default:
|
||
// TransmitCommand(PosConst.ESCP_COMMAND.OPEN_CASHDRAWER);
|
||
// break;
|
||
// case PosConst.POS_DEVICE_LIST.POS_PRINTER._2_TOSHIBA:
|
||
// TransmitCommand(PosConst.ESCP_COMMAND.OPEN_CASHDRAWER_FOR_TOSHIBA);
|
||
// break;
|
||
//}
|
||
//if(devStatus.Printer.Open == true)
|
||
//{
|
||
// this.CloseDevice();
|
||
//}
|
||
}
|
||
}
|
||
catch(Exception ex)
|
||
{
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 start
|
||
//로그 생성 위치 변경 UserCom.LOG_IOS, LOG_ERROR -> UserCom.LOG_OP
|
||
//기존
|
||
/*
|
||
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.Printer.Status);
|
||
*/
|
||
//변경
|
||
#if(PRT_ERROR) //프린터 포트 동작 변경시
|
||
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 (함수명))
|
||
"Exception :" + devStatus.Printer.Status);
|
||
#else
|
||
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.Printer.Status);
|
||
#endif
|
||
//#20180329 프린터 간헐적 미출력 증상 수정 end
|
||
}
|
||
}
|
||
|
||
//20180611 프린터 미출력 개선 02Printer.exe start
|
||
//변경
|
||
#if(PRT_O2PRINTER)
|
||
#region Printer OPEN / CLOSE
|
||
public int OpenPrtTcpDevice(string sIp, int iPort)
|
||
{
|
||
int iRet = UserCom.NG;
|
||
try
|
||
{
|
||
// PING 테스트로 프린터 가능여부 확인(2017.05.30)
|
||
if (CmUtil.PingTest(sIp) == false)
|
||
{
|
||
if (CmUtil.PingTest(sIp) == false)
|
||
{
|
||
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 (함수명))
|
||
"PrtTcp PingTest Fail");
|
||
return iRet;
|
||
}
|
||
|
||
}
|
||
|
||
m_cPrtSocket = new TcpSocket(sIp, iPort, lTimeout);
|
||
|
||
if (m_cPrtSocket == null)
|
||
{
|
||
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 (함수명))
|
||
"TcpSocket null");
|
||
return -9;
|
||
}
|
||
|
||
// 접속 3회 시도
|
||
for (int nLoop = 0; nLoop < 1; nLoop++)
|
||
{
|
||
try
|
||
{
|
||
iRet = m_cPrtSocket.Connect(-1);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
iRet = UserCom.NG;
|
||
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 (함수명))
|
||
"PrtTcp Exception Error=" + ex.Message);
|
||
m_cPrtSocket.Close();
|
||
continue;
|
||
}
|
||
// 접속 실패
|
||
if (iRet != UserCom.OK)
|
||
{
|
||
iRet = UserCom.NG;
|
||
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 (함수명))
|
||
"PrtTcp(Ethernet) Connect Error");
|
||
m_cPrtSocket.Close();
|
||
continue;
|
||
}
|
||
|
||
break;
|
||
}
|
||
|
||
return iRet;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
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 (함수명))
|
||
ex.Message);
|
||
return -99;
|
||
}
|
||
}
|
||
|
||
public void ClosePrtTcpDevice()
|
||
{
|
||
try
|
||
{
|
||
if (m_cPrtSocket != null)
|
||
{
|
||
m_cPrtSocket.Close();
|
||
m_cPrtSocket = null;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
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 (함수명))
|
||
ex.Message);
|
||
}
|
||
}
|
||
#endregion
|
||
#endif
|
||
//20180611 프린터 미출력 개선 02Printer.exe end
|
||
#endregion
|
||
}
|
||
} |