def newMux(self, mux): channel = 1 # Variable to control de number of channels # Initialize mux dictionary with basic informations muxDictionary = { "Id": mux[0], "Datetime": mux[1], "Volt": mux[2], "Temperature": mux[3] } # Scroll the channels and set the info into the dictionary for i in range(4, len(mux)): if str(mux[i]) != "nan": if i % 2 == 0: option = "Ch%d%s" % (channel, "A") try: muxDictionary[option] = cal.convertChannelA( mux[0], channel, mux[i]) except: muxDictionary[option] = float("nan") # Update the respective pv pvName = pvp.pvName(int(mux[0]), int(channel), "A") if pvName != "Dis.": if str(muxDictionary[option]) not in ["Dis.", "error"]: EpicsServer.driver.write( pvName, float(muxDictionary[option])) else: EpicsServer.driver.write(pvName, 0) else: # Add to dictionary with convertion to Celsius degrees try: muxDictionary["Ch%d%s" % (channel, "B")] = cal.convertChannelB( mux[i]) except: muxDictionary["Ch%d%s" % (channel, "B")] = str( mux[i]) + " (error)" # Update the respective pv pvName = pvp.pvName(mux[0], channel, "B") if pvName != "Dis.": if str(muxDictionary[option]) not in ["Dis.", "error"]: EpicsServer.driver.write( pvName, float(muxDictionary[option])) else: EpicsServer.driver.write(pvName, 0) channel += 1 muxDictionary["Number of channels"] = channel - 1 return muxDictionary
def convertValues(muxData): muxId = muxData[0] dataToConvert = muxData[4:] for i in range(len(dataToConvert)): sensor = cal.muxHeader["mux%d" % muxId][i//2] if "Dis" not in dataToConvert[i]: # Convertion to subchannel A if i % 2 == 0: if sensor == "PT100": dataToConvert[i] = cal.convertPT100(dataToConvert[i]) elif sensor == "VWS2100": dataToConvert[i] = cal.convertVWS2100((i//2) + 1, dataToConvert[i]) else: dataToConvert[i] = cal.convertVWTS6000(muxId, (i//2) + 1, dataToConvert[i]) updateEpicsPV(muxId, (i//2) + 1, "A", dataToConvert[i]) # Convertion to subchannel B else: dataToConvert[i] = cal.convertChannelB(dataToConvert[i]) updateEpicsPV(muxId, (i//2) + 1, "B", dataToConvert[i]) return muxData[:4] + dataToConvert