Example #1
0
        private void Create_XML1()
        {
            //Create DELTA XML
            for (int i = 0; i < DELTA_Count; i++)
            {
                Configs[i] = ic.read_ini("DELTA setting", "name" + Convert.ToInt32(i + 1), "CNC1"); //判斷DELTA台數
                bool   exportConfig  = true;                                                        //將exportConfig設定為true即表示會創建xml
                string strConfigName = Configs[i];                                                  //根據ini內容決定xml名稱
                eventLog1.WriteEntry("Create XML name" + strConfigName);
                string       strApplicationDir  = "";
                MemInterface interface_instance = new MemInterface();
                GetConfigInfo(ref strConfigName, ref strApplicationDir, args, ref exportConfig);
                interface_instance.Start(args, strConfigName, strApplicationDir, exportConfig, "DELTA", i);
            }
            //Create Fanuc XML
            //get Fanuc count

            //get Fanuc name

            for (int i = 0; i < Fanuc_Count; i++)
            {
                Configs_Fanuc[i] = ic.read_ini("Fanuc Setting", "name" + Convert.ToInt32(i + 1), "null"); //判斷Fanuc台數
                bool         exportConfig_Fanuc      = true;                                              //將exportConfig設定為true即表示會創建xml
                string       strConfigName_Fanuc     = Configs_Fanuc[i];                                  //根據ini內容決定xml名稱
                string       strApplicationDir_Fanic = "";
                MemInterface interface_fanuc         = new MemInterface();
                GetConfigInfo(ref strConfigName_Fanuc, ref strApplicationDir_Fanic, args, ref exportConfig_Fanuc);
                interface_fanuc.Start(args, strConfigName_Fanuc, strApplicationDir_Fanic, exportConfig_Fanuc, "Fanuc", i);
            }
        }
Example #2
0
        public void Run_Fanuc()
        {
            for (int i = 0; i < Fanuc_Count; i++)//判斷台數
            {
                Configs_Fanuc[i] = ic.read_ini("Fanuc Setting", "name" + Convert.ToInt32(i + 1), "null");
                try
                {
                    bool   exportConfig      = false;            //false表示為不再建立xml
                    string strConfigName     = Configs_Fanuc[i]; //抓ini裡面所設定的xml名稱
                    string strApplicationDir = "";

                    GetConfigInfo(ref strConfigName, ref strApplicationDir, args, ref exportConfig);

                    //此類別的List會用於之後各函式的更新執行緒
                    Lst_FP.Add(new Fanuc_FP(strConfigName, F_Control));

                    //Start the interface to shared memory
                    MemInterface.loop_switch_Fanuc = true;

                    //建立實體
                    MemInterface interface_instance = new MemInterface();
                    interface_instance.main = this;
                    interface_instance.Start(args, strConfigName, strApplicationDir, exportConfig, "Fanuc", i);
                }
                catch (Exception ex)
                {
                    eventLog1.WriteEntry("Run Fanuc Error,Result" + ex.ToString());
                }
            }
        }
Example #3
0
        private void Run_DELTA()
        {
            for (int i = 0; i < DELTA_Count; i++)//判斷台數
            {
                Configs[i] = ic.read_ini("DELTA setting", "name" + Convert.ToInt32(i + 1), "CNC1");
                bool   exportConfig  = false;      //false表示為不再建立xml
                string strConfigName = Configs[i]; //抓ini裡面所設定的xml名稱

                string strApplicationDir = "";

                GetConfigInfo(ref strConfigName, ref strApplicationDir, args, ref exportConfig);

                //設定連線訊息,此處未來應改為可以建立不同IP,甚至是更改IP
                info.SetConnectInfo(DELTA_localIP1, DELTA_remoteIP1, Convert.ToInt32(DELTA_timeout1));
                eventLog1.WriteEntry("CNC" + i.ToString() + " Connection state is localIP" + DELTA_localIP1 + ",remote IP" + DELTA_remoteIP1 + ",timeout" + DELTA_timeout1);
                int isFailed = info.Connect();

                if (isFailed.Equals(0))
                {
                    //此類別的List會用於之後各函式的更新執行緒
                    Lst_BP.Add(new Basic_BP(strConfigName, info));

                    //Start the interface to shared memory
                    MemInterface.loop_switch = true;

                    //建立實體
                    MemInterface interface_instance = new MemInterface();
                    interface_instance.main = this;
                    interface_instance.Start(args, strConfigName, strApplicationDir, exportConfig, "DELTA", 0);
                }
                else
                {
                    eventLog1.WriteEntry("LocalIP:" + DELTA_localIP1 + "  remote IP:" + DELTA_remoteIP1 + "\n連線失敗,請重新嘗試\n");
                }
            }
        }
