HOME Prise de donnees MML Controle commande Simulations Notes Hardware Ligne X Laser Interaction Diagnostiques Synchronisation
Hardware
  Notes sur les differents appareils (Klystron, Etuves, Sondes Etuve, Temperature, Modulateur,...), Page 2 of 2  Not logged in ThomX    logo
New entries since:Thu Jan 1 01:00:00 1970
ID Date Author Status Type Category Important Subject Icon
  16   Wed Sep 16 12:22:18 2020 Entered by Hayg Guler from 134.158.195.145 on Wed Sep 16 12:17:51 2020Under ProcessInfoTemperature Tests chiller canon, entered from 134.158.195.145 

Tests avec nouvelle pt100 sur la structure du Canon

Consigne 30°C

Température entrée canon : 28.6 °C (pt100 sur l'eau)

Température sur la structure : 33.9°C

 

Il semblerait que l'écart de température est constant (environ 5°C) 

 

Attachment 1: Selection_011.png
Selection_011.png
  15   Mon Jul 22 14:45:32 2019 Entered by Kevin Dupraz from 193.55.29.169 on Mon Jul 22 14:45:10 2019FixedInfoInfra Mot de passe Cameras Surveillance 

Les caméras sont des HIKVISION :

HIKVISION DS-2DE4A404IW-DE(2.8-12MM)

Caméra IP HIKVISION PTZ 4MP + IR 50m

  

  • CMOS à balayage progressif 1 / 1.9 "
  • Résolution jusqu'à 2560 × 1440
  • Ultra-faible lumière:
  •     Couleur: 0.002 Lux @ (F1.6, AGC ON) 

    N / B: 0.0002 Lux @ (F1.6, AGC ON) 
    0 Lux avec IR

  • Zoom optique 4 ×, zoom numérique 16 ×
  • Désembuage numérique, EIS, 3D DNR, BLC, HLC, WDR, exposition régionale, focus régional
  • Jusqu'à 50 m de distance IR
  • 12 VDC & PoE + (802.3at, classe 4)
  • Prise en charge de la compression vidéo H.265 + / H.265

 

Le mot de passe pour accerde à l'interface de configuration des caméras de surveillance est :

user: admin
pass: Th0mx_CAM

user: SDC
pass: thomx_123

elles sont sous l'adresse IP: 192.168.1.10 à 192.168.1.15

docs IP keyboard C400-I:
https: //youtu.be/mdsnin-pcSg

Ajoutée le 10 janv. 2019
The C400 keyboard works well with Hikvision PTZs. For other brand PTZs, it requires call special function preset to set up and call patrol and pattern. If there is any question with installation, please send detailed problems to lefteksupport@163.com

 

Attachment 1: C400-I_User_Manual.pdf
Attachment 2: UD14905B_Baseline_User-Manual-of-Network-Speed-Dome_V5.6.12_20190802.pdf
  14   Thu Jul 11 11:14:46 2019 nfalcoz OtherDocs , entered from 134.158.195.143 
Test
Attachment 1: screenshot.py
#!/usr/bin/env python
# Python screenshot tool (fullscreen/area selection)
# Tested on:
# Lubuntu 13.04 x86_64
# Gentoo 4.1.7-hardened-r1 x86_64

import sys
from PyQt4 import QtCore, QtGui
from commands import getoutput
from StringIO import StringIO
from Xlib import X, display, Xutil


# Documentation for python-xlib here:
# http://python-xlib.sourceforge.net/doc/html/index.html

class XSelect:
    def __init__(self, display):
        # X display
        self.d = display

        # Screen
        self.screen = self.d.screen()

        # Draw on the root window (desktop surface)
        self.window = self.screen.root

        # If only I could get this working...
        #cursor = xobject.cursor.Cursor(self.d, Xcursorfont.crosshair)
        #cursor = self.d.create_resource_object('cursor', Xcursorfont.X_cursor)
        cursor = X.NONE

        self.window.grab_pointer(1, X.PointerMotionMask|X.ButtonReleaseMask|X.ButtonPressMask,
                X.GrabModeAsync, X.GrabModeAsync, X.NONE, cursor, X.CurrentTime)

        self.window.grab_keyboard(1, X.GrabModeAsync, X.GrabModeAsync, X.CurrentTime)

        colormap = self.screen.default_colormap
        color = colormap.alloc_color(0, 0, 0)
        # Xor it because we'll draw with X.GXxor function
        xor_color = color.pixel ^ 0xffffff

        self.gc = self.window.create_gc(
            line_width = 1,
            line_style = X.LineSolid,
            fill_style = X.FillOpaqueStippled,
            fill_rule  = X.WindingRule,
            cap_style  = X.CapButt,
            join_style = X.JoinMiter,
            foreground = xor_color,
            background = self.screen.black_pixel,
            function = X.GXxor,
            graphics_exposures = False,
            subwindow_mode = X.IncludeInferiors,
        )

        done    = False
        started = False
        start   = dict(x=0, y=0)
        end     = dict(x=0, y=0)
        last    = None
        drawlimit = 10
        i = 0

        while done == False:
            e = self.d.next_event()

            # Window has been destroyed, quit
            if e.type == X.DestroyNotify:
                sys.exit(0)

            # Mouse button press
            elif e.type == X.ButtonPress:
                # Left mouse button?
                if e.detail == 1:
                    start = dict(x=e.root_x, y=e.root_y)
                    started = True

                # Right mouse button?
                elif e.detail == 3:
                    sys.exit(0)

            # Mouse button release
            elif e.type == X.ButtonRelease:
                end = dict(x=e.root_x, y=e.root_y)
                if last:
                    self.draw_rectangle(start, last)
                done = True
                pass

            # Mouse movement
            elif e.type == X.MotionNotify and started:
                i = i + 1
                if i % drawlimit != 0:
                    continue

                if last:
                    self.draw_rectangle(start, last)
                    last = None

                last = dict(x=e.root_x, y=e.root_y)
                self.draw_rectangle(start, last)
                pass

            # Keyboard key
            elif e.type == X.KeyPress:
                sys.exit(0)

        self.d.flush()

        coords = self.get_coords(start, end)
        if coords['width'] <= 1 or coords['height'] <= 1:
            sys.exit(0)
        else:
            print "%d %d %d %d" % (coords['start']['x'], coords['start']['y'], coords['width'], coords['height'])

    def get_coords(self, start, end):
        safe_start = dict(x=0, y=0)
        safe_end   = dict(x=0, y=0)

        if start['x'] > end['x']:
            safe_start['x'] = end['x']
            safe_end['x']   = start['x']
        else:
            safe_start['x'] = start['x']
            safe_end['x']   = end['x']

        if start['y'] > end['y']:
            safe_start['y'] = end['y']
            safe_end['y']   = start['y']
        else:
            safe_start['y'] = start['y']
            safe_end['y']   = end['y']

        return {
            'start': {
                'x': safe_start['x'],
                'y': safe_start['y'],
            },
            'end': {
                'x': safe_end['x'],
                'y': safe_end['y'],
            },
            'width' : safe_end['x'] - safe_start['x'],
            'height': safe_end['y'] - safe_start['y'],
        }

    def draw_rectangle(self, start, end):
        coords = self.get_coords(start, end)
        self.window.rectangle(self.gc,
            coords['start']['x'],
            coords['start']['y'],
            coords['end']['x'] - coords['start']['x'],
            coords['end']['y'] - coords['start']['y']
        )


class Screenshot(QtGui.QWidget):
    def __init__(self):
        super(Screenshot, self).__init__()

        self.screenshotLabel = QtGui.QLabel()
        self.screenshotLabel.setSizePolicy(QtGui.QSizePolicy.Expanding,
                QtGui.QSizePolicy.Expanding)
        self.screenshotLabel.setAlignment(QtCore.Qt.AlignCenter)
        self.screenshotLabel.setMinimumSize(240, 160)

        self.createOptionsGroupBox()
        self.createButtonsLayout()

        mainLayout = QtGui.QVBoxLayout()
        mainLayout.addWidget(self.screenshotLabel)
        mainLayout.addWidget(self.optionsGroupBox)
        mainLayout.addLayout(self.buttonsLayout)
        self.setLayout(mainLayout)

        self.area = None
        self.shootScreen()
        self.delaySpinBox.setValue(1)

        self.setWindowTitle("Screenshot")
        self.resize(300, 200)

    def resizeEvent(self, event):
        scaledSize = self.originalPixmap.size()
        scaledSize.scale(self.screenshotLabel.size(), QtCore.Qt.KeepAspectRatio)
        if not self.screenshotLabel.pixmap() or scaledSize != self.screenshotLabel.pixmap().size():
            self.updateScreenshotLabel()

    def selectArea(self):
        self.hide()

        #print sys.argv[0]
        resArea = getoutput('python ./screenshot.py -A') #TODO horrible 1/2 !
        if resArea and resArea != '0 0 0 0':
            print resArea.split()
            self.area = xo, yo, x, y = resArea.split()
            self.areaLabel.setText("Area: x%s y%s to x%s y%s" % (xo, yo, x, y))
            self.shootScreen()
            # print 'OK', self.area #DEBUG
        elif self.area is not None:
            self.area = None
            self.areaLabel.setText("Area: fullscreen")
            self.shootScreen()

        self.show()

    def newScreenshot(self):
        if self.hideThisWindowCheckBox.isChecked():
            self.hide()
        self.newScreenshotButton.setDisabled(True)

        QtCore.QTimer.singleShot(self.delaySpinBox.value() * 1000, self.shootScreen)

    def saveScreenshot(self):
        format = 'png'
        initialPath = QtCore.QDir.currentPath() + "/untitled." + format

        fileName = QtGui.QFileDialog.getSaveFileName(self, "Save As",
                initialPath,
                "%s Files (*.%s);;All Files (*)" % (format.upper(), format))
        if fileName:
            self.originalPixmap.save(fileName, format)

    def shootScreen(self):
        if self.delaySpinBox.value() != 0:
            QtGui.qApp.beep()

        # Garbage collect any existing image first.
        self.originalPixmap = None
        self.originalPixmap = QtGui.QPixmap.grabWindow(QtGui.QApplication.desktop().winId())
        if self.area is not None:
            qi = self.originalPixmap.toImage()
            size = qi.size()
            qi = qi.copy(int(self.area[0]), int(self.area[1]), int(self.area[2]), int(self.area[3]))
            self.originalPixmap = None
            self.originalPixmap = QtGui.QPixmap.fromImage(qi)

        self.updateScreenshotLabel()

        self.newScreenshotButton.setDisabled(False)
        if self.hideThisWindowCheckBox.isChecked():
            self.show()

    def updateCheckBox(self):
        if self.delaySpinBox.value() == 0:
            self.hideThisWindowCheckBox.setDisabled(True)
        else:
            self.hideThisWindowCheckBox.setDisabled(False)

    def createOptionsGroupBox(self):
        self.optionsGroupBox = QtGui.QGroupBox("Options")

        self.delaySpinBox = QtGui.QSpinBox()
        self.delaySpinBox.setSuffix(" s")
        self.delaySpinBox.setMaximum(60)
        self.delaySpinBox.valueChanged.connect(self.updateCheckBox)

        self.delaySpinBoxLabel = QtGui.QLabel("Screenshot Delay:")

        self.hideThisWindowCheckBox = QtGui.QCheckBox("Hide This Window")
        self.hideThisWindowCheckBox.setChecked(True)
        
        self.areaLabel = QtGui.QLabel("Area: fullscreen")

        optionsGroupBoxLayout = QtGui.QGridLayout()
        optionsGroupBoxLayout.addWidget(self.delaySpinBoxLabel, 0, 0)
        optionsGroupBoxLayout.addWidget(self.delaySpinBox, 0, 1)
        optionsGroupBoxLayout.addWidget(self.hideThisWindowCheckBox, 1, 0)
        optionsGroupBoxLayout.addWidget(self.areaLabel, 1, 1)
        self.optionsGroupBox.setLayout(optionsGroupBoxLayout)

    def createButtonsLayout(self):
        self.selectAreaButton = self.createButton("Select Area",
                self.selectArea)

        self.newScreenshotButton = self.createButton("New Screenshot",
                self.newScreenshot)

        self.saveScreenshotButton = self.createButton("Save Screenshot",
                self.saveScreenshot)

        self.quitScreenshotButton = self.createButton("Quit", self.close)

        self.buttonsLayout = QtGui.QHBoxLayout()
        self.buttonsLayout.addStretch()
        self.buttonsLayout.addWidget(self.selectAreaButton)
        self.buttonsLayout.addWidget(self.newScreenshotButton)
        self.buttonsLayout.addWidget(self.saveScreenshotButton)
        self.buttonsLayout.addWidget(self.quitScreenshotButton)

    def createButton(self, text, member):
        button = QtGui.QPushButton(text)
        button.clicked.connect(member)
        return button

    def updateScreenshotLabel(self):
        self.screenshotLabel.setPixmap(self.originalPixmap.scaled(
                self.screenshotLabel.size(), QtCore.Qt.KeepAspectRatio,
                QtCore.Qt.SmoothTransformation))
... 19 more lines ...
Attachment 2: RFCanon.png
RFCanon.png
Attachment 3: RFSection.png
RFSection.png
  13   Thu Jun 27 14:26:55 2019 nfalcoz FixKlystron , entered from 134.158.195.143 
Test IHMLogBook
Attachment 1: screen.png
screen.png
Attachment 2: Laser.png
Laser.png
  12   Fri Jun 14 13:55:33 2019 nfalcoz FixSondes Etuve , entered from 134.158.195.143 
Test 3 screens
Attachment 1: screen.png
screen.png
Attachment 2: Laser.png
Laser.png
Attachment 3: LaserAvance.png
LaserAvance.png
  11   Wed Jun 12 14:23:38 2019 nfalcoz ProblemTemperature , entered from 134.158.195.143 
éééééèèè
  10   Wed Jun 12 14:15:20 2019 Entered by Falcoz Nicolas from 134.158.195.143 on Wed Jun 12 14:15:07 2019 ProblemEtuves Test accent éè 

Test accent éè

  9   Wed Jun 12 11:45:26 2019 nfalcoz UrgentTemperature , entered from 134.158.195.143 
Essai 3 sans pièce jointe (-_/!?éèêü)
  8   Wed Jun 12 11:24:05 2019 nfalcoz ProblemSondes Etuve , entered from 134.158.195.143 
/self.saisieTexte.toPlainText()
  7   Wed Jun 12 11:09:26 2019 nfalcoz ProblemSondes Etuve , entered from 134.158.195.143 
Essai 2 sans pièe jointe
  6   Wed Jun 12 11:04:46 2019 nfalcoz InfoDocs , entered from 134.158.195.143 
Essai 1 sans piece jointe
Attachment 1: index.jpeg
index.jpeg
  Draft   Tue Jun 11 12:25:21 2019 Entered by Falcoz Nicolas from 134.158.195.143 on Tue Jun 11 11:55:34 2019      
  4   Thu Jun 6 12:00:33 2019 nfalcoz QuestionDocs , entered from 134.158.195.143 
Coucou Test2
Attachment 1: index.jpeg
index.jpeg
  3   Thu Jun 6 11:54:08 2019 nfalcoz QuestionDocs , entered from 134.158.195.143 
Coucou Test
Attachment 1: index.jpeg
index.jpeg
  2   Thu Jun 6 11:53:24 2019 nfalcoz QuestionDocs , entered from 134.158.195.143 
Coucou Test
Attachment 1: index.jpeg
index.jpeg
  1   Thu Jun 6 10:58:43 2019 Miwiwi QuestionDocs , entered from 134.158.195.143 
coucou loulou
Attachment 1: index.jpeg
index.jpeg
ELOG V3.1.4-395e101