using OTSCLRINTERFACE; using OTSDataType; using OTSModelSharp; using System; using System.Collections.Generic; using System.Drawing; using static OTSDataType.otsdataconst; namespace OTSMeasureApp._1_OTSMeasure.Measure._3_MeasureFlow { public enum ENUM_MSG_TYPE { MTHREADSTATUS = 1001, MSAMPLESTATUS = 1002, MSAMPLERESULT = 1003 }; public enum MSAMPLE_RET { BSE_DATA = 0, REMOVEBG_DATA=1, FIELD_DATA = 2, START_MSR_FIELD = 3 }; public struct SMSR_COMPLETE_DATA { public OTS_MSR_THREAD_STATUS MsrStatus; public string csMsrStartTime; public int iMsrCompleteSampleCount; public int iMsrCompleteFieldCount; public int iParticleCount; public TimeSpan MsrUsedTime; public string csMsrEndTime; }; public struct STMThreadStatus { public OTS_MSR_THREAD_STATUS iMsrStatu; //OTS_MSR_THREAD_STATUS public string csMsrStartTime; //MSR_START_TIME public string csMsrEndTime; //MSR_END_TIME public SMSR_COMPLETE_DATA SMsrCompleteData; }; public struct STMSampleStatus { public OTS_MSR_SAMPLE_STATUS iMsrSampleStatu; //OTS_MSR_SAMPLE_STATUS public string cSampleName; public string csSampleMsrStartTime; public List BCompleteFieldList; }; public struct STMSampleResultData { public MSAMPLE_RET iRetDataType; //ENUM_MEASURE_SAMPLE_RESULT public struct RBSEDATA { public int fieldId; public System.Drawing.Point pos; public int iBSEDataHeight; public int iBSEDataWidth; public byte[] lpBSEData; public Bitmap coloredImg; }; public struct SAMPLEFIELDDATA { public System.Drawing.Point FieldPos; public int iMeasureFieldCount; public int iCompleteFieldCount; public int iSParticleCount; // Field particle count public TimeSpan TUsedTime; }; public struct StartToMsrField { public System.Drawing.Point FieldPos; }; public RBSEDATA BSEData; public SAMPLEFIELDDATA SFieldData; public StartToMsrField SMsrField; }; public class ST_MSTMsg { private COTSSample m_sample; private CMsrThreadStatus m_msrStatus; private CMsrSampleStatus m_sampleStatus; private COTSField m_curFld; public ENUM_MSG_TYPE iMsgType; public STMThreadStatus STMThreadStu; public STMSampleStatus STMSampleStu; public STMSampleResultData STMSampleRetData; public ST_MSTMsg(CMsrThreadStatus measurestatus) { m_msrStatus = measurestatus; } public ST_MSTMsg(COTSSample sample) { m_sample = sample; m_sampleStatus = sample.GetMsrStatus(); } public ST_MSTMsg(COTSSample sample,COTSField curfld) { m_sample = sample; m_sampleStatus = sample.GetMsrStatus(); m_curFld = curfld; } internal void InitThreadOverMsg() { iMsgType = ENUM_MSG_TYPE.MTHREADSTATUS; STMThreadStu.iMsrStatu = m_msrStatus.GetStatus(); DateTime timeEnd = m_msrStatus.GetEndTime(); STMThreadStu.csMsrEndTime = timeEnd.ToString("yyyy-MM-dd HH:mm:ss"); } public void InitThreadStartMsg() { iMsgType = ENUM_MSG_TYPE.MTHREADSTATUS; DateTime timeStart = m_msrStatus.GetStartTime(); STMThreadStu.iMsrStatu = OTS_MSR_THREAD_STATUS.INPROCESS; STMThreadStu.csMsrStartTime = timeStart.ToShortDateString(); } internal void InitThreadPausedMsg() { this.iMsgType = ENUM_MSG_TYPE.MSAMPLESTATUS; STMThreadStu.iMsrStatu = OTS_MSR_THREAD_STATUS.PAUSED; STMSampleStu.iMsrSampleStatu = OTS_MSR_SAMPLE_STATUS.PAUSED; STMThreadStu.csMsrEndTime = DateTime.Now.ToShortDateString(); STMThreadStu.iMsrStatu = OTS_MSR_THREAD_STATUS.PAUSED; } internal void InitThreadStoppedMsg() { iMsgType = ENUM_MSG_TYPE.MSAMPLESTATUS; STMThreadStu.iMsrStatu = OTS_MSR_THREAD_STATUS.STOPPED; STMSampleStu.iMsrSampleStatu = OTS_MSR_SAMPLE_STATUS.STOPPED; STMThreadStu.csMsrEndTime = DateTime.Now.ToShortDateString(); STMThreadStu.iMsrStatu = OTS_MSR_THREAD_STATUS.STOPPED; } internal void InitThreadFailedMsg() { iMsgType = ENUM_MSG_TYPE.MSAMPLESTATUS; STMSampleStu.iMsrSampleStatu = OTS_MSR_SAMPLE_STATUS.FAILED; } internal void InitThreadSucceedMsg() { iMsgType = ENUM_MSG_TYPE.MSAMPLESTATUS; STMSampleStu.iMsrSampleStatu = OTS_MSR_SAMPLE_STATUS.SUCCESSED; } internal void InitSampleStartMsg() { this.iMsgType = ENUM_MSG_TYPE.MSAMPLESTATUS; this.STMSampleStu.iMsrSampleStatu = OTS_MSR_SAMPLE_STATUS.INPROCESS; this.STMSampleStu.cSampleName = m_sample.GetName(); } internal void InitSamplePausedMsg() { this.iMsgType = ENUM_MSG_TYPE.MSAMPLESTATUS; //this.STMThreadStu.iMsrStatu = m_sample.GetMsrStatus().GetStatus(); this.STMSampleStu.iMsrSampleStatu = OTS_MSR_SAMPLE_STATUS.PAUSED; this.STMThreadStu.csMsrEndTime = DateTime.Now.ToShortDateString(); } internal void InitSampleCompleteMsg() { this.iMsgType = ENUM_MSG_TYPE.MSAMPLESTATUS; this.STMSampleStu.iMsrSampleStatu = OTS_MSR_SAMPLE_STATUS.SUCCESSED; this.STMSampleStu.cSampleName = m_sample.GetName(); ; } internal void InitFieldStartMsg() { var poiFieldCentre = m_curFld.GetOTSPosition(); this.iMsgType = ENUM_MSG_TYPE.MSAMPLERESULT; this.STMSampleRetData.iRetDataType = MSAMPLE_RET.START_MSR_FIELD; this.STMSampleRetData.SMsrField.FieldPos = new Point((int)poiFieldCentre.X, (int)poiFieldCentre.Y); } internal void InitFieldBSEImageMsg() { var poiFieldCentre = m_curFld.GetOTSPosition(); var pBSEImg = m_curFld.GetBSEImage(); this.iMsgType = ENUM_MSG_TYPE.MSAMPLERESULT; this.STMSampleRetData.iRetDataType = MSAMPLE_RET.BSE_DATA; this.STMSampleRetData.BSEData.pos.X = (int)poiFieldCentre.X; this.STMSampleRetData.BSEData.pos.Y = (int)poiFieldCentre.Y; this.STMSampleRetData.BSEData.iBSEDataHeight = pBSEImg.GetHeight(); this.STMSampleRetData.BSEData.iBSEDataWidth = pBSEImg.GetWidth(); byte[] pImgData = pBSEImg.GetImageDataPtr(); this.STMSampleRetData.BSEData.lpBSEData = pImgData; } internal void InitFieldBSEAnalysisPartsDataMsg() { var poiFieldCentre = m_curFld.GetOTSPosition(); var pImg = m_curFld.GetAnalysisParticleBlackColoredImage(); this.iMsgType = ENUM_MSG_TYPE.MSAMPLERESULT; this.STMSampleRetData.iRetDataType = MSAMPLE_RET.REMOVEBG_DATA; this.STMSampleRetData.BSEData.pos.X = (int)poiFieldCentre.X; this.STMSampleRetData.BSEData.pos.Y = (int)poiFieldCentre.Y; this.STMSampleRetData.BSEData.iBSEDataHeight = pImg.Height; this.STMSampleRetData.BSEData.iBSEDataWidth = pImg.Width; //byte[] pImgData = pBSEImg.GetImageDataPtr(); this.STMSampleRetData.BSEData.coloredImg = pImg; } internal void InitFieldSTDColoredPartsDataMsg() { var poiFieldCentre = m_curFld.GetOTSPosition(); var pImg = m_curFld.GetAnalysisParticleSTDColoredImage(); this.iMsgType = ENUM_MSG_TYPE.MSAMPLERESULT; this.STMSampleRetData.iRetDataType = MSAMPLE_RET.REMOVEBG_DATA; this.STMSampleRetData.BSEData.pos.X = (int)poiFieldCentre.X; this.STMSampleRetData.BSEData.pos.Y = (int)poiFieldCentre.Y; this.STMSampleRetData.BSEData.iBSEDataHeight = pImg.Height; this.STMSampleRetData.BSEData.iBSEDataWidth = pImg.Width; //byte[] pImgData = pBSEImg.GetImageDataPtr(); this.STMSampleRetData.BSEData.coloredImg = pImg; } internal void InitFieldDataMsg() { var pStatus = m_sample.GetMsrStatus(); iMsgType = ENUM_MSG_TYPE.MSAMPLERESULT; STMSampleRetData.iRetDataType = MSAMPLE_RET.FIELD_DATA; STMSampleRetData.SFieldData.iCompleteFieldCount = pStatus.GetCompletedFields(); STMSampleRetData.SFieldData.iMeasureFieldCount = m_sample.GetFieldsData().Count; STMSampleRetData.SFieldData.iSParticleCount = (int)m_curFld.GetListAnalysisParticles().Count; STMSampleRetData.SFieldData.FieldPos.X = Convert.ToInt32(m_curFld.GetOTSPosition().X); STMSampleRetData.SFieldData.FieldPos.Y = Convert.ToInt32(m_curFld.GetOTSPosition().Y); } internal void InitHolePreThreadInProcessMsg() { iMsgType = ENUM_MSG_TYPE.MTHREADSTATUS; STMThreadStu.iMsrStatu = OTS_MSR_THREAD_STATUS.INPROCESS; } internal void InitHolePreThreadStoppedMsg() { iMsgType = ENUM_MSG_TYPE.MSAMPLESTATUS; STMSampleStu.iMsrSampleStatu = OTS_MSR_SAMPLE_STATUS.STOPPED; } internal void InitHolePreThreadFailedMsg() { iMsgType = ENUM_MSG_TYPE.MSAMPLESTATUS; STMSampleStu.iMsrSampleStatu = OTS_MSR_SAMPLE_STATUS.FAILED; } internal void InitHolePreThreadSucceedMsg() { iMsgType = ENUM_MSG_TYPE.MTHREADSTATUS; STMSampleStu.iMsrSampleStatu = OTS_MSR_SAMPLE_STATUS.SUCCESSED; } internal void InitHolePreBSEDataMsg(CBSEImgClr pBSEIamge,Point poiFieldCenter) { var poiFieldCentre = poiFieldCenter; var pBSEImg = pBSEIamge; this.iMsgType = ENUM_MSG_TYPE.MSAMPLERESULT; this.STMSampleRetData.iRetDataType = MSAMPLE_RET.BSE_DATA; this.STMSampleRetData.BSEData.pos.X = (int)poiFieldCentre.X; this.STMSampleRetData.BSEData.pos.Y = (int)poiFieldCentre.Y; this.STMSampleRetData.BSEData.iBSEDataHeight = pBSEImg.GetHeight(); this.STMSampleRetData.BSEData.iBSEDataWidth = pBSEImg.GetWidth(); byte[] pImgData = pBSEImg.GetImageDataPtr(); this.STMSampleRetData.BSEData.lpBSEData = pImgData; } internal void InitHolePreSampleEndMsg() { iMsgType = ENUM_MSG_TYPE.MTHREADSTATUS; STMThreadStu.iMsrStatu = OTS_MSR_THREAD_STATUS.COMPLETED; } } }