private static void AddMessagesToList(FocasLibBase.ODBOMHIS2 obj, List <OprMessageDTO> oprMessagesObj)
 {
     oprMessagesObj.Add(ConvertToMessage(obj.opm_his.data1));
     oprMessagesObj.Add(ConvertToMessage(obj.opm_his.data2));
     oprMessagesObj.Add(ConvertToMessage(obj.opm_his.data3));
     oprMessagesObj.Add(ConvertToMessage(obj.opm_his.data4));
     oprMessagesObj.Add(ConvertToMessage(obj.opm_his.data5));
     oprMessagesObj.Add(ConvertToMessage(obj.opm_his.data6));
     oprMessagesObj.Add(ConvertToMessage(obj.opm_his.data7));
     oprMessagesObj.Add(ConvertToMessage(obj.opm_his.data8));
     oprMessagesObj.Add(ConvertToMessage(obj.opm_his.data9));
     oprMessagesObj.Add(ConvertToMessage(obj.opm_his.data10));
 }
        //CNC parameter '3112#2' must be 1.
        public static List <OprMessageDTO> ReadExternalOperatorMessageHistory0i(string machineID, string ipAddress, ushort portNo)
        {
            int    ret            = 0;
            ushort focasLibHandle = 0;
            List <OprMessageDTO> oprMessagesObj = new List <OprMessageDTO>();

            try
            {
                ret = FocasLib.cnc_allclibhndl3(ipAddress, portNo, 10, out focasLibHandle);
                if (ret != 0)
                {
                    Logger.WriteErrorLog("cnc_allclibhndl3() failed. return value is = " + ret);
                    return(null);
                }

                ret = FocasLib.cnc_stopophis(focasLibHandle);
                if (ret != 0)
                {
                    Logger.WriteErrorLog("cnc_stopophis() failed. return value is = " + ret);
                    return(null);
                }
                ushort totalMessages = 0;
                ret = FocasLib.cnc_rdomhisno(focasLibHandle, out totalMessages);
                if (ret != 0)
                {
                    Logger.WriteErrorLog("cnc_rdomhisno() failed. return value is = " + ret);
                    return(null);
                }
                if (totalMessages == 0)
                {
                    return(oprMessagesObj);
                }

                //10 rows at a time

                ushort loop_count = (ushort)(totalMessages / 10);
                ushort remainder = (ushort)(totalMessages % 10);
                ushort i = 0, s_no = 0, e_no = 0;
                //ushort length = 4 + 512 * 10;

                for (i = 0; i <= loop_count; i++)
                {
                    if (i == loop_count)
                    {
                        if (remainder > 0)
                        {
                            s_no = (ushort)(i * 10 + 1);
                            e_no = (ushort)(s_no + (remainder - 1));
                            FocasLibBase.ODBOMHIS2 obj = new FocasLibBase.ODBOMHIS2();
                            ushort length = (ushort)Marshal.SizeOf(obj);
                            ret = FocasLib.cnc_rdomhistry2(focasLibHandle, s_no, e_no, length, obj);
                            if (ret != 0)
                            {
                                Logger.WriteErrorLog("cnc_rdomhistry2() failed. return value is = " + ret);
                                continue;
                            }
                            AddMessagesToList(obj, oprMessagesObj);
                            try
                            {
                                oprMessagesObj.RemoveRange(totalMessages, oprMessagesObj.Count - totalMessages);
                            }
                            catch (Exception exxx)
                            {
                                Logger.WriteErrorLog(exxx.ToString());
                            }
                        }
                    }
                    else
                    {
                        s_no = (ushort)(i * 10 + 1);
                        e_no = (ushort)(s_no + 9);
                        FocasLibBase.ODBOMHIS2 obj = new FocasLibBase.ODBOMHIS2();
                        ushort length = (ushort)Marshal.SizeOf(obj);
                        ret = FocasLib.cnc_rdomhistry2(focasLibHandle, s_no, e_no, length, obj);
                        if (ret != 0)
                        {
                            Logger.WriteErrorLog("cnc_rdomhistry2() failed. return value is = " + ret);
                            continue;
                        }
                        AddMessagesToList(obj, oprMessagesObj);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.WriteErrorLog(ex.ToString());
            }
            finally
            {
                if (focasLibHandle > 0)
                {
                    ret = FocasLib.cnc_startophis(focasLibHandle);
                    FocasData.cnc_freelibhndl(focasLibHandle);
                }
            }
            foreach (OprMessageDTO item in oprMessagesObj)
            {
                item.MachineID = machineID;
            }
            return(oprMessagesObj);
        }