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
Пример #2
0
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