def testInvokeOtherClient(self):
        class Target:
            def v8(self): return "V8 great!"

            def v9(self): raise ProtocolException("V9 not good.")

            def v10(self): raise IOError("V10 have problems.")

            def v(self, i, b): return "OK"

        mc1 = Session((MessageTransportTest.addr, MessageTransportTest.port), Target(), name="T1-Benz")
        mc1.start()
        checker = Session.newSession((MessageTransportTest.addr, MessageTransportTest.port), None, "T1-Checher")
        benzChecker = checker.blockingInvoker(u"T1-Benz", 10)
        v8r = benzChecker.v8()
        self.assertEqual(v8r, "V8 great!")
        try:
            benzChecker.v9()
            self.assertTrue(False)
        except ProtocolException as e:
            self.assertEqual(e.__str__(), "V9 not good.")
        try:
            benzChecker.v10()
            self.assertTrue(False)
        except ProtocolException as e:
            self.assertEqual(e.__str__(), "V10 have problems.")
        self.assertEqual(benzChecker.v(1, False), "OK")
        try:
            benzChecker.v11()
            self.assertTrue(False)
        except ProtocolException as e:
            self.assertEqual(e.__str__(), "InvokeError: Command v11 not found.")
        mc1.stop()
        checker.stop()
示例#2
0
    def __init__(self, adapter, port, address, serviceName):
        self.adapterServer = AdapterServer(port)
        if adapter is None:
            self.adapter = SimulatedAdapter(port)
        else:
            self.adapter = ExecutableAdapter(adapter, port)
        self.adapterServer.accept()

        class PXIFrequencyDividerService:
            def __init__(self, handler):
                self.handler = handler

            def getDivide(self):
                raise RuntimeError('')

            def setDivide(self, divide):
                self.handler.adapterServer.sendCommand(self.__createFrequancyCommand(divide))

            def setDelay(self, channel, course, fine):
                self.handler.adapterServer.sendCommand(self.__createDelayCommand(channel, course, fine))

            def __createFrequancyCommand(self, divide):
                if divide < 1 or divide > 255:
                    raise RuntimeError('Divide out of range.')
                addr = b'0x28c\0' + b'0x'
                data = format(divide, '2X').replace(' ', '0').encode('utf-8')
                cmd = addr + data + b'\0\0\0\0\0\0\0'
                return cmd

            def __createDelayCommand(self, channel, courseDelay, fineDelay):
                if channel < 0 or channel >= 40:
                    raise RuntimeError('Channel out of range.')
                if courseDelay < 0 or courseDelay >= 60000:
                    raise RuntimeError('Course Delay out of range.')
                if fineDelay < 0 or fineDelay >= 256:
                    raise RuntimeError('Fine Delay out of range.')
                addr = b'0x288\0' + b'0x'
                cn = format(channel, '2X').replace(' ', '0').encode('utf-8')
                cD = format(courseDelay, '4X').replace(' ', '0').encode('utf-8')
                fD = format(fineDelay, '2X').replace(' ', '0').encode('utf-8')
                cmd = addr + cn + cD + fD + b'\0'
                return cmd

        time.sleep(1)
        self.service = PXIFrequencyDividerService(self)
        self.session = Session.newSession(address, self.service, serviceName)

        self.service.setDivide(99)
        for c in range(0, 40):
            self.service.setDelay(c, 0, 0)
示例#3
0
from Pydra import Session
import time

if __name__ == '__main__':
    session = Session.newSession(('192.168.25.27', 20102), None,
                                 "PolarizationControlTestLocal")
    try:
        invoker = session.blockingInvoker("PolarizationControlService")
        print(invoker.hello("23"))
        time.sleep(3)
    except Exception:
        print('e')
        pass
    session.stop()
