Exemplo n.º 1
0
    def __init__(self, logger=None, plotFig=True, prefix='', debug=True):
        """
        Class to readSerial port from PID control Arduino
        and store temperatures from inside WVR enclosure to file

        """
        host = socket.gethostname()
        if host == 'wvr2':
            self.method = 2
            self.loc = 'summit'
        elif host == 'wvr1':
            self.method = 2
            self.loc = 'pole'
        else:
            self.method = 2
        self.port = '/dev/arduinoPidTemp'
        self.baudrate = 9600
        self.plotFig = plotFig
        self.setPoint = 19
        self.replotTime = 5
        self.fileNameRead = ''
        self.debug = debug
        self.home = os.getenv('HOME')
        self.dataDir = self.home + '/wvr_data/'  #symlink to where the data is

        if prefix == '':
            self.prefix = self.getPrefixTimeStamp()
        else:
            self.prefix = prefix
        if logger == None:
            self.lw = logWriter.logWriter(self.prefix, verbose=False)
        else:
            self.lw = logger
    def __init__(self, logger=None, plotFig=True, prefix='', debug=True):
        """
        Class to read ethernet socket port from PID control Arduino
        and store temperatures from inside WVR enclosure to file
        v3 (Nov 2017) is updated from v2 to use ethernet communication, 
        instead of serial.
        Used homemade Socket.py socket interface.

        """
        hostname = S.socket.gethostname()
        self.ip = '192.168.168.234' # IP address of PidTemp Arduino
        self.port = 4321
        self.debug=debug
        self.plotFig=plotFig
        self.setPoint = 19
        self.replotTime = 5
        self.fileNameRead = ''
        self.home = os.getenv('HOME')
        self.dataDir = self.home+'/wvr_data/'   #symlink to where the data is

        if hostname == 'wvr2':
            self.loc = 'summit'
        elif hostname == 'wvr1':
            self.loc = 'pole'

        if prefix == '':
            self.prefix = self.getPrefixTimeStamp()
        else:
            self.prefix = prefix
        if logger== None:
            self.lw = logWriter.logWriter(self.prefix, verbose=False)
        else:
            self.lw = logger
        
        self.initPort()
Exemplo n.º 3
0
    def InitUI(self):
        self.Bind(wx.EVT_CLOSE, self.OnExitApp)
        vbox = wx.BoxSizer(wx.VERTICAL)
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        
        
        for inst in self.instList:
            panel = inst.panelClass(self, inst);
            
            if inst.isMotor:
                motorVbox = wx.BoxSizer(wx.VERTICAL)
                motorVbox.Add(panel, proportion=0, border=0, flag=wx.EXPAND)
            else:
                hbox.Add(panel, proportion=1, border=0, flag=wx.EXPAND)
                
                

        if self.laserFound() and self.motorFound():
            self.fineAlign = fineAlign(self.getLasers()[0], self.getMotors()[0])
            try:
                self.fineAlignPanel = fineAlignPanel(self, self.fineAlign)
            except Exception as e:
                dial = wx.MessageDialog(None, 'Could not initiate instrument control. '+traceback.format_exc(), 'Error', wx.ICON_ERROR)
                dial.ShowModal()
            motorVbox.Add(self.fineAlignPanel, proportion=0, flag=wx.EXPAND)
            
            self.autoMeasure = autoMeasure(self.getLasers()[0], self.getMotors()[0], self.fineAlign)
            
            self.autoMeasurePanel = autoMeasurePanel(self, self.autoMeasure)
            motorVbox.Add(self.autoMeasurePanel, proportion=0, flag=wx.EXPAND) 
        
        if self.motorFound():
            hbox.Add(motorVbox)
        
        
        vbox.Add(hbox, 3, wx.EXPAND)
        self.log = outputlogPanel(self)
        vbox.Add(self.log, 1, wx.EXPAND)
        self.SetSizer(vbox)
        
        
        sys.stdout = logWriter(self.log)
        sys.stderr = logWriterError(self.log)
