quarchpy 2.2.7.dev1__py2.py3-none-any.whl → 2.2.8.dev1__py2.py3-none-any.whl
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.
- quarchpy/.idea/.name +1 -0
- quarchpy/.idea/inspectionProfiles/Project_Default.xml +39 -1
- quarchpy/.idea/misc.xml +2 -2
- quarchpy/.idea/quarchpy.iml +1 -1
- quarchpy/.idea/vcs.xml +6 -0
- quarchpy/.idea/workspace.xml +119 -21
- quarchpy/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/__pycache__/_version.cpython-311.pyc +0 -0
- quarchpy/__pycache__/_version.cpython-312.pyc +0 -0
- quarchpy/__pycache__/connection.cpython-311.pyc +0 -0
- quarchpy/__pycache__/connection.cpython-312.pyc +0 -0
- quarchpy/__pycache__/run.cpython-311.pyc +0 -0
- quarchpy/__pycache__/run.cpython-312.pyc +0 -0
- quarchpy/_version.py +1 -1
- quarchpy/config_files/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/config_files/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/config_files/__pycache__/quarch_config_parser.cpython-311.pyc +0 -0
- quarchpy/config_files/__pycache__/quarch_config_parser.cpython-312.pyc +0 -0
- quarchpy/connection_specific/QPS/win-amd64/InstallType.dat +1 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/myFile.csv +50 -0
- quarchpy/connection_specific/__pycache__/StreamChannels.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/StreamChannels.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QPS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QPS.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_ReST.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_ReST.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Serial.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Serial.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_TCP.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_TCP.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_USB.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_USB.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/mDNS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/mDNS.cpython-312.pyc +0 -0
- quarchpy/connection_specific/connection_QIS.py +1 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/fix_permissions.cpython-311.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/fix_permissions.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/win32.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/win32.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-312.pyc +0 -0
- quarchpy/connection_specific/usb_libs/__pycache__/libusb1.cpython-312.pyc +0 -0
- quarchpy/connection_specific/usb_libs/__pycache__/usb1.cpython-312.pyc +0 -0
- quarchpy/debug/SystemTest.py +29 -14
- quarchpy/debug/__pycache__/SystemTest.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/SystemTest.cpython-312.pyc +0 -0
- quarchpy/debug/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/debug/__pycache__/module_debug.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/module_debug.cpython-312.pyc +0 -0
- quarchpy/debug/__pycache__/simple_terminal.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/simple_terminal.cpython-312.pyc +0 -0
- quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-312.pyc +0 -0
- quarchpy/debug/__pycache__/versionCompare.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/versionCompare.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/device.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/device.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/quarchArray.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchArray.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/quarchPPM.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchPPM.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/quarchQPS.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchQPS.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-312.pyc +0 -0
- quarchpy/device/quarchQPS.py +1 -2
- quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-312.pyc +0 -0
- quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-312.pyc +0 -0
- quarchpy/disk_test/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-312.pyc +0 -0
- quarchpy/docs/CHANGES.rst +4 -0
- quarchpy/docs/_build/doctrees/CHANGES.doctree +0 -0
- quarchpy/docs/_build/doctrees/environment.pickle +0 -0
- quarchpy/docs/_build/doctrees/source/changelog.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.fio.doctree +0 -0
- quarchpy/docs/_build/html/CHANGES.html +145 -139
- quarchpy/docs/_build/html/_sources/CHANGES.rst.txt +7 -0
- quarchpy/docs/_build/html/genindex.html +8 -2
- quarchpy/docs/_build/html/index.html +71 -70
- quarchpy/docs/_build/html/objects.inv +0 -0
- quarchpy/docs/_build/html/searchindex.js +1 -1
- quarchpy/docs/_build/html/source/changelog.html +216 -209
- quarchpy/docs/_build/html/source/quarchpy.fio.html +64 -0
- quarchpy/docs/_build/html/source/quarchpy.html +3 -0
- quarchpy/fio/__pycache__/FIO_interface.cpython-311.pyc +0 -0
- quarchpy/fio/__pycache__/FIO_interface.cpython-312.pyc +0 -0
- quarchpy/fio/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/fio/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/iometer/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/iometer/__pycache__/gen_iometer_template.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/{gen_iometer_template.cpython-313.pyc → gen_iometer_template.cpython-312.pyc} +0 -0
- quarchpy/iometer/__pycache__/iometerFuncs.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/iometerFuncs.cpython-312.pyc +0 -0
- quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-312.pyc +0 -0
- quarchpy/qis/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/qis/__pycache__/qisFuncs.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/qisFuncs.cpython-312.pyc +0 -0
- quarchpy/qis/qisFuncs.py +36 -39
- quarchpy/qps/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/qps/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-311.pyc +0 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-312.pyc +0 -0
- quarchpy/qps/qpsFuncs.py +7 -10
- quarchpy/user_interface/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/user_interface/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/user_interface/__pycache__/user_interface.cpython-311.pyc +0 -0
- quarchpy/user_interface/__pycache__/user_interface.cpython-312.pyc +0 -0
- quarchpy/utilities/__pycache__/TestCenter.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/TestCenter.cpython-312.pyc +0 -0
- quarchpy/utilities/__pycache__/TimeValue.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/TimeValue.cpython-312.pyc +0 -0
- quarchpy/utilities/__pycache__/Version.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/Version.cpython-312.pyc +0 -0
- quarchpy/utilities/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/__init__.cpython-312.pyc +0 -0
- {quarchpy-2.2.7.dev1.dist-info → quarchpy-2.2.8.dev1.dist-info}/METADATA +7 -12
- {quarchpy-2.2.7.dev1.dist-info → quarchpy-2.2.8.dev1.dist-info}/RECORD +148 -126
- {quarchpy-2.2.7.dev1.dist-info → quarchpy-2.2.8.dev1.dist-info}/WHEEL +1 -1
- quarchpy/.idea/.gitignore +0 -3
- quarchpy/_version.py.bak +0 -1
- quarchpy/config_files/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/config_files/__pycache__/quarch_config_parser.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/StreamChannels.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QPS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_ReST.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Serial.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_TCP.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Telnet.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_USB.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/mDNS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/connection_QPS.py.bak +0 -242
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/fix_permissions.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/win32.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/SystemTest.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/module_debug.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/simple_terminal.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/versionCompare.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/device.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchArray.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchPPM.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchQPS.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-313.pyc +0 -0
- quarchpy/device/quarchQPS.py.bak +0 -398
- quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-313.pyc +0 -0
- quarchpy/docs/CHANGES.rst.bak +0 -430
- quarchpy/docs/_build/html/.buildinfo.bak +0 -4
- quarchpy/docs/_build/html/_static/github-banner.svg +0 -5
- quarchpy/fio/FIO_interface.py.bak +0 -317
- quarchpy/fio/__pycache__/FIO_interface.cpython-313.pyc +0 -0
- quarchpy/fio/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/fio/__pycache__/fioDiskFinder.cpython-311.pyc +0 -0
- quarchpy/fio/__pycache__/fioDiskFinder.cpython-313.pyc +0 -0
- quarchpy/iometer/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/iometer/__pycache__/iometerFuncs.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/qisFuncs.cpython-313.pyc +0 -0
- quarchpy/qps/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-313.pyc +0 -0
- quarchpy/user_interface/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/user_interface/__pycache__/user_interface.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/TestCenter.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/TimeValue.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/Version.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/__init__.cpython-313.pyc +0 -0
- {quarchpy-2.2.7.dev1.dist-info → quarchpy-2.2.8.dev1.dist-info}/top_level.txt +0 -0
@@ -40,11 +40,75 @@
|
|
40
40
|
</section>
|
41
41
|
<section id="module-quarchpy.fio.FIO_interface">
|
42
42
|
<span id="quarchpy-fio-fio-interface-module"></span><h2>quarchpy.fio.FIO_interface module<a class="headerlink" href="#module-quarchpy.fio.FIO_interface" title="Link to this heading">¶</a></h2>
|
43
|
+
<dl class="py function">
|
44
|
+
<dt class="sig sig-object py" id="quarchpy.fio.FIO_interface.convert_qis_stream_to_unix_time">
|
45
|
+
<span class="sig-prename descclassname"><span class="pre">quarchpy.fio.FIO_interface.</span></span><span class="sig-name descname"><span class="pre">convert_qis_stream_to_unix_time</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">qis_stream_file</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">unix_stream_start_time</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#quarchpy.fio.FIO_interface.convert_qis_stream_to_unix_time" title="Link to this definition">¶</a></dt>
|
46
|
+
<dd><p>Converts a QIS stream CSV file to Unix time by adding the unixStreamStartTime to the first column
|
47
|
+
in each row, taking into account the time units provided in both the CSV header and the start time.</p>
|
48
|
+
<dl class="field-list simple">
|
49
|
+
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
50
|
+
<dd class="field-odd"><ul class="simple">
|
51
|
+
<li><p><strong>qis_stream_file</strong> (<em>str</em>) – The path to the QIS stream CSV file.</p></li>
|
52
|
+
<li><p><strong>unix_stream_start_time</strong> (<em>str</em>) – The starting Unix time with units (e.g., “1737374310S”, “1737374310000mS”).</p></li>
|
53
|
+
</ul>
|
54
|
+
</dd>
|
55
|
+
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
56
|
+
<dd class="field-even"><p>Path to the converted CSV file.</p>
|
57
|
+
</dd>
|
58
|
+
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
59
|
+
<dd class="field-odd"><p>str</p>
|
60
|
+
</dd>
|
61
|
+
</dl>
|
62
|
+
</dd></dl>
|
63
|
+
|
64
|
+
<dl class="py function">
|
65
|
+
<dt class="sig sig-object py" id="quarchpy.fio.FIO_interface.fio_json_to_csv">
|
66
|
+
<span class="sig-prename descclassname"><span class="pre">quarchpy.fio.FIO_interface.</span></span><span class="sig-name descname"><span class="pre">fio_json_to_csv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">output_file</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#quarchpy.fio.FIO_interface.fio_json_to_csv" title="Link to this definition">¶</a></dt>
|
67
|
+
<dd></dd></dl>
|
68
|
+
|
43
69
|
<dl class="py function">
|
44
70
|
<dt class="sig sig-object py" id="quarchpy.fio.FIO_interface.follow">
|
45
71
|
<span class="sig-prename descclassname"><span class="pre">quarchpy.fio.FIO_interface.</span></span><span class="sig-name descname"><span class="pre">follow</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">thefile</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">p</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#quarchpy.fio.FIO_interface.follow" title="Link to this definition">¶</a></dt>
|
46
72
|
<dd></dd></dl>
|
47
73
|
|
74
|
+
<dl class="py function">
|
75
|
+
<dt class="sig sig-object py" id="quarchpy.fio.FIO_interface.merge_fio_qis_stream">
|
76
|
+
<span class="sig-prename descclassname"><span class="pre">quarchpy.fio.FIO_interface.</span></span><span class="sig-name descname"><span class="pre">merge_fio_qis_stream</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">qis_stream_file</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fio_output_file</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">unix_stream_start_time</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rounding_option</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'round'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#quarchpy.fio.FIO_interface.merge_fio_qis_stream" title="Link to this definition">¶</a></dt>
|
77
|
+
<dd><p>Merge FIO and QIS data into a single CSV file.</p>
|
78
|
+
<dl class="simple">
|
79
|
+
<dt>For each FIO entry:</dt><dd><ul class="simple">
|
80
|
+
<li><p>If timestamps match, append FIO data to the corresponding QIS row.</p></li>
|
81
|
+
<li><dl class="simple">
|
82
|
+
<dt>If no match, handle based on <cite>rounding_option</cite>:</dt><dd><ul>
|
83
|
+
<li><p>“round”: Find the nearest QIS time and add FIO data to that row.</p></li>
|
84
|
+
<li><p>“insert”: Add a new row with blank QIS data and only FIO data.</p></li>
|
85
|
+
</ul>
|
86
|
+
</dd>
|
87
|
+
</dl>
|
88
|
+
</li>
|
89
|
+
</ul>
|
90
|
+
</dd>
|
91
|
+
</dl>
|
92
|
+
<dl class="field-list simple">
|
93
|
+
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
94
|
+
<dd class="field-odd"><ul class="simple">
|
95
|
+
<li><p><strong>qis_stream_file</strong> (<em>str</em>) – Path to the QIS CSV file (converted to Unix time).</p></li>
|
96
|
+
<li><p><strong>fio_output_file</strong> (<em>str</em>) – Path to the FIO output file (in JSON format).</p></li>
|
97
|
+
<li><p><strong>unix_stream_start_time</strong> (<em>str</em>) – Starting Unix timestamp for the QIS stream.</p></li>
|
98
|
+
<li><p><strong>output_file</strong> (<em>str</em><em>, </em><em>optional</em>) – Output file path for the merged CSV. If not provided, the file is saved
|
99
|
+
with “_merged” appended to the QIS file name.</p></li>
|
100
|
+
<li><p><strong>rounding_option</strong> (<em>str</em>) – Determines how to handle mismatched times (“round” or “insert”).</p></li>
|
101
|
+
</ul>
|
102
|
+
</dd>
|
103
|
+
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
104
|
+
<dd class="field-even"><p>Path to the merged CSV file.</p>
|
105
|
+
</dd>
|
106
|
+
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
107
|
+
<dd class="field-odd"><p>str</p>
|
108
|
+
</dd>
|
109
|
+
</dl>
|
110
|
+
</dd></dl>
|
111
|
+
|
48
112
|
<dl class="py function">
|
49
113
|
<dt class="sig sig-object py" id="quarchpy.fio.FIO_interface.return_data">
|
50
114
|
<span class="sig-prename descclassname"><span class="pre">quarchpy.fio.FIO_interface.</span></span><span class="sig-name descname"><span class="pre">return_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">output_file</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">p</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fioCallbacks</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">myStream</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">user_data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">arguments</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#quarchpy.fio.FIO_interface.return_data" title="Link to this definition">¶</a></dt>
|
@@ -505,7 +505,10 @@
|
|
505
505
|
<li class="toctree-l1"><a class="reference internal" href="quarchpy.fio.html">quarchpy.fio package</a><ul>
|
506
506
|
<li class="toctree-l2"><a class="reference internal" href="quarchpy.fio.html#submodules">Submodules</a></li>
|
507
507
|
<li class="toctree-l2"><a class="reference internal" href="quarchpy.fio.html#module-quarchpy.fio.FIO_interface">quarchpy.fio.FIO_interface module</a><ul>
|
508
|
+
<li class="toctree-l3"><a class="reference internal" href="quarchpy.fio.html#quarchpy.fio.FIO_interface.convert_qis_stream_to_unix_time"><code class="docutils literal notranslate"><span class="pre">convert_qis_stream_to_unix_time()</span></code></a></li>
|
509
|
+
<li class="toctree-l3"><a class="reference internal" href="quarchpy.fio.html#quarchpy.fio.FIO_interface.fio_json_to_csv"><code class="docutils literal notranslate"><span class="pre">fio_json_to_csv()</span></code></a></li>
|
508
510
|
<li class="toctree-l3"><a class="reference internal" href="quarchpy.fio.html#quarchpy.fio.FIO_interface.follow"><code class="docutils literal notranslate"><span class="pre">follow()</span></code></a></li>
|
511
|
+
<li class="toctree-l3"><a class="reference internal" href="quarchpy.fio.html#quarchpy.fio.FIO_interface.merge_fio_qis_stream"><code class="docutils literal notranslate"><span class="pre">merge_fio_qis_stream()</span></code></a></li>
|
509
512
|
<li class="toctree-l3"><a class="reference internal" href="quarchpy.fio.html#quarchpy.fio.FIO_interface.return_data"><code class="docutils literal notranslate"><span class="pre">return_data()</span></code></a></li>
|
510
513
|
<li class="toctree-l3"><a class="reference internal" href="quarchpy.fio.html#quarchpy.fio.FIO_interface.runFIO"><code class="docutils literal notranslate"><span class="pre">runFIO()</span></code></a></li>
|
511
514
|
<li class="toctree-l3"><a class="reference internal" href="quarchpy.fio.html#quarchpy.fio.FIO_interface.start_fio"><code class="docutils literal notranslate"><span class="pre">start_fio()</span></code></a></li>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
quarchpy/qis/qisFuncs.py
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
Contains general functions for starting and stopping QIS processes
|
3
3
|
"""
|
4
4
|
|
5
|
-
import os, sys
|
5
|
+
import os, sys
|
6
6
|
import time, platform
|
7
7
|
from threading import Thread, Lock, Event, active_count
|
8
8
|
from queue import Queue, Empty
|
@@ -12,6 +12,7 @@ from quarchpy.user_interface.user_interface import printText, logDebug
|
|
12
12
|
import subprocess
|
13
13
|
import logging
|
14
14
|
|
15
|
+
|
15
16
|
def isQisRunning():
|
16
17
|
"""
|
17
18
|
Checks if a local instance of QIS is running and responding
|
@@ -34,7 +35,7 @@ def isQisRunning():
|
|
34
35
|
pass
|
35
36
|
if (qisRunning is False):
|
36
37
|
logging.debug("QIS is not running")
|
37
|
-
return False
|
38
|
+
return False
|
38
39
|
else:
|
39
40
|
logging.debug("QIS is running")
|
40
41
|
return True
|
@@ -45,7 +46,7 @@ def isQisRunningAndResponding(timeout=2):
|
|
45
46
|
checks if qis is running and responding to a $version
|
46
47
|
"""
|
47
48
|
qisRunning = isQisRunning()
|
48
|
-
if qisRunning ==False:
|
49
|
+
if qisRunning == False:
|
49
50
|
logging.debug("QIS is not running")
|
50
51
|
return False
|
51
52
|
|
@@ -63,7 +64,6 @@ def isQisRunningAndResponding(timeout=2):
|
|
63
64
|
time.sleep(timeout / maxCounter) # We attempt to get QIS
|
64
65
|
counter += 1
|
65
66
|
|
66
|
-
|
67
67
|
if (qisRunning is False):
|
68
68
|
logging.debug("QIS is not running")
|
69
69
|
return False
|
@@ -91,10 +91,11 @@ def startLocalQis(terminal=False, headless=False, args=None, timeout=20):
|
|
91
91
|
java_path = os.path.dirname(os.path.abspath(__file__))
|
92
92
|
java_path, junk = os.path.split(java_path)
|
93
93
|
java_path = os.path.join(java_path, "connection_specific", "jdk_j21_jres")
|
94
|
+
java_path = "\"" + java_path
|
94
95
|
|
95
96
|
# change directory to /QPS/QIS
|
96
97
|
qis_path = os.path.dirname(os.path.abspath(__file__))
|
97
|
-
qis_path,junk = os.path.split
|
98
|
+
qis_path, junk = os.path.split(qis_path)
|
98
99
|
|
99
100
|
# OS
|
100
101
|
current_os = platform.system()
|
@@ -108,13 +109,13 @@ def startLocalQis(terminal=False, headless=False, args=None, timeout=20):
|
|
108
109
|
return
|
109
110
|
|
110
111
|
# ensure the jres folder has the required permissions
|
111
|
-
permissions,message= find_java_permissions()
|
112
|
+
permissions, message = find_java_permissions()
|
112
113
|
if permissions is False:
|
113
114
|
logging.warning(message)
|
114
115
|
logging.warning("Not having correct permissions will prevent Quarch Java Programs to launch")
|
115
116
|
logging.warning("Run \"python -m quarchpy.run permission_fix\" to fix this.")
|
116
117
|
user_input = input("Would you like to fix permissions now? (Y/N)")
|
117
|
-
if user_input.lower()=="y":
|
118
|
+
if user_input.lower() == "y":
|
118
119
|
fix_permissions()
|
119
120
|
permissions, message = find_java_permissions()
|
120
121
|
time.sleep(0.5)
|
@@ -123,8 +124,6 @@ def startLocalQis(terminal=False, headless=False, args=None, timeout=20):
|
|
123
124
|
else:
|
124
125
|
logging.warning("Attempt to fix permissions was successful. Now continuing.")
|
125
126
|
|
126
|
-
|
127
|
-
|
128
127
|
# if current_os != "Windows":
|
129
128
|
# subprocess.call(['chmod', '-R', '+rwx', java_path])
|
130
129
|
|
@@ -150,16 +149,14 @@ def startLocalQis(terminal=False, headless=False, args=None, timeout=20):
|
|
150
149
|
|
151
150
|
# Building the command
|
152
151
|
|
153
|
-
|
154
152
|
# prefer IPV4 to IPV6
|
155
153
|
ipv4v6_vm_args = "-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false"
|
156
154
|
|
157
155
|
# Process command prefix. Needed for headless mode, to support OSs with no system tray.
|
158
|
-
cmd_prefix =ipv4v6_vm_args
|
156
|
+
cmd_prefix = ipv4v6_vm_args
|
159
157
|
if headless is True or (args is not None and "-headless" in args):
|
160
158
|
cmd_prefix += " -Djava.awt.headless=true"
|
161
159
|
|
162
|
-
|
163
160
|
# Process command suffix (additional standard options for QIS).
|
164
161
|
if terminal is True:
|
165
162
|
cmd_suffix = " -terminal"
|
@@ -177,9 +174,8 @@ def startLocalQis(terminal=False, headless=False, args=None, timeout=20):
|
|
177
174
|
# record current working directory
|
178
175
|
current_dir = os.getcwd()
|
179
176
|
|
177
|
+
command = "java\" " + cmd_prefix + " -jar qis.jar" + cmd_suffix
|
180
178
|
|
181
|
-
command = "java " + cmd_prefix + " -jar qis.jar" + cmd_suffix
|
182
|
-
|
183
179
|
# different start for different OS
|
184
180
|
if current_os == "Windows":
|
185
181
|
command = java_path + "\\win_amd64_jdk_21_jre\\bin\\" + command
|
@@ -195,9 +191,10 @@ def startLocalQis(terminal=False, headless=False, args=None, timeout=20):
|
|
195
191
|
command = java_path + "\\win_amd64_jdk_21_jre\\bin\\" + command
|
196
192
|
|
197
193
|
# Use the command and check QIS has launched
|
198
|
-
|
199
|
-
|
200
|
-
|
194
|
+
# If logging to a terminal window is on then os.system should be used to view logging.
|
195
|
+
if "-logging=ON" in str(args):
|
196
|
+
process = subprocess.Popen(command, shell=True)
|
197
|
+
startTime = time.time() # Checks for Popen launch only
|
201
198
|
while not isQisRunning():
|
202
199
|
if time.time() - startTime > timeout:
|
203
200
|
raise TimeoutError("QIS failed to launch within timelimit of " + str(timeout) + " sec.")
|
@@ -208,16 +205,15 @@ def startLocalQis(terminal=False, headless=False, args=None, timeout=20):
|
|
208
205
|
else:
|
209
206
|
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, shell=True)
|
210
207
|
|
211
|
-
startTime = time.time()
|
208
|
+
startTime = time.time() #Checks for Popen launch only
|
212
209
|
while not isQisRunning():
|
213
210
|
_get_std_msg_and_err_from_QIS_process(process)
|
214
211
|
if time.time() - startTime > timeout:
|
215
212
|
raise TimeoutError("QIS failed to launch within timelimit of " + str(timeout) + " sec.")
|
216
213
|
pass
|
217
214
|
|
218
|
-
|
219
215
|
if isQisRunningAndResponding(timeout=timeout):
|
220
|
-
logDebug("
|
216
|
+
logDebug("QIS running and responding")
|
221
217
|
else:
|
222
218
|
logDebug("QIS running but not responding")
|
223
219
|
|
@@ -225,7 +221,7 @@ def startLocalQis(terminal=False, headless=False, args=None, timeout=20):
|
|
225
221
|
os.chdir(current_dir)
|
226
222
|
|
227
223
|
|
228
|
-
def reader(stream, q, source, lock,stop_flag):
|
224
|
+
def reader(stream, q, source, lock, stop_flag):
|
229
225
|
'''
|
230
226
|
Used to read output and place it in a queue for multithreaded reading
|
231
227
|
:param stream:
|
@@ -261,7 +257,7 @@ def _get_std_msg_and_err_from_QIS_process(process):
|
|
261
257
|
t2.start()
|
262
258
|
counter = 0
|
263
259
|
# check for stderr or stdmsg from the queue
|
264
|
-
while counter <= 3:
|
260
|
+
while counter <= 3: # If 3 empty reads from the queue then move on to see if QPS is running.
|
265
261
|
try:
|
266
262
|
source, line = q.get(timeout=1) # Wait for 1 second for new lines
|
267
263
|
counter = 0
|
@@ -271,7 +267,7 @@ def _get_std_msg_and_err_from_QIS_process(process):
|
|
271
267
|
printText(f"{source}: {line}")
|
272
268
|
except Empty:
|
273
269
|
counter += 1
|
274
|
-
stop_flag.set()
|
270
|
+
stop_flag.set() #Close the threads and return to the main loop where QPS is check to see if its started yet
|
275
271
|
|
276
272
|
|
277
273
|
def check_remote_qis(host='127.0.0.1', port=9722, timeout=0):
|
@@ -311,6 +307,7 @@ def check_remote_qis(host='127.0.0.1', port=9722, timeout=0):
|
|
311
307
|
logging.debug("QIS is running")
|
312
308
|
return True
|
313
309
|
|
310
|
+
|
314
311
|
def checkAndCloseQis(host='127.0.0.1', port=9722):
|
315
312
|
if isQisRunning() is True:
|
316
313
|
closeQis()
|
@@ -329,53 +326,53 @@ def closeQis(host='127.0.0.1', port=9722):
|
|
329
326
|
QIS connection port if set to a value other than the default
|
330
327
|
|
331
328
|
"""
|
332
|
-
|
329
|
+
|
333
330
|
myQis = QisInterface(host, port)
|
334
|
-
retVal=myQis.sendAndReceiveCmd(cmd
|
331
|
+
retVal = myQis.sendAndReceiveCmd(cmd="$shutdown")
|
335
332
|
myQis.disconnect()
|
336
333
|
time.sleep(1)
|
337
334
|
return retVal
|
338
335
|
|
336
|
+
|
339
337
|
#DEPRICATED
|
340
|
-
def GetQisModuleSelection
|
338
|
+
def GetQisModuleSelection(QisConnection):
|
341
339
|
"""
|
342
340
|
Prints a list of modules for user selection
|
343
341
|
|
344
342
|
.. deprecated:: 2.0.12
|
345
343
|
Use the module selection functions of the QisInterface class instead
|
346
344
|
"""
|
347
|
-
|
345
|
+
|
348
346
|
# Request a list of all USB and LAN accessible power modules
|
349
347
|
devList = QisConnection.getDeviceList()
|
350
348
|
# Removes rest devices
|
351
|
-
devList = [
|
349
|
+
devList = [x for x in devList if "rest" not in x]
|
352
350
|
|
353
351
|
# Print the devices, so the user can choose one to connect to
|
354
|
-
printText
|
355
|
-
printText
|
356
|
-
printText
|
357
|
-
printText
|
358
|
-
|
352
|
+
printText("\n ########## STEP 1 - Select a Quarch Module. ########## \n")
|
353
|
+
printText(' --------------------------------------------')
|
354
|
+
printText(' | {:^5} | {:^30}|'.format("INDEX", "MODULE"))
|
355
|
+
printText(' --------------------------------------------')
|
356
|
+
|
359
357
|
try:
|
360
358
|
for idx in xrange(len(devList)):
|
361
|
-
printText
|
359
|
+
printText(' | {:^5} | {:^30}|'.format(str(idx + 1), devList[idx]))
|
362
360
|
printText(' --------------------------------------------')
|
363
361
|
except:
|
364
362
|
for idx in range(len(devList)):
|
365
|
-
printText
|
363
|
+
printText(' | {:^5} | {:^30}|'.format(str(idx + 1), devList[idx]))
|
366
364
|
printText(' --------------------------------------------')
|
367
365
|
|
368
366
|
# Get the user to select the device to control
|
369
367
|
try:
|
370
|
-
moduleId = int(raw_input
|
368
|
+
moduleId = int(raw_input("\n>>> Enter the index of the Quarch module: "))
|
371
369
|
except NameError:
|
372
|
-
moduleId = int(input
|
370
|
+
moduleId = int(input("\n>>> Enter the index of the Quarch module: "))
|
373
371
|
|
374
372
|
# Verify the selection
|
375
373
|
if (moduleId > 0 and moduleId <= len(devList)):
|
376
|
-
myDeviceID = devList[moduleId-1]
|
374
|
+
myDeviceID = devList[moduleId - 1]
|
377
375
|
else:
|
378
376
|
myDeviceID = None
|
379
377
|
|
380
378
|
return myDeviceID
|
381
|
-
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
quarchpy/qps/qpsFuncs.py
CHANGED
@@ -1,11 +1,7 @@
|
|
1
1
|
from threading import Thread, Lock, Event, active_count
|
2
2
|
from queue import Queue, Empty
|
3
|
-
import time
|
4
|
-
import os, sys
|
5
|
-
import datetime
|
6
3
|
import platform
|
7
4
|
from quarchpy.qis import isQisRunning, startLocalQis
|
8
|
-
from quarchpy.connection_specific.connection_QIS import QisInterface
|
9
5
|
from quarchpy.connection_specific.connection_QPS import QpsInterface
|
10
6
|
from quarchpy.connection_specific.jdk_j21_jres.fix_permissions import main as fix_permissions, find_java_permissions
|
11
7
|
from quarchpy.user_interface import *
|
@@ -87,6 +83,7 @@ def startLocalQps(keepQisRunning=False, args=[], timeout=30, startQPSMinimised=T
|
|
87
83
|
java_path = os.path.dirname(os.path.abspath(__file__))
|
88
84
|
java_path, junk = os.path.split(java_path)
|
89
85
|
java_path = os.path.join(java_path, "connection_specific", "jdk_j21_jres")
|
86
|
+
java_path = "\"" + java_path
|
90
87
|
# Start to build the path towards qps.jar
|
91
88
|
qps_path = os.path.dirname(os.path.abspath(__file__))
|
92
89
|
qps_path, junk = os.path.split(qps_path)
|
@@ -142,17 +139,17 @@ def startLocalQps(keepQisRunning=False, args=[], timeout=30, startQPSMinimised=T
|
|
142
139
|
|
143
140
|
# OS dependency
|
144
141
|
if current_os in "Windows":
|
145
|
-
command = java_path + "\\win_amd64_jdk_21_jre\\bin\\java -jar qps.jar " + str(args)
|
142
|
+
command = java_path + "\\win_amd64_jdk_21_jre\\bin\\java\" -jar qps.jar " + str(args)
|
146
143
|
elif current_os in "Linux" and current_arch == "x86_64":
|
147
|
-
command = java_path + "/lin_amd64_jdk_21_jre/bin/java -jar qps.jar " + str(args)
|
144
|
+
command = java_path + "/lin_amd64_jdk_21_jre/bin/java\" -jar qps.jar " + str(args)
|
148
145
|
elif current_os in "Linux" and current_arch == "aarch64":
|
149
|
-
command = java_path + "/lin_arm64_jdk_21_jre/bin/java -jar qps.jar " + str(args)
|
146
|
+
command = java_path + "/lin_arm64_jdk_21_jre/bin/java\" -jar qps.jar " + str(args)
|
150
147
|
elif current_os in "Darwin" and current_arch == "x86_64":
|
151
|
-
command = java_path + "/mac_amd64_jdk_21_jre/bin/java -jar qps.jar " + str(args)
|
148
|
+
command = java_path + "/mac_amd64_jdk_21_jre/bin/java\" -jar qps.jar " + str(args)
|
152
149
|
elif current_os in "Darwin" and current_arch == "arm64":
|
153
|
-
command = java_path + "/mac_arm64_jdk_21_jre/bin/java -jar qps.jar " + str(args)
|
150
|
+
command = java_path + "/mac_arm64_jdk_21_jre/bin/java\" -jar qps.jar " + str(args)
|
154
151
|
else: # default to windows
|
155
|
-
command = java_path + "\\win_amd64_jdk_21_jre\\bin\\java -jar qps.jar " + str(args)
|
152
|
+
command = java_path + "\\win_amd64_jdk_21_jre\\bin\\java\" -jar qps.jar " + str(args)
|
156
153
|
|
157
154
|
if "-logging=ON" in str(args): #If logging to a terminal window is on then os.system should be used to keep a window open to view logging.
|
158
155
|
if current_os in "Windows":
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.1
|
2
2
|
Name: quarchpy
|
3
|
-
Version: 2.2.
|
3
|
+
Version: 2.2.8.dev1
|
4
4
|
Summary: This packpage offers Python support for Quarch Technology modules.
|
5
5
|
Author: Quarch Technology ltd
|
6
6
|
Author-email: support@quarch.com
|
@@ -17,18 +17,9 @@ Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
17
17
|
Classifier: Topic :: System
|
18
18
|
Classifier: Topic :: System :: Power (UPS)
|
19
19
|
Description-Content-Type: text/x-rst
|
20
|
-
Requires-Dist: zeroconf>=0.23.0
|
20
|
+
Requires-Dist: zeroconf (>=0.23.0)
|
21
21
|
Requires-Dist: numpy
|
22
22
|
Requires-Dist: pandas
|
23
|
-
Dynamic: author
|
24
|
-
Dynamic: author-email
|
25
|
-
Dynamic: classifier
|
26
|
-
Dynamic: description
|
27
|
-
Dynamic: description-content-type
|
28
|
-
Dynamic: keywords
|
29
|
-
Dynamic: license
|
30
|
-
Dynamic: requires-dist
|
31
|
-
Dynamic: summary
|
32
23
|
|
33
24
|
====================
|
34
25
|
Changelog (Quarchpy)
|
@@ -46,6 +37,10 @@ Change Log
|
|
46
37
|
----------
|
47
38
|
|
48
39
|
|
40
|
+
2.2.7
|
41
|
+
-----
|
42
|
+
- Bug fix for QIS 1.47 missing lib for linux only
|
43
|
+
|
49
44
|
2.2.6
|
50
45
|
-----
|
51
46
|
- New QPS 1.45 and QIS 1.47
|