Example #4
0
        //**************************************************************
        public DWORD AddTag(Tag.TAGENTRY tTagEntry, DWORD relativeOffset, MemInterface i_face)
        {
            DWORD readOffset = 0;
            DWORD writeOffset = 0;
            DWORD nextAvailableDataOffset = 0;	// offset for next data block
            DWORD nextAvailableTagOffset = 0;     // offset for next tag

            Tag refTag; //= NULL;

            Device refDevice = this;
            // Create new Tag
            refTag = new Tag(ref refDevice, tTagEntry, relativeOffset, GetSharedMemoryOffset());

            if (refTag.Equals(null))
            {
                Trace.Assert(false);
                return (relativeOffset);    // re-use this offset for the next tag
            }

            // Determine register's read offset
            if (refTag.IsReadable())
            {
                readOffset = Register.DATA_MIN_OFFSET;
                nextAvailableDataOffset = readOffset + Register.DATA_SIZE_MIN + refTag.GetReadValueExtSize();

                // Determine register's write offset
                if (refTag.IsWriteable())
                {
                    // read/write
                    writeOffset = nextAvailableDataOffset;
                    nextAvailableDataOffset = writeOffset + Register.DATA_SIZE_MIN + refTag.GetWriteValueExtSize();
                }
                else
                {
                    // read-only
                    writeOffset = 0;
                }
            }
            else
            {
                readOffset = 0;

                // Determine register's write offset
                if (refTag.IsWriteable())
                {
                    // write-only
                    writeOffset = Register.DATA_MIN_OFFSET;
                    nextAvailableDataOffset = writeOffset + Register.DATA_SIZE_MIN + refTag.GetWriteValueExtSize();
                }
                else
                {
                    // neither read or write
                    Debug.Assert(false);
                    writeOffset = 0;
                }
            }

            // Prepare the register offset for the next tag (if applicable)
            nextAvailableTagOffset = relativeOffset + nextAvailableDataOffset;

            string msg = "";

            // Check for Shared Memory file overrun
            if ((GetSharedMemoryOffset() + nextAvailableTagOffset) > SharedMemServer.MAPSIZE)
            {
                // Reached the limits of our Shared Memory file
                // Don't add tag

                msg = string.Format("Tag {0,0:T} could not be added.", refTag.GetName()) +
                    string.Format("Register {0,0:D} with size ", refTag.GetSharedMemoryOffset()) +
                    string.Format("{0,0:D} bytes would exceed Shared Memory file size of ", (DWORD)(writeOffset + Register.DATA_SIZE_MIN + refTag.GetExtendedSize())) +
                    string.Format("{0,0:D}", SharedMemServer.MAPSIZE);
                Trace.WriteLine(msg);

                return (relativeOffset);
            }

            int nRC = TagData.SMRC_NO_ERROR;

            // Initialize register if we have access to shared memory
            if (i_face.memStream != null)
            {
                Register.SetReadOffset(i_face.memStream, (long)refTag.GetSharedMemoryOffset(), readOffset);

#if TRACE_SM_ACCESS
                msg = string.Format("{0,8:0D}: Tag " +
                    "{1,0:T}" + ": SetReadOffset nRC = " +
                    "{2,0:D}" +
                    ", dwReadOffset = {3,0:D}", GetTickCount(), refTag.GetName(), nRC, readOffset);
                Trace.WriteLine(msg);
#endif//TRACE_SM_ACCESS

                Register.SetWriteOffset(i_face.memStream, (long)refTag.GetSharedMemoryOffset(), writeOffset);

#if TRACE_SM_ACCESS
                msg = string.Format("{0,8:0D}: Tag " +
                    "{1,0:T}: SetWriteOffset nRC = " +
                    "{2,0:D}" +
                    ", dwWriteOffset = {3,0:D}", GetTickCount(), refTag.GetName(), nRC, writeOffset);
                Trace.WriteLine(msg);
#endif//TRACE_SM_ACCESS

                Register.SetReadValueType(i_face.memStream, (long)refTag.GetSharedMemoryOffset(), refTag.GetReadValueType());

#if TRACE_SM_ACCESS
                msg = string.Format("{0,8:0D}: Tag " +
                    "{1,0:T}: SetReadValueType nRC = " +
                    "{2,0:D}" +
                    ", ReadValueType = {3,0:D}", GetTickCount(), refTag.GetName(), nRC, refTag.GetReadValueType());
                Trace.WriteLine(msg);
#endif//TRACE_SM_ACCESS

                if (writeOffset != 0)
                {
                    Register.SetWriteValueType(i_face.memStream, (long)refTag.GetSharedMemoryOffset(), refTag.GetWriteValueType());

#if TRACE_SM_ACCESS
                    msg = string.Format("{0,8:0D}: Tag " +
                        "{1,0:T}: SetWriteValueType nRC = " +
                        "{2,0:D}" +
                        ", WriteValueType = {3,0:D}", GetTickCount(), refTag.GetName(), nRC, refTag.GetWriteValueType());
                    Trace.WriteLine(msg);
#endif//TRACE_SM_ACCESS
                }
                Register.SetReadValueExtSize(i_face.memStream, (long)refTag.GetSharedMemoryOffset(), refTag.GetReadValueExtSize());

#if TRACE_SM_ACCESS
                msg = string.Format("{0,8:0D}: Tag " +
                    "{1,0:T}: SetReadValueExtSize nRC = " +
                    "{2,0:D}" +
                    ", ReadValueExtSize = {3,0:D}", GetTickCount(), refTag.GetName(), nRC, refTag.GetReadValueExtSize());
                Trace.WriteLine(msg);
#endif//TRACE_SM_ACCESS
                if (writeOffset != 0)
                {
                    Register.SetWriteValueExtSize(i_face.memStream, (long)refTag.GetSharedMemoryOffset(), refTag.GetWriteValueExtSize());

#if TRACE_SM_ACCESS
                    msg = string.Format("{0,8:0D}: Tag " +
                        "{1,0:T}: SetWriteValueExtSize nRC = " +
                        "{2,0:D}" +
                        ", WriteValueExtSize = {3,0:D}", GetTickCount(), refTag.GetName(), nRC, refTag.GetWriteValueExtSize());
                    Trace.WriteLine(msg);
#endif//TRACE_SM_ACCESS
                }

                if (refTag.GetDataType() == (ushort)(Value.T_ARRAY | Value.T_STRING))
                {
                    nRC = Register.SetReadValueArrayStringSize(i_face.memStream, (long)refTag.GetSharedMemoryOffset(), refTag.GetReadValueArrayStringSize());

#if TRACE_SM_ACCESS
                    msg = string.Format("{0,8:0D}: Tag " +
                        "{1,0:T}: SetReadValueArrayStringSize nRC = " +
                        "{2,0:D}" +
                        ", ReadValueArrayStringSize = {3,0:D}", GetTickCount(), refTag.GetName(), nRC, refTag.GetReadValueArrayStringSize());
                    Trace.WriteLine(msg);
#endif//TRACE_SM_ACCESS
                    if (writeOffset != 0)
                    {
                        nRC = Register.SetWriteValueArrayStringSize(i_face.memStream, (long)refTag.GetSharedMemoryOffset(), (WORD)refTag.GetWriteValueArrayStringSize());

#if TRACE_SM_ACCESS
                        msg = string.Format("{0,8:0D}: Tag " +
                            "{1,0:T}: SetWriteValueArrayStringSize nRC = " +
                            "{2,0:D}" +
                            ", WriteValueArrayStringSize = {3,0:D}", GetTickCount(), refTag.GetName(), nRC, refTag.GetWriteValueArrayStringSize());
                        Trace.WriteLine(msg);
#endif//TRACE_SM_ACCESS
                    }
                }
            } // if (pSharedMemoryBaseMem != null)

            // Add tag to our tag set
            tagSet.Add(refTag);
            msg = string.Format("Tag {0,0:T}: assigned to Register " +
                "{1,0:D} with size " +
                "{2,0:D} bytes.  Relative offset = " +
                "{3,0:D}", refTag.GetName(), refTag.GetSharedMemoryOffset(),
                    nextAvailableDataOffset,
                    refTag.GetRelativeOffset());
            Trace.WriteLine(msg);

            return (nextAvailableTagOffset);
        } // AddTag ()
Example #5
0
 // *************************************************************************************
 public TagData(VALTYPE vType, WORD stringSize, int rows, int cols)
 {
     value = new Value(vType, stringSize, rows, cols);
     MemInterface.GetFtNow(ref timeStamp);
 }