MultiPyVu 3.1.2__tar.gz → 3.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {multipyvu-3.1.2/src/MultiPyVu.egg-info → multipyvu-3.2.0}/PKG-INFO +5 -1
- {multipyvu-3.1.2 → multipyvu-3.2.0}/README.md +4 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/BRT.py +1 -1
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/CommandChamber.py +1 -1
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/CommandField.py +2 -2
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/CommandMultiVu.py +3 -3
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/CommandSdo.py +3 -3
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/CommandTemperature.py +3 -3
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/CommandWaitFor.py +11 -11
- multipyvu-3.2.0/src/MultiPyVu/GetRunningProcesses.py +28 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/ICommand.py +3 -3
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/ParseInputs.py +2 -2
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/SocketMessage.py +7 -7
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/__init__.py +7 -7
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/__main__.py +1 -1
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/__version.py +1 -1
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/exceptions.py +1 -1
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/generate_sdo_objects.py +1 -1
- multipyvu-3.2.0/src/MultiPyVu/gui/__init__.py +0 -0
- multipyvu-3.2.0/src/MultiPyVu/images/__init__.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/instrument.py +25 -25
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/logging_config.py +6 -2
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/project_vars.py +2 -2
- multipyvu-3.2.0/src/MultiPyVu/scripts/__init__.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/scripts/helper_scripts.py +2 -2
- {multipyvu-3.1.2 → multipyvu-3.2.0/src/MultiPyVu.egg-info}/PKG-INFO +5 -1
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu.egg-info/SOURCES.txt +4 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/LICENSE +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/pyproject.toml +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/setup.cfg +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/setup.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/Command_factory.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/IEventManager.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/IServer.py +1 -1
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/MultiVuClient.py +16 -16
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/MultiVuClient_base.py +9 -9
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/MultiVuDataFile/MultiVuDataFile.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/MultiVuDataFile/__init__.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/MultiVuDataFile/__version.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/MultiVuDataFile/is_pathname_valid.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/MultiVuServer.py +12 -12
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/SocketMessageClient.py +4 -4
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/SocketMessageServer.py +10 -10
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/check_windows_esc.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/font/Play-Bold.ttf +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/font/Play-Regular.ttf +0 -0
- {multipyvu-3.1.2/src/MultiPyVu/gui → multipyvu-3.2.0/src/MultiPyVu/font}/__init__.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/gui/Controller.py +7 -7
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/gui/IController.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/gui/IView.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/gui/ViewFactory.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/gui/ViewTk.py +3 -3
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/images/Q.png +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/images/QD_logo.jpg +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/logging_config.yaml +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/scripts/whats_my_ip_address.cmd +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu/sdo_object.py +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu.egg-info/dependency_links.txt +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu.egg-info/requires.txt +0 -0
- {multipyvu-3.1.2 → multipyvu-3.2.0}/src/MultiPyVu.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: MultiPyVu
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: Control MultiVu using Python
|
|
5
5
|
Author-email: Damon D Jackson <djackson@qdusa.com>
|
|
6
6
|
Maintainer-email: "Quantum Design, Inc." <apps@qdusa.com>
|
|
@@ -435,6 +435,10 @@ client = mpv.Client(port=6000)
|
|
|
435
435
|
- A log file named QdMultiVu.log shows the traffic between the server and client which can also be useful during troubleshooting.
|
|
436
436
|
|
|
437
437
|
## Changelog<a class="anchor" id="changelog"></a>
|
|
438
|
+
**3.2.0**
|
|
439
|
+
- November 2024
|
|
440
|
+
- Improvements in determining the running version of MultiVu.
|
|
441
|
+
|
|
438
442
|
**3.1.2**
|
|
439
443
|
- October 2024
|
|
440
444
|
- Fixed a bug which truncated numbers
|
|
@@ -390,6 +390,10 @@ client = mpv.Client(port=6000)
|
|
|
390
390
|
- A log file named QdMultiVu.log shows the traffic between the server and client which can also be useful during troubleshooting.
|
|
391
391
|
|
|
392
392
|
## Changelog<a class="anchor" id="changelog"></a>
|
|
393
|
+
**3.2.0**
|
|
394
|
+
- November 2024
|
|
395
|
+
- Improvements in determining the running version of MultiVu.
|
|
396
|
+
|
|
393
397
|
**3.1.2**
|
|
394
398
|
- October 2024
|
|
395
399
|
- Fixed a bug which truncated numbers
|
|
@@ -11,6 +11,7 @@ from abc import abstractmethod
|
|
|
11
11
|
from enum import IntEnum
|
|
12
12
|
from typing import Union, Dict, Tuple, List
|
|
13
13
|
|
|
14
|
+
from .exceptions import MultiPyVuError
|
|
14
15
|
from .ICommand import (ICommand,
|
|
15
16
|
ICommandImp,
|
|
16
17
|
ISimulateChange,
|
|
@@ -18,7 +19,6 @@ from .ICommand import (ICommand,
|
|
|
18
19
|
catch_thread_error,
|
|
19
20
|
)
|
|
20
21
|
from .IEventManager import IObserver
|
|
21
|
-
from .exceptions import MultiPyVuError
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class modeEnum(IntEnum):
|
|
@@ -7,12 +7,13 @@ Created on Tue May 18 13:14:28 2021
|
|
|
7
7
|
@author: djackson
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
+
from abc import abstractmethod
|
|
10
11
|
import time
|
|
11
12
|
from enum import IntEnum
|
|
12
|
-
from abc import abstractmethod
|
|
13
13
|
from typing import Union, Dict, Tuple, List
|
|
14
14
|
|
|
15
15
|
from .check_windows_esc import _check_windows_esc
|
|
16
|
+
from .exceptions import MultiPyVuError
|
|
16
17
|
from .ICommand import (ICommand,
|
|
17
18
|
ICommandImp,
|
|
18
19
|
ISimulateChange,
|
|
@@ -21,7 +22,6 @@ from .ICommand import (ICommand,
|
|
|
21
22
|
)
|
|
22
23
|
from .IEventManager import IObserver
|
|
23
24
|
from .project_vars import CLOCK_TIME
|
|
24
|
-
from .exceptions import MultiPyVuError
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class ApproachEnum(IntEnum):
|
|
@@ -10,14 +10,14 @@ Created on Sat June 12 17:35:28 2021
|
|
|
10
10
|
@author: djackson
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
import logging
|
|
14
14
|
from abc import abstractmethod
|
|
15
|
+
from sys import platform
|
|
15
16
|
from typing import Tuple, Dict
|
|
16
|
-
import logging
|
|
17
17
|
|
|
18
|
+
from .exceptions import MultiPyVuError, PythoncomImportError
|
|
18
19
|
from .ICommand import ICommand
|
|
19
20
|
from .project_vars import SERVER_NAME
|
|
20
|
-
from .exceptions import MultiPyVuError, PythoncomImportError
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
if platform == 'win32':
|
|
@@ -4,11 +4,11 @@ CommandSdo.py is used to read and write SDOs
|
|
|
4
4
|
@author: djackson
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
from sys import platform
|
|
8
7
|
import struct
|
|
9
8
|
import re
|
|
10
9
|
import logging
|
|
11
10
|
from abc import abstractmethod
|
|
11
|
+
from sys import platform
|
|
12
12
|
from typing import Union, Tuple, Dict
|
|
13
13
|
|
|
14
14
|
from .exceptions import (MultiPyVuError,
|
|
@@ -16,11 +16,11 @@ from .exceptions import (MultiPyVuError,
|
|
|
16
16
|
CanError,
|
|
17
17
|
can_err_enum,
|
|
18
18
|
abort_err_enum,
|
|
19
|
+
PythoncomImportError
|
|
19
20
|
)
|
|
20
21
|
from .ICommand import ICommand
|
|
21
|
-
from .sdo_object import SdoObject, val_type
|
|
22
22
|
from .project_vars import SERVER_NAME, CLIENT_NAME
|
|
23
|
-
from .
|
|
23
|
+
from .sdo_object import SdoObject, val_type
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
if platform == 'win32':
|
|
@@ -7,12 +7,13 @@ Created on Tue May 18 13:14:28 2021
|
|
|
7
7
|
@author: djackson
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
from enum import IntEnum
|
|
11
10
|
import time
|
|
12
|
-
from typing import Union, Tuple, Dict, List
|
|
13
11
|
from abc import abstractmethod
|
|
12
|
+
from enum import IntEnum
|
|
13
|
+
from typing import Union, Tuple, Dict, List
|
|
14
14
|
|
|
15
15
|
from .check_windows_esc import _check_windows_esc
|
|
16
|
+
from .exceptions import MultiPyVuError
|
|
16
17
|
from .ICommand import (ICommand,
|
|
17
18
|
ICommandImp,
|
|
18
19
|
ISimulateChange,
|
|
@@ -21,7 +22,6 @@ from .ICommand import (ICommand,
|
|
|
21
22
|
)
|
|
22
23
|
from .IEventManager import IObserver
|
|
23
24
|
from .project_vars import CLOCK_TIME
|
|
24
|
-
from .exceptions import MultiPyVuError
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class ApproachEnum(IntEnum):
|
|
@@ -6,27 +6,27 @@ Created on Tue May 18 13:14:28 2021
|
|
|
6
6
|
@author: djackson
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from sys import platform
|
|
10
|
-
from enum import IntEnum
|
|
11
9
|
import time
|
|
12
|
-
from typing import Union, Tuple, Dict, List
|
|
13
10
|
from abc import abstractmethod
|
|
11
|
+
from enum import IntEnum
|
|
12
|
+
from sys import platform
|
|
13
|
+
from typing import Union, Tuple, Dict, List
|
|
14
14
|
|
|
15
15
|
from .check_windows_esc import _check_windows_esc
|
|
16
|
-
from .IEventManager import IObserver
|
|
17
|
-
from .ICommand import (ICommand,
|
|
18
|
-
ICommandImp,
|
|
19
|
-
ISimulateChange
|
|
20
|
-
)
|
|
21
|
-
from .CommandTemperature import SimulateTemperatureChange
|
|
22
|
-
from .CommandField import SimulateFieldChange
|
|
23
16
|
from .CommandChamber import SimulateChamberChange
|
|
24
|
-
from .
|
|
17
|
+
from .CommandField import SimulateFieldChange
|
|
18
|
+
from .CommandTemperature import SimulateTemperatureChange
|
|
25
19
|
from .exceptions import (MultiPyVuError,
|
|
26
20
|
PythoncomImportError,
|
|
27
21
|
CanError,
|
|
28
22
|
can_err_enum,
|
|
29
23
|
)
|
|
24
|
+
from .IEventManager import IObserver
|
|
25
|
+
from .ICommand import (ICommand,
|
|
26
|
+
ICommandImp,
|
|
27
|
+
ISimulateChange
|
|
28
|
+
)
|
|
29
|
+
from .project_vars import CLOCK_TIME
|
|
30
30
|
|
|
31
31
|
if platform == 'win32':
|
|
32
32
|
try:
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'''
|
|
2
|
+
This script gets a list of running processes
|
|
3
|
+
'''
|
|
4
|
+
|
|
5
|
+
import win32process
|
|
6
|
+
import win32api
|
|
7
|
+
from os import path
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
search_keyword = "MultiVu"
|
|
11
|
+
|
|
12
|
+
# Get a list of all running processes
|
|
13
|
+
pids = win32process.EnumProcesses()
|
|
14
|
+
|
|
15
|
+
for pid in pids:
|
|
16
|
+
try:
|
|
17
|
+
# Open processes to query its executable path
|
|
18
|
+
h_process = win32api.OpenProcess(0x0410, False, pid)
|
|
19
|
+
exe_path = win32process.GetModuleFileNameEx(h_process, 0)
|
|
20
|
+
win32api.CloseHandle(h_process)
|
|
21
|
+
|
|
22
|
+
# Check if the path contains the keyword
|
|
23
|
+
if search_keyword.lower() in exe_path.lower():
|
|
24
|
+
exe_name = path.basename(exe_path)
|
|
25
|
+
print(f"PID: {pid}, Executable Path: {exe_path}, exe name: {exe_name}")
|
|
26
|
+
except Exception:
|
|
27
|
+
# Ignore processes that we don't have access to
|
|
28
|
+
pass
|
|
@@ -13,15 +13,15 @@ Created on Tue May 18 12:59:24 2021
|
|
|
13
13
|
@author: djackson
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
-
from sys import platform
|
|
17
|
-
from typing import Union, Dict, Tuple, Type
|
|
18
16
|
from abc import ABC, abstractmethod
|
|
17
|
+
from sys import platform
|
|
19
18
|
from threading import Thread, Lock, enumerate
|
|
20
19
|
from time import time, sleep
|
|
20
|
+
from typing import Union, Dict, Tuple, Type
|
|
21
21
|
|
|
22
|
+
from .exceptions import PythoncomImportError
|
|
22
23
|
from .IEventManager import Publisher, IObserver
|
|
23
24
|
from .project_vars import CLOCK_TIME
|
|
24
|
-
from .exceptions import PythoncomImportError
|
|
25
25
|
|
|
26
26
|
if platform == 'win32':
|
|
27
27
|
try:
|
|
@@ -8,21 +8,21 @@ Created on Mon Jun 7 23:47:19 2021
|
|
|
8
8
|
@author: D. Jackson
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
-
import sys
|
|
12
|
-
from abc import ABC
|
|
13
|
-
import socket
|
|
14
|
-
import json
|
|
15
11
|
import io
|
|
12
|
+
import json
|
|
16
13
|
import logging
|
|
17
|
-
import struct
|
|
18
14
|
import re
|
|
15
|
+
import socket
|
|
16
|
+
import struct
|
|
17
|
+
import sys
|
|
18
|
+
from abc import ABC
|
|
19
19
|
from typing import Union, Dict, Tuple
|
|
20
20
|
|
|
21
|
-
from .
|
|
21
|
+
from .__version import __version__ as mpv_version
|
|
22
22
|
from .exceptions import (ClientCloseError,
|
|
23
23
|
SocketError,
|
|
24
24
|
)
|
|
25
|
-
from .
|
|
25
|
+
from .project_vars import PORT
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class Message(ABC):
|
|
@@ -22,25 +22,25 @@ Import MultiPyVu as mpv
|
|
|
22
22
|
@author: Damon D Jackson
|
|
23
23
|
"""
|
|
24
24
|
|
|
25
|
-
from sys import exc_info
|
|
26
|
-
from os import path
|
|
27
25
|
import traceback
|
|
28
|
-
from pandas import DataFrame
|
|
29
26
|
from enum import IntEnum as _IntEnum
|
|
30
27
|
from enum import auto as _auto
|
|
28
|
+
from os import path
|
|
29
|
+
from pandas import DataFrame
|
|
30
|
+
from sys import exc_info
|
|
31
31
|
from typing import Union
|
|
32
32
|
|
|
33
33
|
from .__version import __version__
|
|
34
|
-
from .
|
|
34
|
+
from .exceptions import MultiPyVuError, SocketError
|
|
35
35
|
from .MultiVuClient import Client
|
|
36
|
+
from .MultiVuDataFile.MultiVuDataFile import LabelResult
|
|
36
37
|
from .MultiVuDataFile.MultiVuDataFile import MultiVuDataFile as _MultiVuDataFile
|
|
38
|
+
from .MultiVuDataFile.MultiVuDataFile import MultiVuFileException
|
|
37
39
|
from .MultiVuDataFile.MultiVuDataFile import TScaleType as _TScaleType
|
|
38
40
|
from .MultiVuDataFile.MultiVuDataFile import TStartupAxisType as _TStartupAxisType
|
|
39
41
|
from .MultiVuDataFile.MultiVuDataFile import TTimeUnits as _TTimeUnits
|
|
40
42
|
from .MultiVuDataFile.MultiVuDataFile import TTimeMode as _TTimeMode
|
|
41
|
-
from .
|
|
42
|
-
from .MultiVuDataFile.MultiVuDataFile import MultiVuFileException
|
|
43
|
-
from .exceptions import MultiPyVuError, SocketError
|
|
43
|
+
from .MultiVuServer import Server
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
__version__ = __version__
|
|
@@ -17,11 +17,11 @@ For example:
|
|
|
17
17
|
from sys import argv
|
|
18
18
|
|
|
19
19
|
from MultiPyVu.gui.Controller import Controller
|
|
20
|
+
from MultiPyVu.ParseInputs import parse_input
|
|
20
21
|
from MultiPyVu.scripts.helper_scripts import (get_ip,
|
|
21
22
|
run_status,
|
|
22
23
|
is_running,
|
|
23
24
|
force_quit)
|
|
24
|
-
from MultiPyVu.ParseInputs import parse_input
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
def run_gui():
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
|
-
__version__ = "3.
|
|
2
|
+
__version__ = "3.2.0"
|
|
File without changes
|
|
File without changes
|
|
@@ -8,22 +8,23 @@ Created on Tue May 18 13:14:28 2021
|
|
|
8
8
|
@author: djackson
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
-
from sys import platform
|
|
12
|
-
import subprocess
|
|
13
|
-
import time
|
|
14
|
-
import re
|
|
15
11
|
import logging
|
|
12
|
+
import time
|
|
16
13
|
from enum import Enum, auto
|
|
14
|
+
from os import path
|
|
15
|
+
from sys import platform
|
|
17
16
|
from typing import Tuple
|
|
18
17
|
|
|
19
|
-
from .project_vars import SERVER_NAME, PYWIN32_VERSION, MIN_PYWIN32_VERSION
|
|
20
18
|
from .exceptions import MultiPyVuError, PythoncomImportError
|
|
21
19
|
from .__version import __version__ as mpv_version
|
|
20
|
+
from .project_vars import SERVER_NAME, PYWIN32_VERSION, MIN_PYWIN32_VERSION
|
|
22
21
|
|
|
23
22
|
if platform == 'win32':
|
|
24
23
|
try:
|
|
25
24
|
import pythoncom
|
|
26
25
|
import win32com.client as win32
|
|
26
|
+
import win32api
|
|
27
|
+
import win32process
|
|
27
28
|
except ImportError:
|
|
28
29
|
raise PythoncomImportError
|
|
29
30
|
|
|
@@ -218,28 +219,27 @@ class Instrument():
|
|
|
218
219
|
# declare these variables so that they are available to return
|
|
219
220
|
common_name = ''
|
|
220
221
|
exe_name = ''
|
|
222
|
+
open_mv_dict = {}
|
|
221
223
|
|
|
222
|
-
#
|
|
223
|
-
#
|
|
224
|
-
cmd = 'WMIC PROCESS WHERE "COMMANDLINE like \'%multivu%\'" GET '
|
|
225
|
-
cmd += 'Caption,Commandline,Processid'
|
|
226
|
-
proc = subprocess.run(cmd, capture_output=True, text=True)
|
|
227
|
-
if proc.returncode != 0:
|
|
228
|
-
raise Exception(proc.stderr)
|
|
229
|
-
# make a dictionary whose key is the MultiVu flavor, and the
|
|
224
|
+
# Find processes with 'MultiVu' in the name and make
|
|
225
|
+
# a dictionary whose key is the MultiVu flavor, and the
|
|
230
226
|
# value is a tuple with the exe path and process id
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
227
|
+
pids = win32process.EnumProcesses()
|
|
228
|
+
for pid in pids:
|
|
229
|
+
try:
|
|
230
|
+
# Open processes to query its executable path
|
|
231
|
+
h_process = win32api.OpenProcess(0x0410, False, pid)
|
|
232
|
+
exe_path = win32process.GetModuleFileNameEx(h_process, 0)
|
|
233
|
+
win32api.CloseHandle(h_process)
|
|
234
|
+
|
|
235
|
+
# Check if the path contains the keyword
|
|
236
|
+
if 'multivu' in exe_path.lower():
|
|
237
|
+
exe_name = path.basename(exe_path)
|
|
238
|
+
common_name = self._exe_to_common_name(exe_name)
|
|
239
|
+
open_mv_dict[common_name] = (exe_path, exe_name)
|
|
240
|
+
except Exception:
|
|
241
|
+
# Ignore processes that we don't have access to
|
|
242
|
+
pass
|
|
243
243
|
|
|
244
244
|
# Declare errors if no MultiVu instance is found
|
|
245
245
|
if len(open_mv_dict) == 0:
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
'''
|
|
2
|
+
loggin_config.py is used to hold methods to help with the logging module
|
|
3
|
+
'''
|
|
4
|
+
|
|
2
5
|
import logging.config
|
|
3
|
-
from logging import Logger
|
|
4
6
|
import yaml
|
|
7
|
+
from logging import Logger
|
|
8
|
+
from os import path
|
|
5
9
|
|
|
6
10
|
from .project_vars import LOG_NAME
|
|
7
11
|
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: MultiPyVu
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: Control MultiVu using Python
|
|
5
5
|
Author-email: Damon D Jackson <djackson@qdusa.com>
|
|
6
6
|
Maintainer-email: "Quantum Design, Inc." <apps@qdusa.com>
|
|
@@ -435,6 +435,10 @@ client = mpv.Client(port=6000)
|
|
|
435
435
|
- A log file named QdMultiVu.log shows the traffic between the server and client which can also be useful during troubleshooting.
|
|
436
436
|
|
|
437
437
|
## Changelog<a class="anchor" id="changelog"></a>
|
|
438
|
+
**3.2.0**
|
|
439
|
+
- November 2024
|
|
440
|
+
- Improvements in determining the running version of MultiVu.
|
|
441
|
+
|
|
438
442
|
**3.1.2**
|
|
439
443
|
- October 2024
|
|
440
444
|
- Fixed a bug which truncated numbers
|
|
@@ -10,6 +10,7 @@ src/MultiPyVu/CommandSdo.py
|
|
|
10
10
|
src/MultiPyVu/CommandTemperature.py
|
|
11
11
|
src/MultiPyVu/CommandWaitFor.py
|
|
12
12
|
src/MultiPyVu/Command_factory.py
|
|
13
|
+
src/MultiPyVu/GetRunningProcesses.py
|
|
13
14
|
src/MultiPyVu/ICommand.py
|
|
14
15
|
src/MultiPyVu/IEventManager.py
|
|
15
16
|
src/MultiPyVu/IServer.py
|
|
@@ -42,6 +43,7 @@ src/MultiPyVu/MultiVuDataFile/__version.py
|
|
|
42
43
|
src/MultiPyVu/MultiVuDataFile/is_pathname_valid.py
|
|
43
44
|
src/MultiPyVu/font/Play-Bold.ttf
|
|
44
45
|
src/MultiPyVu/font/Play-Regular.ttf
|
|
46
|
+
src/MultiPyVu/font/__init__.py
|
|
45
47
|
src/MultiPyVu/gui/Controller.py
|
|
46
48
|
src/MultiPyVu/gui/IController.py
|
|
47
49
|
src/MultiPyVu/gui/IView.py
|
|
@@ -50,5 +52,7 @@ src/MultiPyVu/gui/ViewTk.py
|
|
|
50
52
|
src/MultiPyVu/gui/__init__.py
|
|
51
53
|
src/MultiPyVu/images/Q.png
|
|
52
54
|
src/MultiPyVu/images/QD_logo.jpg
|
|
55
|
+
src/MultiPyVu/images/__init__.py
|
|
56
|
+
src/MultiPyVu/scripts/__init__.py
|
|
53
57
|
src/MultiPyVu/scripts/helper_scripts.py
|
|
54
58
|
src/MultiPyVu/scripts/whats_my_ip_address.cmd
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -13,36 +13,36 @@ with MultiVu.
|
|
|
13
13
|
@author: D. Jackson
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
-
from sys import exc_info
|
|
17
|
-
from enum import IntEnum
|
|
18
16
|
import traceback
|
|
17
|
+
from enum import IntEnum
|
|
18
|
+
from sys import exc_info
|
|
19
19
|
from typing import Union, Tuple
|
|
20
20
|
|
|
21
|
-
from .
|
|
22
|
-
from .instrument import InstrumentList
|
|
21
|
+
from .BRT import Brt as _brt
|
|
23
22
|
from . import Command_factory as _Command_factory
|
|
24
|
-
from .
|
|
25
|
-
from .
|
|
26
|
-
from .CommandTemperature import units as _temperature_units
|
|
23
|
+
from .CommandChamber import modeEnum as _chamber_mode
|
|
24
|
+
from .CommandChamber import units as _chamber_units
|
|
27
25
|
from .CommandField import ApproachEnum as _field_approach_mode
|
|
28
26
|
from .CommandField import drivenEnum as _field_driven_mode
|
|
29
27
|
from .CommandField import units as _field_units
|
|
30
|
-
from .
|
|
31
|
-
from .
|
|
28
|
+
from .CommandTemperature import STATE_DICT as _temperature_state_dict
|
|
29
|
+
from .CommandTemperature import ApproachEnum as _temperature_approach_mode
|
|
30
|
+
from .CommandTemperature import units as _temperature_units
|
|
32
31
|
from .CommandWaitFor import MaskEnum as _wait_for_enum
|
|
33
|
-
from .sdo_object import SdoObject
|
|
34
|
-
from .sdo_object import val_type as _sdo_val_type
|
|
35
|
-
from .BRT import Brt as _brt
|
|
36
|
-
from .project_vars import (HOST_CLIENT,
|
|
37
|
-
PORT,
|
|
38
|
-
TIMEOUT_LENGTH
|
|
39
|
-
)
|
|
40
32
|
from .exceptions import (MultiPyVuError,
|
|
41
33
|
ServerCloseError,
|
|
42
34
|
CanError,
|
|
43
35
|
can_err_enum,
|
|
44
36
|
abort_err_enum,
|
|
45
37
|
)
|
|
38
|
+
from .instrument import InstrumentList
|
|
39
|
+
from .MultiVuClient_base import ClientBase as _ClientBase
|
|
40
|
+
from .project_vars import (HOST_CLIENT,
|
|
41
|
+
PORT,
|
|
42
|
+
TIMEOUT_LENGTH
|
|
43
|
+
)
|
|
44
|
+
from .sdo_object import SdoObject
|
|
45
|
+
from .sdo_object import val_type as _sdo_val_type
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
class Client(_ClientBase):
|
|
@@ -12,15 +12,20 @@ MultiVuClient class has specific commands to be used with this class.
|
|
|
12
12
|
@author: D. Jackson
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
|
+
import logging
|
|
15
16
|
import sys
|
|
17
|
+
import traceback
|
|
16
18
|
from socket import timeout as sock_timeout
|
|
17
19
|
from time import sleep
|
|
18
|
-
import logging
|
|
19
|
-
import traceback
|
|
20
20
|
from typing import Dict, Union
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
from .
|
|
23
|
+
from .__version import __version__ as mpv_version
|
|
24
|
+
from .exceptions import (MultiPyVuError,
|
|
25
|
+
ClientCloseError,
|
|
26
|
+
ServerCloseError,
|
|
27
|
+
SocketError
|
|
28
|
+
)
|
|
24
29
|
from .logging_config import setup_logging, remove_logs
|
|
25
30
|
from .project_vars import (TIMEOUT_LENGTH,
|
|
26
31
|
CLIENT_NAME,
|
|
@@ -28,12 +33,7 @@ from .project_vars import (TIMEOUT_LENGTH,
|
|
|
28
33
|
PORT,
|
|
29
34
|
CLOCK_TIME,
|
|
30
35
|
)
|
|
31
|
-
from .
|
|
32
|
-
ClientCloseError,
|
|
33
|
-
ServerCloseError,
|
|
34
|
-
SocketError
|
|
35
|
-
)
|
|
36
|
-
from .__version import __version__ as mpv_version
|
|
36
|
+
from .SocketMessageClient import ClientMessage as _ClientMessage
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
MAX_TRIES = 3
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -8,37 +8,37 @@ be used with MultiVuClient.py to control a Quantum Design cryostat.
|
|
|
8
8
|
@author: D. Jackson
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
+
import logging
|
|
12
|
+
import re
|
|
11
13
|
import sys
|
|
12
14
|
import selectors
|
|
13
|
-
import re
|
|
14
|
-
from time import sleep
|
|
15
|
-
import logging
|
|
16
15
|
import traceback
|
|
16
|
+
from time import sleep
|
|
17
17
|
from typing import List, Tuple
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
from .scripts.helper_scripts import force_quit
|
|
21
|
-
from .IServer import IServer as _IServer
|
|
22
|
-
from .IEventManager import IObserver as _IObserver
|
|
23
|
-
from .SocketMessageServer import ServerMessage as _ServerMessage
|
|
24
|
-
from .SocketMessageServer import ServerStatus as _ServerStatus
|
|
25
|
-
from .ParseInputs import inputs_from_command_line
|
|
26
|
-
from .instrument import Instrument as _Instrument
|
|
27
|
-
from .CommandTemperature import SimulateTemperatureChange as _SimulateTemperatureChange
|
|
28
|
-
from .CommandField import SimulateFieldChange as _SimulateFieldChange
|
|
29
20
|
from .CommandChamber import SimulateChamberChange as _SimulateChamberChange
|
|
21
|
+
from .CommandField import SimulateFieldChange as _SimulateFieldChange
|
|
22
|
+
from .CommandTemperature import SimulateTemperatureChange as _SimulateTemperatureChange
|
|
30
23
|
from .exceptions import (MultiPyVuError,
|
|
31
24
|
ClientCloseError,
|
|
32
25
|
ServerCloseError,
|
|
33
26
|
SocketError,
|
|
34
27
|
)
|
|
28
|
+
from .IEventManager import IObserver as _IObserver
|
|
29
|
+
from .IServer import IServer as _IServer
|
|
30
|
+
from .instrument import Instrument as _Instrument
|
|
35
31
|
from .logging_config import setup_logging, remove_logs
|
|
32
|
+
from .ParseInputs import inputs_from_command_line
|
|
36
33
|
from .project_vars import (SERVER_NAME,
|
|
37
34
|
HOST_SERVER,
|
|
38
35
|
PORT,
|
|
39
36
|
TIMEOUT_LENGTH,
|
|
40
37
|
CLOCK_TIME,
|
|
41
38
|
)
|
|
39
|
+
from .scripts.helper_scripts import force_quit
|
|
40
|
+
from .SocketMessageServer import ServerMessage as _ServerMessage
|
|
41
|
+
from .SocketMessageServer import ServerStatus as _ServerStatus
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
class Server(_IServer):
|
|
@@ -8,21 +8,21 @@ Created on Mon Jun 7 23:47:19 2021
|
|
|
8
8
|
@author: D. Jackson
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
-
import re
|
|
12
11
|
import logging
|
|
12
|
+
import re
|
|
13
13
|
import socket
|
|
14
14
|
from time import sleep
|
|
15
15
|
from typing import Union, Tuple, Dict
|
|
16
16
|
|
|
17
17
|
from .check_windows_esc import _check_windows_esc
|
|
18
|
-
from .SocketMessage import Message
|
|
19
|
-
from .instrument import Instrument
|
|
20
|
-
from .project_vars import CLIENT_NAME, CLOCK_TIME
|
|
21
18
|
from .exceptions import (MultiPyVuError,
|
|
22
19
|
ClientCloseError,
|
|
23
20
|
ServerCloseError,
|
|
24
21
|
SocketError
|
|
25
22
|
)
|
|
23
|
+
from .instrument import Instrument
|
|
24
|
+
from .project_vars import CLIENT_NAME, CLOCK_TIME
|
|
25
|
+
from .SocketMessage import Message
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class ClientMessage(Message):
|
|
@@ -8,23 +8,19 @@ Created on Mon Jun 7 23:47:19 2021
|
|
|
8
8
|
@author: D. Jackson
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
import logging
|
|
12
|
+
import re
|
|
13
|
+
import selectors
|
|
14
|
+
import socket
|
|
12
15
|
import threading
|
|
13
|
-
import traceback
|
|
14
16
|
import time
|
|
15
|
-
import
|
|
16
|
-
import selectors
|
|
17
|
-
import re
|
|
17
|
+
import traceback
|
|
18
18
|
from enum import IntEnum, auto, IntFlag
|
|
19
|
-
import
|
|
19
|
+
from sys import platform
|
|
20
20
|
from typing import Union, Dict, Tuple, List
|
|
21
21
|
|
|
22
22
|
from .check_windows_esc import _check_windows_esc
|
|
23
23
|
from .Command_factory import create_command_mv
|
|
24
|
-
from .SocketMessage import Message
|
|
25
|
-
from .instrument import Instrument
|
|
26
|
-
from .IEventManager import Publisher as _Publisher
|
|
27
|
-
from .IEventManager import IObserver as _IObserver
|
|
28
24
|
from .exceptions import (MultiPyVuError,
|
|
29
25
|
ClientCloseError,
|
|
30
26
|
ServerCloseError,
|
|
@@ -32,7 +28,11 @@ from .exceptions import (MultiPyVuError,
|
|
|
32
28
|
SocketError,
|
|
33
29
|
PythoncomImportError,
|
|
34
30
|
)
|
|
31
|
+
from .IEventManager import Publisher as _Publisher
|
|
32
|
+
from .IEventManager import IObserver as _IObserver
|
|
33
|
+
from .instrument import Instrument
|
|
35
34
|
from .project_vars import SERVER_NAME, CLOCK_TIME
|
|
35
|
+
from .SocketMessage import Message
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
if platform == 'win32':
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -6,19 +6,19 @@ pattern for MultiPyVu.py
|
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
import re
|
|
10
|
+
import subprocess
|
|
9
11
|
import os
|
|
10
12
|
from sys import platform
|
|
11
|
-
import subprocess
|
|
12
|
-
import re
|
|
13
|
-
from typing import List
|
|
14
13
|
from types import MethodType
|
|
14
|
+
from typing import List
|
|
15
15
|
|
|
16
|
-
from
|
|
16
|
+
from .IController import IController
|
|
17
|
+
from .ViewFactory import ViewType, ViewFactory
|
|
18
|
+
from ..IEventManager import IObserver
|
|
17
19
|
from ..instrument import InstrumentList
|
|
20
|
+
from ..MultiVuServer import Server
|
|
18
21
|
from ..ParseInputs import inputs_from_command_line
|
|
19
|
-
from ..IEventManager import IObserver
|
|
20
|
-
from .ViewFactory import ViewType, ViewFactory
|
|
21
|
-
from .IController import IController
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class ServerInfo(IObserver):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -5,13 +5,13 @@ View.py holds the code for a gui for MultiPyVu.Server
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
import sys
|
|
9
8
|
import io
|
|
10
|
-
from enum import IntEnum, auto
|
|
11
|
-
from threading import Lock
|
|
12
9
|
import logging
|
|
13
10
|
import logging.handlers
|
|
11
|
+
import sys
|
|
14
12
|
import tkinter as tk
|
|
13
|
+
from enum import IntEnum, auto
|
|
14
|
+
from threading import Lock
|
|
15
15
|
from tkinter import font
|
|
16
16
|
try:
|
|
17
17
|
from PIL import ImageTk, Image
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|