MultiPyVu 3.1.1__tar.gz → 3.1.2__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.1/src/MultiPyVu.egg-info → multipyvu-3.1.2}/PKG-INFO +5 -2
- {multipyvu-3.1.1 → multipyvu-3.1.2}/README.md +4 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/setup.py +0 -1
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/CommandMultiVu.py +1 -1
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/CommandSdo.py +56 -58
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/__version.py +1 -1
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/exceptions.py +1 -1
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/sdo_object.py +37 -1
- {multipyvu-3.1.1 → multipyvu-3.1.2/src/MultiPyVu.egg-info}/PKG-INFO +5 -2
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu.egg-info/requires.txt +0 -1
- {multipyvu-3.1.1 → multipyvu-3.1.2}/LICENSE +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/pyproject.toml +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/setup.cfg +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/BRT.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/CommandChamber.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/CommandField.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/CommandTemperature.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/CommandWaitFor.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/Command_factory.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/ICommand.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/IEventManager.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/IServer.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/MultiVuClient.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/MultiVuClient_base.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/MultiVuDataFile/MultiVuDataFile.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/MultiVuDataFile/__init__.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/MultiVuDataFile/__version.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/MultiVuDataFile/is_pathname_valid.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/MultiVuServer.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/ParseInputs.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/SocketMessage.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/SocketMessageClient.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/SocketMessageServer.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/__init__.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/__main__.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/check_windows_esc.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/font/Play-Bold.ttf +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/font/Play-Regular.ttf +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/generate_sdo_objects.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/gui/Controller.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/gui/IController.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/gui/IView.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/gui/ViewFactory.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/gui/ViewTk.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/gui/__init__.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/images/Q.png +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/images/QD_logo.jpg +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/instrument.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/logging_config.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/logging_config.yaml +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/project_vars.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/scripts/helper_scripts.py +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu/scripts/whats_my_ip_address.cmd +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu.egg-info/SOURCES.txt +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/src/MultiPyVu.egg-info/dependency_links.txt +0 -0
- {multipyvu-3.1.1 → multipyvu-3.1.2}/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.1.
|
|
3
|
+
Version: 3.1.2
|
|
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>
|
|
@@ -38,7 +38,6 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
38
38
|
Requires-Python: >=3.8
|
|
39
39
|
Description-Content-Type: text/markdown
|
|
40
40
|
License-File: LICENSE
|
|
41
|
-
Requires-Dist: typing
|
|
42
41
|
Requires-Dist: pandas
|
|
43
42
|
Requires-Dist: pywin32>=300; platform_system == "Windows"
|
|
44
43
|
Requires-Dist: pillow
|
|
@@ -436,6 +435,10 @@ client = mpv.Client(port=6000)
|
|
|
436
435
|
- A log file named QdMultiVu.log shows the traffic between the server and client which can also be useful during troubleshooting.
|
|
437
436
|
|
|
438
437
|
## Changelog<a class="anchor" id="changelog"></a>
|
|
438
|
+
**3.1.2**
|
|
439
|
+
- October 2024
|
|
440
|
+
- Fixed a bug which truncated numbers
|
|
441
|
+
|
|
439
442
|
**3.1.1**
|
|
440
443
|
- October 2024
|
|
441
444
|
- Updated the installer to include missing files.
|
|
@@ -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.1.2**
|
|
394
|
+
- October 2024
|
|
395
|
+
- Fixed a bug which truncated numbers
|
|
396
|
+
|
|
393
397
|
**3.1.1**
|
|
394
398
|
- October 2024
|
|
395
399
|
- Updated the installer to include missing files.
|
|
@@ -110,7 +110,7 @@ class CommandMultiVuBase():
|
|
|
110
110
|
msg += 'which could mean MultiVu is not running.'
|
|
111
111
|
raise MultiPyVuError(msg)
|
|
112
112
|
|
|
113
|
-
result_string = result if isinstance(result, str) else
|
|
113
|
+
result_string = result if isinstance(result, str) else str(result)
|
|
114
114
|
return f'{result_string},{mv_command.units},{code_in_words}'
|
|
115
115
|
|
|
116
116
|
def set_state(self, command: str, arg_string: str) -> str:
|
|
@@ -157,8 +157,8 @@ class CommandSdoBase(ICommand):
|
|
|
157
157
|
|
|
158
158
|
@abstractmethod
|
|
159
159
|
def get_state_server(self,
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
value_variant,
|
|
161
|
+
state_variant,
|
|
162
162
|
params: str = ''):
|
|
163
163
|
raise NotImplementedError
|
|
164
164
|
|
|
@@ -187,7 +187,10 @@ class CommandSdoImp(CommandSdoBase):
|
|
|
187
187
|
super().__init__()
|
|
188
188
|
self._mvu = multivu_win32com
|
|
189
189
|
|
|
190
|
-
def _binary_to_value(self,
|
|
190
|
+
def _binary_to_value(self,
|
|
191
|
+
sdo: SdoObject,
|
|
192
|
+
length: win32.VARIANT,
|
|
193
|
+
val: win32.VARIANT) -> Union[str, int, float]:
|
|
191
194
|
"""
|
|
192
195
|
Convert a binary value from reading an SDO into its correct
|
|
193
196
|
type.
|
|
@@ -195,9 +198,9 @@ class CommandSdoImp(CommandSdoBase):
|
|
|
195
198
|
Parameters:
|
|
196
199
|
-----------
|
|
197
200
|
sdo: SdoObject
|
|
198
|
-
|
|
201
|
+
length: win32com.client.VARIANT
|
|
199
202
|
This is the parameter used in ReadSDO which
|
|
200
|
-
holds the length of the value
|
|
203
|
+
holds the length of the value that was read.
|
|
201
204
|
val: win32com.client.VARIANT
|
|
202
205
|
This is the parameter used in ReadSDO which
|
|
203
206
|
holds the value being read.
|
|
@@ -208,31 +211,34 @@ class CommandSdoImp(CommandSdoBase):
|
|
|
208
211
|
python format of string, int, or float.
|
|
209
212
|
"""
|
|
210
213
|
if sdo.val_type is val_type.string_t:
|
|
211
|
-
var_memory = val.value[0:
|
|
214
|
+
var_memory = val.value[0:length.value - 1]
|
|
212
215
|
return_val = bytes(var_memory).decode('utf-8')
|
|
213
|
-
elif sdo.val_type
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
b = list(bytes(val.value)[0:
|
|
216
|
+
elif sdo.val_type in (val_type.short_t,
|
|
217
|
+
val_type.int_t,
|
|
218
|
+
val_type.long_t):
|
|
219
|
+
b = list(bytes(val.value)[0:length.value])
|
|
217
220
|
return_val = int.from_bytes(b,
|
|
218
221
|
byteorder='little',
|
|
219
222
|
signed=True)
|
|
220
|
-
elif sdo.val_type
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
b = list(bytes(val.value)[0:
|
|
223
|
+
elif sdo.val_type in (val_type.ushort_t,
|
|
224
|
+
val_type.uint_t,
|
|
225
|
+
val_type.ulong_t):
|
|
226
|
+
b = list(bytes(val.value)[0:length.value])
|
|
224
227
|
return_val = int.from_bytes(b,
|
|
225
228
|
byteorder='little',
|
|
226
229
|
signed=False)
|
|
227
|
-
|
|
228
|
-
|
|
230
|
+
elif sdo.val_type in (val_type.single_t,
|
|
231
|
+
val_type.double_t):
|
|
232
|
+
b = bytes(val.value)[0:length.value]
|
|
229
233
|
# format = '<f' means little endian ('>f' is big endian)
|
|
230
234
|
[return_val] = struct.unpack('<f', b)
|
|
235
|
+
else:
|
|
236
|
+
raise ValueError('unsupported variant type')
|
|
231
237
|
return return_val
|
|
232
238
|
|
|
233
239
|
def _value_to_binary(self,
|
|
234
240
|
sdo: SdoObject,
|
|
235
|
-
val: Union[str, int, float]) ->
|
|
241
|
+
val: Union[str, int, float]) -> bytes:
|
|
236
242
|
"""
|
|
237
243
|
Convert a value being sent to WriteSDO into binary.
|
|
238
244
|
|
|
@@ -245,41 +251,24 @@ class CommandSdoImp(CommandSdoBase):
|
|
|
245
251
|
|
|
246
252
|
Returns:
|
|
247
253
|
--------
|
|
248
|
-
|
|
249
|
-
and the second item the value being set in binary.
|
|
254
|
+
The value being set in binary.
|
|
250
255
|
"""
|
|
251
|
-
|
|
256
|
+
sdo_length = sdo.object_length()
|
|
252
257
|
sdo_val = b''
|
|
253
|
-
if sdo.val_type
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
sdo_val = int.to_bytes(
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
elif sdo.val_type
|
|
260
|
-
sdo.val_type is val_type.uint_t:
|
|
261
|
-
len = 2
|
|
262
|
-
sdo_val = int.to_bytes(int(val), len,
|
|
263
|
-
byteorder='little',
|
|
264
|
-
signed=False)
|
|
265
|
-
elif sdo.val_type is val_type.long_t or \
|
|
266
|
-
sdo.val_type is val_type.ulong_t:
|
|
267
|
-
len = 4
|
|
268
|
-
sdo_val = int.to_bytes(int(val), len,
|
|
269
|
-
byteorder='little',
|
|
270
|
-
signed=False)
|
|
271
|
-
elif sdo.val_type is val_type.single_t:
|
|
272
|
-
len = 2
|
|
273
|
-
sdo_val = struct.pack('<f', float(val))
|
|
274
|
-
elif sdo.val_type is val_type.double_t:
|
|
275
|
-
len = 4
|
|
258
|
+
if sdo.val_type in (val_type.short_t, val_type.ushort_t):
|
|
259
|
+
sdo_val = int(val).to_bytes(sdo_length, 'little', signed=False)
|
|
260
|
+
elif sdo.val_type in (val_type.int_t, val_type.uint_t):
|
|
261
|
+
sdo_val = int(val).to_bytes(sdo_length, 'little', signed=False)
|
|
262
|
+
elif sdo.val_type in (val_type.long_t, val_type.ulong_t):
|
|
263
|
+
sdo_val = int(val).to_bytes(sdo_length, 'little', signed=False)
|
|
264
|
+
elif sdo.val_type in (val_type.single_t, val_type.double_t):
|
|
276
265
|
sdo_val = struct.pack('<f', float(val))
|
|
277
266
|
elif sdo.val_type is val_type.string_t:
|
|
278
267
|
sdo_val = val.encode()
|
|
279
268
|
else:
|
|
280
269
|
msg = 'Unsupported val_type: ' + str(sdo)
|
|
281
270
|
raise ValueError(msg)
|
|
282
|
-
return
|
|
271
|
+
return sdo_val
|
|
283
272
|
|
|
284
273
|
def read_sdo(self, sdo: SdoObject,) -> Tuple:
|
|
285
274
|
"""
|
|
@@ -296,7 +285,7 @@ class CommandSdoImp(CommandSdoBase):
|
|
|
296
285
|
a tuple whose first term is the CAN error and the second
|
|
297
286
|
term is the abort error.
|
|
298
287
|
"""
|
|
299
|
-
|
|
288
|
+
length_variant = win32.VARIANT(
|
|
300
289
|
pythoncom.VT_BYREF | pythoncom.VT_I4,
|
|
301
290
|
0)
|
|
302
291
|
value_variant = win32.VARIANT(
|
|
@@ -311,7 +300,7 @@ class CommandSdoImp(CommandSdoBase):
|
|
|
311
300
|
can_error = self._mvu.ReadSDO(sdo.node,
|
|
312
301
|
sdo.index,
|
|
313
302
|
sdo.sub,
|
|
314
|
-
|
|
303
|
+
length_variant,
|
|
315
304
|
value_variant,
|
|
316
305
|
error_variant)
|
|
317
306
|
self.return_state = self._errors_to_str(can_error,
|
|
@@ -327,7 +316,9 @@ class CommandSdoImp(CommandSdoBase):
|
|
|
327
316
|
msg += f'while reading ({str(sdo)})'
|
|
328
317
|
raise MultiPyVuError(msg)
|
|
329
318
|
else:
|
|
330
|
-
return_val = self._binary_to_value(sdo,
|
|
319
|
+
return_val = self._binary_to_value(sdo,
|
|
320
|
+
length_variant,
|
|
321
|
+
value_variant)
|
|
331
322
|
|
|
332
323
|
return return_val, self.return_state
|
|
333
324
|
|
|
@@ -348,13 +339,11 @@ class CommandSdoImp(CommandSdoBase):
|
|
|
348
339
|
--------
|
|
349
340
|
string with the error from MultiVu
|
|
350
341
|
"""
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
pythoncom.VT_BYREF | pythoncom.VT_I4,
|
|
354
|
-
len)
|
|
342
|
+
binary_val = self._value_to_binary(sdo, val)
|
|
343
|
+
data_length = sdo.object_length()
|
|
355
344
|
value_variant = win32.VARIANT(
|
|
356
345
|
pythoncom.VT_BYREF | pythoncom.VT_VARIANT,
|
|
357
|
-
|
|
346
|
+
binary_val)
|
|
358
347
|
error_variant = win32.VARIANT(
|
|
359
348
|
pythoncom.VT_BYREF | pythoncom.VT_I4,
|
|
360
349
|
0)
|
|
@@ -363,7 +352,7 @@ class CommandSdoImp(CommandSdoBase):
|
|
|
363
352
|
can_error = self._mvu.WriteSDO(sdo.node,
|
|
364
353
|
sdo.index,
|
|
365
354
|
sdo.sub,
|
|
366
|
-
|
|
355
|
+
data_length,
|
|
367
356
|
value_variant,
|
|
368
357
|
error_variant)
|
|
369
358
|
self.return_state = self._errors_to_str(can_error,
|
|
@@ -379,14 +368,20 @@ class CommandSdoImp(CommandSdoBase):
|
|
|
379
368
|
self.logger_client.debug(msg)
|
|
380
369
|
return self.return_state
|
|
381
370
|
|
|
382
|
-
def get_state_server(self,
|
|
371
|
+
def get_state_server(self,
|
|
372
|
+
value_variant,
|
|
373
|
+
state_variant,
|
|
374
|
+
params: str) -> Tuple:
|
|
383
375
|
"""
|
|
384
376
|
Returns a tuple of the SDO query result and the can_error number.
|
|
385
377
|
|
|
378
|
+
Note that the first two input parameters are unused, but included
|
|
379
|
+
because the other CommandXXX classes use them.
|
|
380
|
+
|
|
386
381
|
Parameters:
|
|
387
382
|
-----------
|
|
388
|
-
value_variant:
|
|
389
|
-
state_variant:
|
|
383
|
+
value_variant: (not used)
|
|
384
|
+
state_variant: (not used)
|
|
390
385
|
params: str
|
|
391
386
|
The string representation of an sdo_object
|
|
392
387
|
|
|
@@ -434,10 +429,13 @@ class CommandSdoSim(CommandSdoBase):
|
|
|
434
429
|
"""
|
|
435
430
|
Returns a tuple of the SDO query result and the can_error number.
|
|
436
431
|
|
|
432
|
+
Note that the first two input parameters are unused, but included
|
|
433
|
+
because the other CommandXXX classes use them.
|
|
434
|
+
|
|
437
435
|
Parameters:
|
|
438
436
|
-----------
|
|
439
|
-
value_variant:
|
|
440
|
-
state_variant:
|
|
437
|
+
value_variant: (not used)
|
|
438
|
+
state_variant: (not used)
|
|
441
439
|
params: str
|
|
442
440
|
The string representation of an SdoObject
|
|
443
441
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
|
-
__version__ = "3.1.
|
|
2
|
+
__version__ = "3.1.2"
|
|
@@ -37,6 +37,17 @@ class SdoObject():
|
|
|
37
37
|
The string can be converted into an sdo_object by calling
|
|
38
38
|
.str_to_obj(string), which is a static method and returns
|
|
39
39
|
an sdo_object.
|
|
40
|
+
|
|
41
|
+
Parameters:
|
|
42
|
+
-----------
|
|
43
|
+
nodID: int
|
|
44
|
+
The node number
|
|
45
|
+
sdo_index: int
|
|
46
|
+
This should be represented in hex. For example, 0x1008.
|
|
47
|
+
sub_index: int
|
|
48
|
+
This should be represented in hex. For example, 0x0.
|
|
49
|
+
val_t: val_type
|
|
50
|
+
Specify the type.
|
|
40
51
|
"""
|
|
41
52
|
def __init__(self,
|
|
42
53
|
nodeID: int,
|
|
@@ -44,7 +55,7 @@ class SdoObject():
|
|
|
44
55
|
sub_index: int,
|
|
45
56
|
val_t: val_type):
|
|
46
57
|
if (nodeID > 63) or (nodeID < 0):
|
|
47
|
-
msg = f'Invalid
|
|
58
|
+
msg = f'Invalid nodeID: {nodeID}'
|
|
48
59
|
raise ValueError(msg)
|
|
49
60
|
if (sdo_index > 0xFFFF) or (sdo_index < 0):
|
|
50
61
|
msg = f'Invalid SDO index: {sdo_index}'
|
|
@@ -99,3 +110,28 @@ class SdoObject():
|
|
|
99
110
|
s = int(sub_index, 16)
|
|
100
111
|
v_t = val_type[t]
|
|
101
112
|
return SdoObject(n, i, s, v_t)
|
|
113
|
+
|
|
114
|
+
def object_length(self) -> int:
|
|
115
|
+
"""
|
|
116
|
+
Get the byte size
|
|
117
|
+
"""
|
|
118
|
+
if self.val_type is val_type.short_t:
|
|
119
|
+
return 1
|
|
120
|
+
elif self.val_type is val_type.int_t:
|
|
121
|
+
return 2
|
|
122
|
+
elif self.val_type is val_type.single_t:
|
|
123
|
+
return 2
|
|
124
|
+
elif self.val_type is val_type.string_t:
|
|
125
|
+
return 1
|
|
126
|
+
elif self.val_type is val_type.ushort_t:
|
|
127
|
+
return 1
|
|
128
|
+
elif self.val_type is val_type.uint_t:
|
|
129
|
+
return 2
|
|
130
|
+
elif self.val_type is val_type.double_t:
|
|
131
|
+
return 4
|
|
132
|
+
elif self.val_type is val_type.long_t:
|
|
133
|
+
return 4
|
|
134
|
+
elif self.val_type is val_type.ulong_t:
|
|
135
|
+
return 4
|
|
136
|
+
else:
|
|
137
|
+
raise ValueError('Unimplemented SDO type')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: MultiPyVu
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.2
|
|
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>
|
|
@@ -38,7 +38,6 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
38
38
|
Requires-Python: >=3.8
|
|
39
39
|
Description-Content-Type: text/markdown
|
|
40
40
|
License-File: LICENSE
|
|
41
|
-
Requires-Dist: typing
|
|
42
41
|
Requires-Dist: pandas
|
|
43
42
|
Requires-Dist: pywin32>=300; platform_system == "Windows"
|
|
44
43
|
Requires-Dist: pillow
|
|
@@ -436,6 +435,10 @@ client = mpv.Client(port=6000)
|
|
|
436
435
|
- A log file named QdMultiVu.log shows the traffic between the server and client which can also be useful during troubleshooting.
|
|
437
436
|
|
|
438
437
|
## Changelog<a class="anchor" id="changelog"></a>
|
|
438
|
+
**3.1.2**
|
|
439
|
+
- October 2024
|
|
440
|
+
- Fixed a bug which truncated numbers
|
|
441
|
+
|
|
439
442
|
**3.1.1**
|
|
440
443
|
- October 2024
|
|
441
444
|
- Updated the installer to include missing files.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|