示例#4
0
                temperature = temperatures[i]
                pids[i].Kp = pidPara[i][0]
                pids[i].Ki = pidPara[i][1]
                pids[i].Kd = pidPara[i][2]
                vs[i] += pids[i].update(temperature)
                pids[i].setPoint(pidPara[i][3] + tempSetDelta(t, i))
                if (vs[i] > 1.5):
                    vs[i] = 1.5
                if (vs[i] < 0):
                    vs[i] = 0
            dc.setVoltages(vs)

            print(
                '{:.1f}\t{:.3f}\t{:.3f}\t{:.1f}\t{:.1f}\t{:.1f}\t{:.3f}\t{:.3f}\t{:.3f}\t{:.3f}\t{:.3f}\t{:.3f}\t{:.3f}'
                .format(t, r1, r2, ppm1, ppm2, ratioPPM, roomTemp,
                        temperatures[0], vs[0], temperatures[1], vs[1],
                        temperatures[2], vs[2]))
            file.write(
                '{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}\n'.format(
                    t, r1, r2, ppm1, ppm2, ratioPPM, roomTemp, temperatures[0],
                    vs[0], temperatures[1], vs[1], temperatures[2], vs[2]))
            file.flush()


if __name__ == '__main__':
    tc = Control()
    tc.setSession(
        Session.newSession(('192.168.25.27', 20102), tc,
                           'Temperature Control For BS and PDs'))
    tc.start()
示例#5
0
文件: Try.py 项目: ustclin234/Hydra-1
from Pydra import Session
import time
import threading
import random

print('In Try.')

session = Session.newSession(("localhost", 20102))

bi = session.blockingInvoker(timeout=1)

while True:
    time.sleep(5)
    try:
        si = bi.sessionsInformation()
        print(si)
    except BaseException as e:
        print("EXCEPTION!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
示例#6
0
from Pydra import Session

if __name__ == '__main__':
    session = Session.newSession(('192.168.25.27', 20102))
    invoker = session.blockingInvoker('HMC7044EvalTest')
    print(invoker.deviceConnected())
    for i in range(0, 14):
        invoker.setDivider(i, 200)

    import time

    time.sleep(1)
    session.stop()
示例#7
0
from Services.MultiMeter.KeySightMultiMeter import KeySight_MultiMeter_34465A, KeySight_MultiMeter_34470A, \
    MeasureQuantity
from Pydra import Session
from Services.Storage import StorageService, HBTFileElement
import time

if __name__ == '__main__':
    session = Session.newSession(('192.168.25.27', 20102), None,
                                 "LaserStabilityTest")
    dmm1 = session.asynchronousInvoker('KeySightMultiMeter_34470A_1')
    dmm2 = session.asynchronousInvoker('KeySightMultiMeter_34470A_2')
    dmm1.setDCVoltageMeasurement(range=1, autoRange=False,
                                 aperture=0.001).sync()
    dmm2.setDCVoltageMeasurement(range=1, autoRange=False,
                                 aperture=0.001).sync()

    def measure(count=1000):
        f1 = dmm1.directMeasure(count)
        f2 = dmm2.directMeasure(count)
        r1 = f1.sync()
        r2 = f2.sync()
        ar1 = sum(r1) / len(r1)
        ar2 = sum(r2) / len(r2)
        return [ar1, ar2]

    ref = measure(400)
    while True:
        r = measure(400)
        ratio = r[0] / r[1]
        refRatio = ref[0] / ref[1]
        ppm = 1e6 * (ratio / refRatio - 1)
示例#8
0
from Pydra import Session
import time

if __name__ == '__main__':
    session = Session.newSession(('192.168.25.27', 20102), None, "ServiceTest")
    try:
        invoker = session.blockingInvoker("GroundTDCServer")
        # invoker.turnOnAnalyser("Counter", {"StorageElement": "/Hwaipy/Hydra/20180906/test.counts"})
        print(invoker.fetchResults("Counter"))
        time.sleep(3)
    except Exception as e:
        print('e')
        print(e)
        pass
    session.stop()