Пример #1
0
        //to sent to cnc
        //cnc_dwnstart3, cnc_download3, cnc_dwnend3
        public static bool UploadProgramHytech(string ipAddress, ushort portNo, string programContentToSend, string folderPath, bool isProgramFolderSupports)
        {
            short  ret = -20;
            int    len, n;
            ushort focasLibHandle = 0;

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

            int count = 0;

            ret = short.MinValue;
            while (ret != 0 && count < 100)
            {
                if (isProgramFolderSupports == false)
                {
                    ret = FocasLib.cnc_dwnstart3(focasLibHandle, 0);
                }
                else
                {
                    ret = FocasLib.cnc_dwnstart4(focasLibHandle, 0, folderPath);
                }
                count++;
                if (ret == -1)
                {
                    Thread.Sleep(200);
                }
            }
            if (ret == -1)
            {
                if (isProgramFolderSupports == false)
                {
                    FocasLib.cnc_dwnend(focasLibHandle);
                }
                else
                {
                    FocasLib.cnc_dwnend4(focasLibHandle);
                }
                FocasLib.cnc_freelibhndl(focasLibHandle);
                Logger.WriteErrorLog("CNC is busy. Please try after some time.");
                return(false);
            }
            if (ret != 0)
            {
                Logger.WriteErrorLog("cnc_dwnstart3() failed. return value is = " + ret);
                FocasLib.cnc_freelibhndl(focasLibHandle);
                return(false);
            }
            if (ret == FocasLib.EW_OK)
            {
                len = programContentToSend.Length;
                while (len > 0)
                {
                    n = programContentToSend.Length;
                    if (isProgramFolderSupports == false)
                    {
                        ret = FocasLib.cnc_download3(focasLibHandle, ref n, programContentToSend);
                    }
                    else
                    {
                        ret = FocasLib.cnc_download4(focasLibHandle, ref n, programContentToSend);
                    }

                    if (ret == 10) //if buffer is empty
                    {
                        continue;
                    }
                    if (ret == -2) // if buffer in reset mode
                    {
                        break;
                    }
                    if (ret != FocasLib.EW_OK)
                    {
                        Logger.WriteErrorLog("cnc_download3() failed. return value is = " + ret);
                        break;
                    }

                    if (ret == FocasLib.EW_OK)
                    {
                        //program += n;
                        //len -= n;

                        programContentToSend = programContentToSend.Substring(n, len - n);
                        len -= n;
                    }
                }

                //Thread.Sleep(4000);
                if (isProgramFolderSupports == false)
                {
                    ret = FocasLib.cnc_dwnend(focasLibHandle);
                }
                else
                {
                    ret = FocasLib.cnc_dwnend4(focasLibHandle);
                }

                if (ret != FocasLib.EW_OK)
                {
                    FocasLibBase.ODBERR a = new FocasLibBase.ODBERR();
                    FocasLib.cnc_getdtailerr(focasLibHandle, a);
                    Logger.WriteErrorLog("cnc_dwnend() failed. return value is = " + ret + " ; Error code : " + a.err_no);
                    FocasLib.cnc_freelibhndl(focasLibHandle);
                    if (ret != 7)
                    {
                        Logger.WriteErrorLog("cnc_dwnend() failed. return value is = " + ret + " ; Error code : " + a.err_no);
                    }
                    if (ret == 7)
                    {
                        Logger.WriteErrorLog("Upload program failed because write protected on CNC side.");
                    }
                    return(false);
                }
                FocasLib.cnc_freelibhndl(focasLibHandle);
            }
            return(true);
        }