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