public void GetStationType() { eStationType type = jbc_api.GetStationType(station_id); Trace.WriteLine("STATION: " + station_id + " TYPE: " + type.ToString()); Assert.AreNotEqual(eStationType.UNKNOWN, type); }
public string GetConNodeID(string pLinkLine, string pStnNo, eStationType pStnType) { var v = this.Where((e) => e.LinkLine == pLinkLine && e.StnNo == pStnNo && e.StnType == pStnType).ToList(); if (v == null & v.Count < 1) { return(""); } return(v[0].ConNodeID); }
/// <summary> /// Devuelve en 3 variables de la clase la siguiente información: /// TypeStation --> el tipo de estación /// NumPort --> número de puertos /// ToolSoportadas() --> herramientas soportadas /// </summary> /// <remarks></remarks> internal void InitializeStationPortsToolsType(string model) { CStationsConfiguration confStation = new CStationsConfiguration(model); int iPorts = confStation.Ports; eStationType stationType = confStation.StationType; m_StationData.Info.StationType = stationType; m_PortData = new CPortData_SF[iPorts - 1 + 1]; //Recorremos todos los puertos de la estación for (int idxPort = 0; idxPort <= m_PortData.Length - 1; idxPort++) { m_PortData[idxPort] = new CPortData_SF(); } }
/// <summary> /// Search timer handler. Discover stations /// </summary> /// <param name="sender">Objeto que lanza el evento</param> /// <param name="e">Parámetros asociados al evento</param> private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { //buscar stations controllers List <EndpointAddress> endpointsList = m_searcherServices.GetDiscoveredServices(); foreach (EndpointAddress endpoint in endpointsList) { BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None); try { JBCStationControllerServiceClient JBC_StationControllerService = new JBCStationControllerServiceClient(binding, endpoint); JBC_StationControllerService.Open(); //notificar de un station controller encontrado if (DiscoveredStationControllerEvent != null) { DiscoveredStationControllerEvent(ref JBC_StationControllerService); } string[] lista = JBC_StationControllerService.GetStationList(); for (var i = 0; i <= lista.Length - 1; i++) { //notificar de una estación encontrada dc_Station_Sold_Info stationInfo = JBC_StationControllerService.GetStationInfo(lista[(int)i]); eStationType stationType = (eStationType)((eStationType)stationInfo.StationType); if (DiscoveredStationEvent != null) { DiscoveredStationEvent(ref JBC_StationControllerService, lista[(int)i], stationType); } } } catch (Exception ex) { //Este error sucede al desconectar un Station Controller ya que se intenta acceder a un Endpoint donde nadie escucha Debug.WriteLine(System.Reflection.MethodInfo.GetCurrentMethod().Name + ". Error: " + ex.Message); } } if (m_isSearching) { m_Timer.Start(); } }
//Public functions public void init(ulong stationID, eStationType _stationType, JBC_API_Remote _jbc) { jbc = _jbc; //setting the ID ID = stationID; StationType = _stationType; uiContModeQueueID = UInt32.MaxValue; //initializing the port's structures for (int cnt = 0; cnt <= MAX_PORTS - 1; cnt++) { portList[cnt].I = 0; portList[cnt].number = Port.NO_PORT; portList[cnt].P = 0; portList[cnt].F = 0; // hadesold flow portList[cnt].status = ToolStatus.NONE; portList[cnt].status_HA = ToolStatus_HA.NONE; portList[cnt].T = new int[TEMP_FILTER_SIZE]; for (int i = 0; i <= TEMP_FILTER_SIZE - 1; i++) { portList[cnt].T[i] = 0; } portList[cnt].nTrans = 0; portList[cnt].tool = GenericStationTools.NO_TOOL; } // Setting station control mode //JBC.SetControlMode(ID, JBC_API.OnOff._ON) // Setting the station in continuous mode for all of its ports // 13/01/2014 relocated to CPlot class // 25/03/2015 relocated here again due to multiples queues managing (see startStationContinuousMode) //Dim count As Integer = jbc.GetPortCount(ID) //Dim a As Integer = JBC_API.Port.NO_PORT //Dim b As Integer = JBC_API.Port.NO_PORT //Dim c As Integer = JBC_API.Port.NO_PORT //Dim d As Integer = JBC_API.Port.NO_PORT //If count >= 1 Then a = JBC_API.Port.NUM_1 //If count >= 2 Then b = JBC_API.Port.NUM_2 //If count >= 3 Then c = JBC_API.Port.NUM_3 //If count >= 4 Then d = JBC_API.Port.NUM_4 //jbc.SetContinuousMode(ID, JBC_API.SpeedContinuousMode.T_10mS, a, b, c, d) }
private void BuildPortsTypeTools(string model) { m_Ports = 0; m_StationType = eStationType.UNKNOWN; //Standarize model name model = model.Replace("/", ""); //Buscamos la configuración para el modelo de estación foreach (string StationUnit in System.Enum.GetNames(typeof(StationPortsToolsConfiguration))) { // 31/01/2014 Buscar con guión bajo ("DD_") porque varias pueden empezar igual y ser distintas if (StationUnit.ToString().IndexOf(model + "_") == 0) { string[] arrStationConf = StationUnit.ToString().Split('_'); if (arrStationConf.Length >= 4) { // ports m_Ports = System.Convert.ToInt32(arrStationConf[1]); // station type m_StationType = (eStationType)((eStationType)(System.Convert.ToInt32(arrStationConf[2]))); //supported tools for (var idxTool = 0; idxTool <= arrStationConf.Length - 4; idxTool++) { string sTool = arrStationConf[idxTool + 3]; //Guardamos la tool if (System.Enum.IsDefined(typeof(GenericStationTools), sTool)) { m_listSupportedTools.Add((GenericStationTools)(System.Enum.Parse(typeof(GenericStationTools), sTool))); } } } break; } } }
private void TraceData() { ArrayList listStationsUUID = new ArrayList(); stContinuousModeData_SOLD contData_SOLD = default(stContinuousModeData_SOLD); // solder data stContinuousModeData_HA contData_HA = new stContinuousModeData_HA(); // hot air data stContinuousModePort_SOLD contDataPort = new stContinuousModePort_SOLD(); // solder data stContinuousModePort_HA contDataPort_HA = new stContinuousModePort_HA(); // hot air data while (m_IsAliveThreadTraceData) { // update stations list listStationsUUID.Clear(); listStationsUUID.AddRange(m_htStationUUID2QueueID.Keys); //Iteramos en todas las estaciones foreach (string stationUUID in listStationsUUID) { uint queueID = (uint)(m_htStationUUID2QueueID[stationUUID]); try { if (DLLConnection.jbc.StationExists(stationUUID)) { eStationType stationType = DLLConnection.jbc.GetStationType(stationUUID); int dataLength = DLLConnection.jbc.GetContinuousModeDataCount(stationUUID, queueID); //Iteramos en todos los datos recogidos for (int i = 0; i <= dataLength - 1; i++) { bool bDataExists = false; switch (stationType) { case eStationType.SOLD: contData_SOLD = DLLConnection.jbc.GetContinuousModeNextData_SOLD(stationUUID, queueID); if (contData_SOLD.data != null) { bDataExists = true; } break; case eStationType.HA: contData_HA = DLLConnection.jbc.GetContinuousModeNextData_HA(stationUUID, queueID); if (contData_HA.data != null) { bDataExists = true; } break; } if (bDataExists) { Hashtable portJSONData = new Hashtable(); foreach (Port port in m_mdhtStationUUID2PortData.RowKeys(stationUUID)) { portJSONData[port] = ""; //Cabecera de datos si secuencia es cero if (System.Convert.ToInt32(m_mdhtStationUUID2PortNumSequence.Item(stationUUID, port)) == 0) { // obtener la velocidad de la cola SpeedContinuousMode queueCaptureSpeed = DLLConnection.jbc.GetContinuousModeDeliverySpeed(stationUUID, queueID); CSpeedContMode speedcm = new CSpeedContMode(); int frequency = speedcm.SpeedFromEnum(queueCaptureSpeed); portJSONData[port] = "{" + "\r\n" + "\"uuid\":\"" + stationUUID + "\"," + "\r\n" + "\"port\":" + System.Convert.ToString(port) + "," + "\r\n" + "\"time\":\"" + DateTime.Now.ToString(TRACE_TIME_FORMAT) + "\"," + "\r\n" + "\"name\":\"" + DLLConnection.jbc.GetStationName(stationUUID) + "\"," + "\r\n" + "\"type\":\"" + stationType.ToString() + "\"," + "\r\n" + "\"model\":\"" + DLLConnection.jbc.GetStationModel(stationUUID) + "\"," + "\r\n" + "\"modeltype\":\"" + DLLConnection.jbc.GetStationModelType(stationUUID) + "\"," + "\r\n" + "\"modelversion\":\"" + DLLConnection.jbc.GetStationModelVersion(stationUUID).ToString() + "\"," + "\r\n" + "\"software\":\"" + DLLConnection.jbc.GetStationSWversion(stationUUID) + "\"," + "\r\n" + "\"hardware\":\"" + DLLConnection.jbc.GetStationHWversion(stationUUID) + "\"," + "\r\n" + "\"interval\":" + System.Convert.ToString(frequency) + "," + "\r\n" + "\"data\":["; } } // cantidad de puertos int iDataPortCount = 0; switch (stationType) { case eStationType.SOLD: iDataPortCount = contData_SOLD.data.Length; break; case eStationType.HA: iDataPortCount = contData_HA.data.Length; break; } // datos de los puertos for (var x = 0; x <= iDataPortCount - 1; x++) { Port readingPort = Port.NO_PORT; switch (stationType) { case eStationType.SOLD: contDataPort = contData_SOLD.data[x]; readingPort = contDataPort.port; break; case eStationType.HA: contDataPort_HA = contData_HA.data[x]; readingPort = contDataPort_HA.port; break; } //Copiamos los datos del registro anterior para comparar al crear el json Hashtable antListPortData = new Hashtable(); foreach (Port port in m_mdhtStationUUID2PortData.RowKeys(stationUUID)) { antListPortData.Add(port, ((TracePortData)(m_mdhtStationUUID2PortData.Item(stationUUID, port))).Clone()); } //Si el puerto lo estamos trazando if (m_mdhtStationUUID2PortData.Contains(stationUUID, readingPort)) { TracePortData portData = default(TracePortData); switch (stationType) { case eStationType.SOLD: portData = (TracePortData)(m_mdhtStationUUID2PortData.Item(stationUUID, readingPort)); portData.port = readingPort; portData.temperature = System.Convert.ToInt32(contDataPort.temperature.UTI); portData.power = System.Convert.ToInt32(contDataPort.power); portData.status = System.Convert.ToByte(contDataPort.status); portData.tool = DLLConnection.jbc.GetPortToolID(stationUUID, portData.port); break; case eStationType.HA: portData = (TracePortData)(m_mdhtStationUUID2PortData.Item(stationUUID, readingPort)); portData.port = readingPort; portData.temperature = contDataPort_HA.temperature.UTI; portData.power = contDataPort_HA.power; portData.status = System.Convert.ToByte(contDataPort_HA.status); portData.tool = DLLConnection.jbc.GetPortToolID(stationUUID, portData.port); // HA portData.flow = contDataPort_HA.flow; portData.tempTC1 = contDataPort_HA.externalTC1_Temp.UTI; portData.tempTC2 = contDataPort_HA.externalTC2_Temp.UTI; portData.timetostop = contDataPort_HA.timeToStop; break; } //Coma separador de entradas if (System.Convert.ToInt32(m_mdhtStationUUID2PortNumSequence.Item(stationUUID, readingPort)) != 0) { portJSONData[readingPort] = (portJSONData[readingPort]).ToString() + "," + "\r\n"; } //Escribimos número de secuencia portJSONData[readingPort] = (portJSONData[readingPort]).ToString() + "{\"n\":" + System.Convert.ToString(m_mdhtStationUUID2PortNumSequence.Item(stationUUID, readingPort)); //Notificar tool en la primera entrada de datos o cada vez que haya un cambio if (m_mdhtStationUUID2PortNumSequence.Item(stationUUID, readingPort) == 0 | portData.tool != ((TracePortData)(antListPortData[readingPort])).tool) { portJSONData[readingPort] = (portJSONData[readingPort]).ToString() + ", \"o\":" + System.Convert.ToString(portData.tool); } //Si no hay tool, no notificar el status, temperatura ni power if (portData.tool != GenericStationTools.NO_TOOL) { //Notificar status en la primera entrada de datos o cada vez que haya un cambio if (System.Convert.ToInt32(m_mdhtStationUUID2PortNumSequence.Item(stationUUID, readingPort)) == 0 | portData.status != ((TracePortData)(antListPortData[readingPort])).status) { portJSONData[readingPort] = (portJSONData[readingPort]).ToString() + ", \"s\":" + System.Convert.ToString(portData.status); } // temperature portJSONData[readingPort] = (portJSONData[readingPort]).ToString() + ", \"t\":" + System.Convert.ToString(portData.temperature); //Si status es extractor o hibernation no notificar el power if (portData.status != (byte)ToolStatus.EXTRACTOR & portData.status != (byte)ToolStatus.HIBERNATION) { portJSONData[readingPort] = (portJSONData[readingPort]).ToString() + ", \"w\":" + System.Convert.ToString(portData.power); } // HA if (stationType == eStationType.HA) { // flow portJSONData[readingPort] = (portJSONData[readingPort]).ToString() + ", \"f\":" + System.Convert.ToString(portData.flow); // time to stop portJSONData[readingPort] = (portJSONData[readingPort]).ToString() + ", \"ts\":" + System.Convert.ToString(portData.timetostop); if (portData.tempTC1 > 0) { portJSONData[readingPort] = (portJSONData[readingPort]).ToString() + ", \"x1\":" + System.Convert.ToString(portData.tempTC1); } if (portData.tempTC2 > 0) { portJSONData[readingPort] = (portJSONData[readingPort]).ToString() + ", \"x2\":" + System.Convert.ToString(portData.tempTC2); } } } portJSONData[readingPort] = (portJSONData[readingPort]).ToString() + "}"; (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.WriteAllText(TempPathFilename(m_folderData, queueID, readingPort), (portJSONData[readingPort]).ToString(), true); } } //Incrementar numero de secuencia ArrayList listPorts = new ArrayList(); listPorts.AddRange(m_mdhtStationUUID2PortNumSequence.RowKeys(stationUUID)); foreach (Port port in listPorts) { m_mdhtStationUUID2PortNumSequence.Add(stationUUID, port, (System.Convert.ToInt32(m_mdhtStationUUID2PortNumSequence.Item(stationUUID, port))) + 1); //Final de fichero if (System.Convert.ToInt32(m_mdhtStationUUID2PortNumSequence.Item(stationUUID, port)) == FILE_MAX_SEQUENCE) { m_mdhtStationUUID2PortNumSequence.Add(stationUUID, port, 0); //Cierre y renombre del fichero con id único (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.WriteAllText(TempPathFilename(m_folderData, queueID, port), "]}", true); (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.MoveFile(TempPathFilename(m_folderData, queueID, port), TracePathFilename(m_folderData, queueID, port, DateTime.Now)); } } } } } else { // Stop trace data m_htStationUUID2QueueID.Remove(stationUUID); m_mdhtStationUUID2PortData.RemoveRow(stationUUID); m_mdhtStationUUID2PortNumSequence.RemoveRow(stationUUID); ArrayList listPorts = new ArrayList(); listPorts.AddRange(m_mdhtStationUUID2PortNumSequence.RowKeys(stationUUID)); foreach (Port port in listPorts) { //close and rename file with unique name if (File.Exists(TempPathFilename(m_folderData, queueID, port))) { (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.WriteAllText(TempPathFilename(m_folderData, queueID, port), "]}", true); } if (File.Exists(TempPathFilename(m_folderData, queueID, port))) { (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.MoveFile(TempPathFilename(m_folderData, queueID, port), TracePathFilename(m_folderData, queueID, port, DateTime.Now)); } } } } catch (Exception) { // error //Stop trace data m_htStationUUID2QueueID.Remove(stationUUID); m_mdhtStationUUID2PortData.RemoveRow(stationUUID); m_mdhtStationUUID2PortNumSequence.RemoveRow(stationUUID); ArrayList listPorts = new ArrayList(); listPorts.AddRange(m_mdhtStationUUID2PortNumSequence.RowKeys(stationUUID)); foreach (Port port in listPorts) { //close and rename file with unique name if (File.Exists(TempPathFilename(m_folderData, queueID, port))) { (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.WriteAllText(TempPathFilename(m_folderData, queueID, port), "]}", true); (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.MoveFile(TempPathFilename(m_folderData, queueID, port), TracePathFilename(m_folderData, queueID, port, DateTime.Now)); } } } } Thread.Sleep(THREAD_SLEEP_TRACE_DATA); } }
private void TraceData() { ArrayList listStationUID = new ArrayList(); Hashtable listPortData = default(Hashtable); ArrayList listPortDataKey = new ArrayList(); Hashtable antListPortData = new Hashtable(); stContinuousModeData_SOLD contData = new stContinuousModeData_SOLD(); // solder data stContinuousModeData_HA contData_HA = new stContinuousModeData_HA(); // hot air data stContinuousModePort_SOLD contDataPort = new stContinuousModePort_SOLD(); // solder data stContinuousModePort_HA contDataPort_HA = new stContinuousModePort_HA(); // hot air data do { // update stations listStationUID.Clear(); listStationUID.AddRange(m_htStationQueue.Keys); //Iteramos en todas las estaciones foreach (string stationUID in listStationUID) { long stationID = -1; //Dim stationType As dc_EnumConstJBC.dc_StationType = dc_EnumConstJBC.dc_StationType.UNKNOWN eStationType stationType = eStationType.UNKNOWN; try { stationID = DLLConnection.jbc.GetStationID(stationUID); stationType = DLLConnection.jbc.GetStationType(stationID); if (stationID >= 0) { string JSONData = ""; //Listado de puertos que estamos trazando para la estación listPortData = (Hashtable)(m_htStationPortsData[stationUID]); listPortDataKey.Clear(); listPortDataKey.AddRange(listPortData.Keys); int dataLength = DLLConnection.jbc.GetContinuousModeDataCount(stationID, (uint)(m_htStationQueue[stationUID])); evlogWrite("Data records to process:" + dataLength.ToString(), stationUID); for (int i = 0; i <= dataLength - 1; i++) { bool bDataExists = false; switch (stationType) { case eStationType.SOLD: contData = DLLConnection.jbc.GetContinuousModeNextData_SOLD(stationID, (uint)(m_htStationQueue[stationUID])); if (contData.data != null) { bDataExists = true; } break; case eStationType.HA: contData_HA = DLLConnection.jbc.GetContinuousModeNextData_HA(stationID, (uint)(m_htStationQueue[stationUID])); if (contData_HA.data != null) { bDataExists = true; } break; } if (bDataExists) { JSONData = ""; //Cabecera de datos si secuencia es cero if (System.Convert.ToInt32(m_htStationNumSequence[stationUID]) == 0) { // obtener la velocidad de la cola SpeedContinuousMode queueCaptureSpeed = DLLConnection.jbc.GetContinuousModeDeliverySpeed(stationID, (uint)(m_htStationQueue[stationUID])); // convertirla a integer CSpeedContMode speedcm = new CSpeedContMode(); int frequency = speedcm.SpeedFromEnum(queueCaptureSpeed); // obtener datos identificativos string stnName = DLLConnection.jbc.GetStationName(stationID); string stnModel = DLLConnection.jbc.GetStationModel(stationID); string stnModelType = DLLConnection.jbc.GetStationModelType(stationID); string stnModelVersion = DLLConnection.jbc.GetStationModelVersion(stationID).ToString(); string stnSW = DLLConnection.jbc.GetStationSWversion(stationID); string stnHW = DLLConnection.jbc.GetStationHWversion(stationID); JSONData = "{" + "\r\n" + "\"id\":\"" + stationUID + "\"," + "\r\n" + "\"time\":\"" + DateTime.Now.ToString(TRACE_TIME_FORMAT) + "\"," + "\r\n" + "\"name\":\"" + stnName + "\"," + "\r\n" + "\"type\":\"" + stationType.ToString() + "\"," + "\r\n" + "\"model\":\"" + stnModel + "\"," + "\r\n" + "\"modeltype\":\"" + stnModelType + "\"," + "\r\n" + "\"modelversion\":\"" + stnModelVersion + "\"," + "\r\n" + "\"software\":\"" + stnSW + "\"," + "\r\n" + "\"hardware\":\"" + stnHW + "\"," + "\r\n" + "\"interval\":" + System.Convert.ToString(frequency); } //Por cada puerto del modo continuo bool bComma = false; //Escribimos número de secuencia y datos JSONData += "," + "\r\n" + "\"" + System.Convert.ToString(m_htStationNumSequence[stationUID]) + "\":["; // datos de los puertos // cantidad de puertos int iDataPortCount = 0; switch (stationType) { case eStationType.SOLD: iDataPortCount = contData.data.Length; break; case eStationType.HA: iDataPortCount = contData_HA.data.Length; break; } // datos de los puertos //For Each contDataPort As stContinuousModePort In contData.data for (var x = 0; x <= iDataPortCount - 1; x++) { Port readingPort = Port.NO_PORT; switch (stationType) { case eStationType.SOLD: contDataPort = contData.data[x]; readingPort = contDataPort.port; break; case eStationType.HA: contDataPort_HA = contData_HA.data[x]; readingPort = contDataPort_HA.port; break; } //Copiamos los datos del registro anterior para comparar al crear el json TracePortData portData = new TracePortData(); antListPortData.Clear(); foreach (Port portDataKey in listPortDataKey) { portData = (TracePortData)(listPortData[portDataKey]); antListPortData.Add(portDataKey, portData.Clone()); } //Si el puerto lo estamos trazando if (listPortData.Contains(readingPort)) { switch (stationType) { case eStationType.SOLD: portData = (TracePortData)(((TracePortData)(listPortData[contDataPort.port])).Clone()); portData.port = contDataPort.port; portData.temperature = contDataPort.temperature.UTI; portData.power = contDataPort.power; portData.status = System.Convert.ToByte(contDataPort.status); portData.tool = DLLConnection.jbc.GetPortToolID(stationID, portData.port); break; case eStationType.HA: portData = (TracePortData)(((TracePortData)(listPortData[contDataPort_HA.port])).Clone()); portData.port = contDataPort_HA.port; portData.temperature = contDataPort_HA.temperature.UTI; portData.power = contDataPort_HA.power; portData.status = System.Convert.ToByte(contDataPort_HA.status); portData.tool = DLLConnection.jbc.GetPortToolID(stationID, portData.port); // HA portData.flow = contDataPort_HA.flow; portData.tempTC1 = contDataPort_HA.externalTC1_Temp.UTI; portData.tempTC2 = contDataPort_HA.externalTC2_Temp.UTI; portData.timetostop = contDataPort_HA.timeToStop; break; } if (bComma) { JSONData += ","; } bComma = true; JSONData += "\r\n" + "{\"p\":" + System.Convert.ToString(portData.port); //Notificar tool en la primera entrada de datos o cada vez que haya un cambio // LA TOOL en TEXTO if (System.Convert.ToInt32(m_htStationNumSequence[stationUID]) == 0 | portData.tool != ((TracePortData)(antListPortData[portData.port])).tool) { JSONData += ", \"o\":" + System.Convert.ToString(portData.tool) + ""; } //Si no hay tool, no notificar de status, temperatura ni power if (portData.tool != GenericStationTools.NO_TOOL) { //Notificar status en la primera entrada de datos o cada vez que haya un cambio if (System.Convert.ToInt32(m_htStationNumSequence[stationUID]) == 0 | portData.status != ((TracePortData)(antListPortData[portData.port])).status) { JSONData += ", \"s\":" + System.Convert.ToString(portData.status); } // temperature JSONData += ", \"t\":" + System.Convert.ToString(portData.temperature); //Si status es extractor o hibernation no notificar el power if (portData.status != (byte)ToolStatus.EXTRACTOR & portData.status != (byte)ToolStatus.HIBERNATION) { JSONData += ", \"w\":" + System.Convert.ToString(portData.power); } // HA if (stationType == eStationType.HA) { // flow JSONData += ", \"f\":" + System.Convert.ToString(portData.flow); // time to stop (en décimas de segundo) JSONData += ", \"ts\":" + System.Convert.ToString(portData.timetostop); // viene &HFF si no hay termopar externo if (portData.tempTC1 > 0 & portData.tempTC1 < 0xFF) { JSONData += ", \"x1\":" + System.Convert.ToString(portData.tempTC1); } // viene &HFF si no hay termopar externo if (portData.tempTC2 > 0 & portData.tempTC2 < 0xFF) { JSONData += ", \"x2\":" + System.Convert.ToString(portData.tempTC2); } } } JSONData += "}"; } } // For Each contDataPort As stContinuousModePort In contData.data JSONData += "\r\n" + "]"; (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.WriteAllText(tempPathFilename(m_folderData, stationID), JSONData, true); //Incrementar numero de secuencia m_htStationNumSequence[stationUID] = (System.Convert.ToInt32(m_htStationNumSequence[stationUID])) + 1; //Final de fichero if (System.Convert.ToInt32(m_htStationNumSequence[stationUID]) == m_MaxNumSequence) { m_htStationNumSequence[stationUID] = 0; //Cierre y renombre del fichero con id único (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)); } } // If contData.data IsNot Nothing Then } // For i As Integer = 0 To dataLength } else { // station ID not found (disconnected?) // Stop trace data m_htStationQueue.Remove(stationUID); m_htStationID.Remove(stationUID); m_htStationPortsData.Remove(stationUID); m_htStationNumSequence.Remove(stationUID); m_htStationSpeed.Remove(stationUID); //close and rename file with unique name if (File.Exists(tempPathFilename(m_folderData, stationID))) { (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.WriteAllText(tempPathFilename(m_folderData, stationID), "}", true); } if (File.Exists(tempPathFilename(m_folderData, stationID))) { (new Microsoft.VisualBasic.Devices.ServerComputer()).FileSystem.MoveFile(tempPathFilename(m_folderData, stationID), tracePathFilename(m_folderData, stationID, DateTime.Now)); } evlogWrite("Station ID not found. Station disconnected?", stationUID); } } catch (Exception ex) { // error //Stop trace data m_htStationQueue.Remove(stationUID); m_htStationID.Remove(stationUID); m_htStationPortsData.Remove(stationUID); m_htStationNumSequence.Remove(stationUID); m_htStationSpeed.Remove(stationUID); //close and rename file with unique name 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)); } evlogWrite(System.Reflection.MethodBase.GetCurrentMethod().Name + ". Error: " + ex.Message, stationUID); } } Thread.Sleep(frequencyTrace); } while (true); }