예제 #1
0
        public void StartTraceData(string stationUID, dc_EnumConstJBC.dc_Port portNbr)
        {
            // start tracing one port

            long stationID = DLLConnection.jbc.GetStationID(stationUID);

            if (stationID == -1)
            {
                return;
            }

            //Start station continuous mode for the desired station and initialize num sequence
            if (!m_htStationQueue.Contains(stationUID))
            {
                //speed
                if (!m_htStationSpeed.Contains(stationUID))
                {
                    m_htStationSpeed.Add(stationUID, SpeedContinuousMode.OFF); // defaults to physical speed
                }

                //Num sequence
                m_htStationNumSequence.Add(stationUID, 0);
                //station ID
                m_htStationID.Add(stationUID, stationID);

                uint queueID = DLLConnection.jbc.StartContinuousMode(stationID, (SpeedContinuousMode)(m_htStationSpeed[stationUID]));

                m_htStationQueue.Add(stationUID, queueID);
            }

            //Add port to list
            Hashtable listPortsData = default(Hashtable);

            if (m_htStationPortsData.Contains(stationUID))
            {
                listPortsData = (Hashtable)(m_htStationPortsData[stationUID]);
            }
            else
            {
                listPortsData = new Hashtable();
            }

            if (!listPortsData.Contains((Port)portNbr))
            {
                listPortsData.Add((Port)portNbr, new TracePortData((Port)portNbr));
                m_htStationPortsData[stationUID] = listPortsData;
            }
            evlogWrite("Added trace port: " + portNbr.ToString(), stationUID);
        }
예제 #2
0
        public void StopTraceData(string stationUID, dc_EnumConstJBC.dc_Port portNbr)
        {
            // stop tracing one port

            if (m_htStationPortsData.Contains(stationUID))
            {
                Hashtable listPortData = (Hashtable)(m_htStationPortsData[stationUID]);

                if (listPortData.Contains((Port)portNbr))
                {
                    listPortData.Remove((Port)portNbr);
                }

                evlogWrite("Stop trace port: " + portNbr.ToString(), stationUID);

                //Comprobar si existe algún puerto mas que se esté trazando
                if (listPortData.Count == 0)
                {
                    long stationID = -1;
                    try
                    {
                        //stationID = jbc.GetStationID(stationUID)
                        stationID = System.Convert.ToInt64(m_htStationID[stationUID]);
                        DLLConnection.jbc.StopContinuousMode(stationID, System.Convert.ToUInt32(System.Convert.ToUInt32(m_htStationQueue[stationUID])));
                    }
                    catch (Exception)
                    {
                    }

                    m_htStationQueue.Remove(stationUID);
                    m_htStationID.Remove(stationUID);
                    m_htStationPortsData.Remove(stationUID);
                    m_htStationNumSequence.Remove(stationUID);
                    m_htStationSpeed.Remove(stationUID);

                    evlogWrite("Stop trace station.", stationUID);

                    //Cierre y renombre del fichero con id único
                    if (File.Exists(tempPathFilename(m_folderData, stationID)))
                    {
                        (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.WriteAllText(tempPathFilename(m_folderData, stationID), "}", true);
                        (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.MoveFile(tempPathFilename(m_folderData, stationID), tracePathFilename(m_folderData, stationID, DateTime.Now));
                    }
                }
            }
        }