Exemplo n.º 4
0
    def InitUI(self):
        self.Bind(wx.EVT_CLOSE, self.OnExitApp)
        vbox = wx.BoxSizer(wx.VERTICAL)
        hbox = wx.BoxSizer(wx.HORIZONTAL)

        for inst in self.instList:
            panel = inst.panelClass(self, inst)

            if inst.isMotor:
                motorVbox = wx.BoxSizer(wx.VERTICAL)
                motorVbox.Add(panel, proportion=0, border=0, flag=wx.EXPAND)
            else:
                hbox.Add(panel, proportion=1, border=0, flag=wx.EXPAND)

        if self.laserFound() and self.motorFound():
            self.fineAlign = fineAlign(self.getLasers()[0],
                                       self.getMotors()[0])
            try:
                self.fineAlignPanel = fineAlignPanel(self, self.fineAlign)
            except Exception as e:
                dial = wx.MessageDialog(
                    None, 'Could not initiate instrument control. ' +
                    traceback.format_exc(), 'Error', wx.ICON_ERROR)
                dial.ShowModal()
            motorVbox.Add(self.fineAlignPanel, proportion=0, flag=wx.EXPAND)

            self.autoMeasure = autoMeasure(self.getLasers()[0],
                                           self.getMotors()[0], self.fineAlign)

            self.autoMeasurePanel = autoMeasurePanel(self, self.autoMeasure)
            motorVbox.Add(self.autoMeasurePanel, proportion=0, flag=wx.EXPAND)

        if self.motorFound():
            hbox.Add(motorVbox)

        vbox.Add(hbox, 3, wx.EXPAND)
        self.log = outputlogPanel(self)
        vbox.Add(self.log, 1, wx.EXPAND)
        self.SetSizer(vbox)

        sys.stdout = logWriter(self.log)
        sys.stderr = logWriterError(self.log)
Exemplo n.º 5
0
 def setLogger(self, logger=None):
     prefix = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
     if logger == None:
         self.lw = logWriter.logWriter(prefix, verbose=False)
     else:
         self.lw = logger
Exemplo n.º 6
0
                      dest="verbose",
                      action="store_true",
                      default=False,
                      help="-v option will print to Logging to screen in addition to file. Default = False")

    parser.add_option("-d",
                      dest="duration",
                      default=3500,
                      type=int,
                      help="-d Duration in seconds of the observations. Default=3500s")

(options, args) = parser.parse_args()
  
if options.fileNameRead != '': 
    options.plotFig = True

if options.verbose == True:
    debug=True
else:
    debug=False

ts = time.strftime('%Y%m%d_%H%M%S')
prefix=ts
lw = logWriter.logWriter(prefix, options.verbose)

rsp = sr.SerialPIDTempsReader(logger=lw,plotFig=options.plotFig,debug=debug)
if options.fileNameRead == '':
    rsp.loopNtimes(options.duration)
else:
    rsp.plotTempsFromFile(options.fileNameRead)
Exemplo n.º 7
0
headers = {
    'User-Agent':
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'
}

res = requests.get('http://bj.xiaozhu.com/', headers=headers)
print(res)

soup = BeautifulSoup(res.text, 'html.parser')
# 四种解释器
#1 "html.parser"      python内置的标准库,执行速度中,容错能力强              python2.7.3 or 3.2.2 之前的版本中容错能力差
#2 "lxml"             速度快, 容错能力强                                   需要安装C语言库
#3 ["lxml", "xml"] -> "xml"  速度快,唯一支持XML的解析器                     需要安装C语言库
#4 html5lib           最好的容错性,以浏览器的方式解析文档生成HTML5的格式文档  速度慢,不依赖外部扩展库

lf = lw.logWriter()

try:
    lf.write(soup.prettify())
except ConnectionError:
    print('connect Default')

# 解析到的Soup文档可以使用find()和find_all()方法及selector()方法定位需要的元素
# find_all(tag, attibutes, recursive, text, limit, keywords)
# find(tag, attibutes, recursive, text, keywords)

