Commit d2c5fe71 authored by Sergio Poppi's avatar Sergio Poppi
Browse files

updated PyLO

parent 5fdbf408
Loading
Loading
Loading
Loading
+79 −38
Original line number Diff line number Diff line
import socket
import time


QUERYERROR="SYST:ERR? \n"

FREQCMD="FREQ "
QUERYFREQ="FREQ? \n"
QUERYFREQ="FREQ?;"+QUERYERROR
QUERYPOWER="POW?\n"
RFONCMD="OUTP:STAT ON"
RFOFFCMD="OUTP:STAT OFF"
QUERYRF="OUTP:STAT?"
FREQUNIT=" MHZ\n"
POWERUNIT=" dBM\n"
QUERYERROR="SYST:ERR?\n"

class CommandLineError(Exception):
   def __init__(self, value):

      self.value = value
   def __str__(self):
      return repr(self.value)


class CommandLine:
   
    
@@ -25,12 +37,17 @@ class CommandLine:
       pass
   
   def configure(self,ip,port):
      '''
      Connect to the HW
      Clear query error
      
      '''
        
   
      try:
         self.sock.connect((ip,port))
         msg ='OK' 
         
         self.sendCmd('*CLS\n')
         return msg
      except socket.error , msg:
         print msg
@@ -43,37 +60,41 @@ class CommandLine:
   
   def setPower(self,power):
       POWERCMD="POWER "

       cmd= POWERCMD + str(power) + POWERUNIT
 
       try:

           err=self.sendCmd(cmd)
           
           msg=self.query(QUERYERROR)
           
           return msg,err
           status_send=self.sendCmd(cmd)
           if error_msg != '0,\"No error\"\n': 
                print "exception",error_msg
                raise CommandLineError(error_msg) 
           return statusSend 

       except socket.error , msg:
          print "connect error: " ,msg
          return msg,False
          self.sock=None
   
   def getPower(self):
       QUERYPOWER="POWER? \n"
       QUERYPOWER="POWER?;SYST:ERR?\n"
       cmd=QUERYPOWER
       try:

          msg=self.query(cmd)
           val=int(msg.strip()) # unit is MHZ, 
           print msg,val
           return msg,val
       
          commands=msg.split(';')
          val=int(commands[0])# unit is MHZ,
          err_msg=commands[1]
          print "query err",msg
          if err_msg != '0,\"No error\"\n': 
                print "exception",err_msg
                raise CommandLineError(err_msg)   
          return err_msg,val
   
       except socket.error , msg:
          print "connect error: " ,msg
          return msg,-1
          self.sock=None
       except CommandLineError,msg:
          raise
       except ValueError,msg:
          raise CommandLineError(msg)   
   
     
   def setFrequency(self,freq):
@@ -83,10 +104,8 @@ class CommandLine:
       try:

           err=self.sendCmd(cmd)
           print "send freq"
             
           msg=self.query(QUERYERROR)
           print "query err"
            
           return msg,err
           
@@ -97,21 +116,43 @@ class CommandLine:
   
   def getFrequency(self):
         
         
        cmd= QUERYFREQ
        try:
           
          msg=self.query(cmd)
           val=int(msg)/1e6 # unit is MHZ, 
           print msg,val
           return msg,val
       
          commands=msg.split(';')
          val=int(commands[0])/1e6 # unit is MHZ,
          err_msg=commands[1]
          print "query err",msg
          if err_msg != '0,\"No error\"\n': 
                print "exception",err_msg
                raise CommandLineError(err_msg)   
          return err_msg,val
   
        except socket.error , msg:
          print "connect error: " ,msg
          return msg,-1
          self.sock=None
        except CommandLineError,msg:
          raise
        except ValueError,msg:
          raise CommandLineError(msg)   
   
   def readStatus(self):
       ''' 
       Query the error code of the synt.      
       '''       
       try:
           
          msg=self.query(QUERYERROR)
          print "query err",msg
          if msg != '0,\"No error\"\n': 
                print "exception",msg
                raise CommandLineError(msg)   
          return msg
       except socket.error , msg:
          print "connect error: " ,msg
          return msg
          
   def rfOn(self):
     
+4 −1
Original line number Diff line number Diff line
@@ -95,6 +95,9 @@ class LocalOscillator(Receivers__POA.LocalOscillator, CharacteristicComponent, C
   def set(self,rf_power,rf_freq):
       self.cl.setPower(rf_power)
       self.cl.setFrequency(rf_freq)
       return 1
   
   
   

   
+4 −3
Original line number Diff line number Diff line
@@ -22,10 +22,11 @@ class amplitudeDevIO(DevIO):
        self.value = value
                                    
class frequencyDevIO(DevIO):
    def __init__(self, value=0):
        DevIO.__init__(self, value)

    def __init__(self, cl):
        DevIO.__init__(self, cl)
        self.cl=cl
    def read(self):
        self.cl.getFrequency()
        return self.value

    def write(self, value):
+34 −8
Original line number Diff line number Diff line
@@ -21,29 +21,55 @@ class TestCommandLine(unittest2.TestCase):
          #print 'aa:',msg
          #self.assertEqual('0,\"No error\"\n',msg)
          
      def test_sendCmd(self):
      def test_1_sendCmd(self):
          
          msg=self.cl.sendCmd('FREQ 2188 MHZ\n')
          print 'aa:',msg
          self.assertEqual(True,msg)
         
          
      def test_sendFrequency(self):
      def test_2_sendFrequency(self):
         msg,err=self.cl.setFrequency(2000)
         self.assertEqual('0,\"No error\"\n',msg)
                
 
      def test_getFrequency(self):
#     def test_3_getFrequency(self):
         val=0.
         msg,val=self.cl.getFrequency()
         self.assertEqual(2000,val)
      def test_sendPower(self):
      @unittest2.skip("demonstrating skipping")      
      def test_3_getFrequency_err(self):
         self.assertRaises(CommandLine.CommandLineError, self.cl.getFrequency)

      def test_4_sendPower(self):
         msg,err=self.cl.setPower(13)
         self.assertEqual('0,\"No error\"\n',msg)
      def test_getPower(self):
         
      @unittest2.skip("demonstrating skipping")      
      def test_4_sendPower(self):
         msg,err=self.cl.setPower(13)
         self.assertEqual('0,\"No error\"\n',msg)
   
      def test_5_getPower(self):
         
         msg,val=self.cl.getPower()
         self.assertEqual(13,val)
      def test_5_getPower(self):
         
         msg,val=self.cl.getPower()
         self.assertEqual(13,val)
         self.assertEqual('0,\"No error\"\n',msg)

      def test_6_readStatus(self):
         msg=self.cl.readStatus()
         self.assertEqual('0,\"No error\"\n',msg)
      
      @unittest2.skip("demonstrating skipping")      
      def test_7_sendWrongCMD(self):
      #    try: 
             self.cl.sendCmd('WOWOW \n')  #wrong msg
      #    except Commandline.CommandLineError ,msg:
             self.assertRaises(CommandLine.CommandLineError, self.cl.readStatus)
           
            
         
if __name__ == '__main__':