# F12 Element中找到价格标签位置  右键copy -> copy Selector
#page_list > ul > li:nth-child(1) > div.result_btm_con.lodgeunitname > div:nth-child(1) > span > i
price = soup.select(
    '#page_list > ul > li:nth-of-type(1) > div.result_btm_con.lodgeunitname > div:nth-child(1) > span > i'
)  #定位元素位置并通过selector方法提取
Exemplo n.º 8
0
if __name__ == '__main__':
    usage = '''
 
    '''
    #options ....
    parser = OptionParser(usage=usage)

(options, args) = parser.parse_args()

#### VARIABLES #####
script = "wvrTest.py"

######################
ts = time.strftime('%Y%m%d_%H%M%S')
prefix = ts + '_Test'
lw = logWriter.logWriter(prefix, False)
lw.write("Running %s" % script)

# Also print to standard output file in case we get messages going to it
print "Starting %s at %s" % (script, ts)
sys.stdout.flush()

mypid = os.getpid()
print "PID:", mypid

pri = os.popen('ps -p %s -o pri' % mypid).read().split()[1]
print "NICE:", pri
sys.stdout.flush()
time.sleep(2)

pri = os.popen('ps -p %s -o pri' % mypid).read().split()[1]
Exemplo n.º 9
0
# -*- coding: utf-8 -*-
import time
import logWriter

log = logWriter.logWriter()
log.init()

while True:
	log.makeLog()
	log.post()
	time.sleep(10)
Exemplo n.º 10
0
from authentification import userVerified
from CSV_Functions import get_row_count, get_remote_info
from SSH_Subprocess import run_ssh_command
import sys
import time
from lcd_driver import lcdInit, lcdMessage, lcdClear
from configReader import configReader
from logWriter import logWriter

config = configReader('config.ini')  #Get information from config file
log = logWriter()  #Initialize logWriter


#Function to run program
def runShutdown(file_name):

    #Start with the row after the header info.
    row_number = 1

    #Determine the number of rows in the csv file.
    row_count = get_row_count(file_name)

    #Loop through and run the ssh command for every row in the csv file.
    while (row_number < row_count):
        machine_name, ip, rmt_user, sht_dwn_cmd = get_remote_info(
            file_name, row_number)
        run_ssh_command(machine_name, ip, rmt_user, sht_dwn_cmd)
        row_number += 1


#Check for user verification
Exemplo n.º 11
0
        default=False,
        help=
        "-v option will print to Logging to screen in addition to file. Default = False"
    )

(options, args) = parser.parse_args()

#### VARIABLES #####
loadList = ['twoLoads_Ambient', 'twoLoads_Cold']
loadDuration = 20  # seconds
script = "wvrTwoLoads.py"
######################

ts = time.strftime('%Y%m%d_%H%M%S')
prefix = ts + '_' + loadList[0]
lw = logWriter.logWriter(ts, options.verbose)
lw.write("Running %s" % script)

lw.write("create wvrComm object")
wvrC = wvrComm.wvrComm(debug=False)

lw.write('Set WVR to operational')
if (wvrC.setWvrToOperation()):
    lw.write("WVR Operational!")
else:
    lw.write("ERROR: WVR failed to go to Operational. Check low level errors")
    sys.exit()

lw.write("Create wvrDaq object")
daq = wvrDaq.wvrDaq(logger=lw,
                    reg_fast=reg_fast,
from keypad import keypadMsge
import time
from lcd_driver import lcdMessage, lcdClear
from configReader import configReader
from logWriter import logWriter

log = logWriter()


def userVerified():
    config = configReader('config.ini')  #Get information from config file

    #Pin needed from user to authorize access
    pin = config.getAuthConfig('pin')
    maxAttempts = config.getAuthConfig('maxAttempts')
    lockoutTime = config.getAuthConfig('lockoutTime')
    exitAuth = config.getAuthConfig('exitAuthenticatorCode')
    attempt = 1

    #Tell user to input pin on keypad
    print('User Authentification Required!')
    print('Please input your pin on the keypad')

    while (True):
        global log
        try:

            #record that authenticator is being used to log
            log.write(f'Authenticator Initialized: Asking user for pin')

            #Tell user to input password on lcd
Exemplo n.º 13
0
 def setLogger(self,logger=None):
     if logger == None:
         self.lw = logWriter.logWriter(prefix=self.prefix, verbose=False)
     else:
         self.lw = logger