Compare commits
1 Commits
main
...
customer-d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
39840f469f |
Binary file not shown.
Binary file not shown.
BIN
ad_solver.exe
BIN
ad_solver.exe
Binary file not shown.
BIN
ad_solver.pdb
BIN
ad_solver.pdb
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,359 +0,0 @@
|
|||||||
('d:\\JE-Skin-main\\devkit\\dist\\je-skin-devkit-server.exe',
|
|
||||||
True,
|
|
||||||
False,
|
|
||||||
False,
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\PyInstaller\\bootloader\\images\\icon-console.ico',
|
|
||||||
None,
|
|
||||||
False,
|
|
||||||
False,
|
|
||||||
b'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<assembly xmlns='
|
|
||||||
b'"urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">\n <trustInfo x'
|
|
||||||
b'mlns="urn:schemas-microsoft-com:asm.v3">\n <security>\n <requested'
|
|
||||||
b'Privileges>\n <requestedExecutionLevel level="asInvoker" uiAccess='
|
|
||||||
b'"false"/>\n </requestedPrivileges>\n </security>\n </trustInfo>\n '
|
|
||||||
b'<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">\n <'
|
|
||||||
b'application>\n <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f'
|
|
||||||
b'0}"/>\n <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>\n '
|
|
||||||
b' <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>\n <s'
|
|
||||||
b'upportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>\n <supporte'
|
|
||||||
b'dOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>\n </application>\n <'
|
|
||||||
b'/compatibility>\n <application xmlns="urn:schemas-microsoft-com:asm.v3">'
|
|
||||||
b'\n <windowsSettings>\n <longPathAware xmlns="http://schemas.micros'
|
|
||||||
b'oft.com/SMI/2016/WindowsSettings">true</longPathAware>\n </windowsSett'
|
|
||||||
b'ings>\n </application>\n <dependency>\n <dependentAssembly>\n <ass'
|
|
||||||
b'emblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version='
|
|
||||||
b'"6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" langua'
|
|
||||||
b'ge="*"/>\n </dependentAssembly>\n </dependency>\n</assembly>',
|
|
||||||
True,
|
|
||||||
False,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\je-skin-devkit-server.pkg',
|
|
||||||
[('pyi-contents-directory _internal', '', 'OPTION'),
|
|
||||||
('PYZ-00.pyz',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\PYZ-00.pyz',
|
|
||||||
'PYZ'),
|
|
||||||
('struct',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\localpycs\\struct.pyc',
|
|
||||||
'PYMODULE'),
|
|
||||||
('pyimod01_archive',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod01_archive.pyc',
|
|
||||||
'PYMODULE'),
|
|
||||||
('pyimod02_importers',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod02_importers.pyc',
|
|
||||||
'PYMODULE'),
|
|
||||||
('pyimod03_ctypes',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod03_ctypes.pyc',
|
|
||||||
'PYMODULE'),
|
|
||||||
('pyimod04_pywin32',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod04_pywin32.pyc',
|
|
||||||
'PYMODULE'),
|
|
||||||
('pyiboot01_bootstrap',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
|
|
||||||
'PYSOURCE'),
|
|
||||||
('pyi_rth_inspect',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
|
|
||||||
'PYSOURCE'),
|
|
||||||
('pyi_rth_pkgutil',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
|
|
||||||
'PYSOURCE'),
|
|
||||||
('pyi_rth_multiprocessing',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
|
|
||||||
'PYSOURCE'),
|
|
||||||
('sensor_server', 'D:\\JE-Skin-main\\devkit\\sensor_server.py', 'PYSOURCE'),
|
|
||||||
('python314.dll', 'C:\\Python314\\python314.dll', 'BINARY'),
|
|
||||||
('numpy.libs\\msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy.libs\\msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('numpy.libs\\libscipy_openblas64_-63c857e738469261263c764a36be9436.dll',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy.libs\\libscipy_openblas64_-63c857e738469261263c764a36be9436.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('select.pyd', 'C:\\Python314\\DLLs\\select.pyd', 'EXTENSION'),
|
|
||||||
('_multiprocessing.pyd',
|
|
||||||
'C:\\Python314\\DLLs\\_multiprocessing.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('_zstd.pyd', 'C:\\Python314\\DLLs\\_zstd.pyd', 'EXTENSION'),
|
|
||||||
('pyexpat.pyd', 'C:\\Python314\\DLLs\\pyexpat.pyd', 'EXTENSION'),
|
|
||||||
('_lzma.pyd', 'C:\\Python314\\DLLs\\_lzma.pyd', 'EXTENSION'),
|
|
||||||
('_bz2.pyd', 'C:\\Python314\\DLLs\\_bz2.pyd', 'EXTENSION'),
|
|
||||||
('_ssl.pyd', 'C:\\Python314\\DLLs\\_ssl.pyd', 'EXTENSION'),
|
|
||||||
('_hashlib.pyd', 'C:\\Python314\\DLLs\\_hashlib.pyd', 'EXTENSION'),
|
|
||||||
('unicodedata.pyd', 'C:\\Python314\\DLLs\\unicodedata.pyd', 'EXTENSION'),
|
|
||||||
('_decimal.pyd', 'C:\\Python314\\DLLs\\_decimal.pyd', 'EXTENSION'),
|
|
||||||
('_socket.pyd', 'C:\\Python314\\DLLs\\_socket.pyd', 'EXTENSION'),
|
|
||||||
('_ctypes.pyd', 'C:\\Python314\\DLLs\\_ctypes.pyd', 'EXTENSION'),
|
|
||||||
('_queue.pyd', 'C:\\Python314\\DLLs\\_queue.pyd', 'EXTENSION'),
|
|
||||||
('numpy\\_core\\_multiarray_tests.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_multiarray_tests.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\_core\\_multiarray_umath.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_multiarray_umath.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('_wmi.pyd', 'C:\\Python314\\DLLs\\_wmi.pyd', 'EXTENSION'),
|
|
||||||
('_overlapped.pyd', 'C:\\Python314\\DLLs\\_overlapped.pyd', 'EXTENSION'),
|
|
||||||
('_asyncio.pyd', 'C:\\Python314\\DLLs\\_asyncio.pyd', 'EXTENSION'),
|
|
||||||
('numpy\\linalg\\_umath_linalg.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\linalg\\_umath_linalg.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\mtrand.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\mtrand.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\bit_generator.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\bit_generator.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_sfc64.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_sfc64.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_philox.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_philox.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_pcg64.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_pcg64.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_mt19937.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_mt19937.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_generator.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_generator.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_common.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_common.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_bounded_integers.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_bounded_integers.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\fft\\_pocketfft_umath.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\fft\\_pocketfft_umath.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('_elementtree.pyd', 'C:\\Python314\\DLLs\\_elementtree.pyd', 'EXTENSION'),
|
|
||||||
('grpc\\_cython\\cygrpc.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\cygrpc.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('google\\_upb\\_message.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\google\\_upb\\_message.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('grpc_tools\\_protoc_compiler.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\grpc_tools\\_protoc_compiler.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('api-ms-win-crt-filesystem-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-filesystem-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-locale-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-locale-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-time-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-time-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-environment-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-environment-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-runtime-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-runtime-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-convert-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-convert-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-heap-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-heap-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-string-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-string-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-process-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-process-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-math-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-math-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-stdio-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-stdio-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-conio-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-conio-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('VCRUNTIME140.dll', 'C:\\Python314\\VCRUNTIME140.dll', 'BINARY'),
|
|
||||||
('VCRUNTIME140_1.dll', 'C:\\Python314\\VCRUNTIME140_1.dll', 'BINARY'),
|
|
||||||
('api-ms-win-crt-utility-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-utility-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-private-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-private-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('libcrypto-3.dll', 'C:\\Python314\\DLLs\\libcrypto-3.dll', 'BINARY'),
|
|
||||||
('libssl-3.dll', 'C:\\Python314\\DLLs\\libssl-3.dll', 'BINARY'),
|
|
||||||
('libffi-8.dll', 'C:\\Python314\\DLLs\\libffi-8.dll', 'BINARY'),
|
|
||||||
('python3.dll', 'C:\\Python314\\python3.dll', 'BINARY'),
|
|
||||||
('ucrtbase.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\ucrtbase.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-profile-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-profile-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processthreads-l1-1-1.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processthreads-l1-1-1.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-errorhandling-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-errorhandling-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-memory-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-memory-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l2-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l2-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processthreads-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processthreads-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-debug-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-debug-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l1-2-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-string-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-string-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-namedpipe-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-namedpipe-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-timezone-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-timezone-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-rtlsupport-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-rtlsupport-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-localization-l1-2-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-localization-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-datetime-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-datetime-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-util-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-util-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-console-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-console-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-synch-l1-2-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-synch-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-interlocked-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-interlocked-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-handle-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-handle-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-libraryloader-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-libraryloader-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-fibers-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-fibers-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-heap-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-heap-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-sysinfo-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-sysinfo-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processenvironment-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processenvironment-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-synch-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-synch-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('grpc\\_cython\\_credentials\\roots.pem',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_credentials\\roots.pem',
|
|
||||||
'DATA'),
|
|
||||||
('grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.h',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.h',
|
|
||||||
'DATA'),
|
|
||||||
('grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.cc',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.cc',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\common\\pythoncapi-compat\\COPYING',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\common\\pythoncapi-compat\\COPYING',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\INSTALLER',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\INSTALLER',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\REQUESTED',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\REQUESTED',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\fft\\pocketfft\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\fft\\pocketfft\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\splitmix64\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\splitmix64\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\linalg\\lapack_lite\\LICENSE.txt',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\linalg\\lapack_lite\\LICENSE.txt',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\include\\numpy\\libdivide\\LICENSE.txt',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\include\\numpy\\libdivide\\LICENSE.txt',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\RECORD',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\RECORD',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\WHEEL',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\WHEEL',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\sfc64\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\sfc64\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\philox\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\philox\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\pcg64\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\pcg64\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\ma\\LICENSE',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\ma\\LICENSE',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\umath\\svml\\LICENSE',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\umath\\svml\\LICENSE',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\entry_points.txt',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\entry_points.txt',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\mt19937\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\mt19937\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\LICENSE.txt',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\LICENSE.txt',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\multiarray\\dragon4_LICENSE.txt',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\multiarray\\dragon4_LICENSE.txt',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\METADATA',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\METADATA',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\DELVEWHEEL',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\DELVEWHEEL',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\highway\\LICENSE',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\highway\\LICENSE',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\distributions\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\distributions\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\npysort\\x86-simd-sort\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\npysort\\x86-simd-sort\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('base_library.zip',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\base_library.zip',
|
|
||||||
'DATA')],
|
|
||||||
[],
|
|
||||||
False,
|
|
||||||
False,
|
|
||||||
1779678963,
|
|
||||||
[('run.exe',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\PyInstaller\\bootloader\\Windows-64bit-intel\\run.exe',
|
|
||||||
'EXECUTABLE')],
|
|
||||||
'C:\\Python314\\python314.dll')
|
|
||||||
@@ -1,337 +0,0 @@
|
|||||||
('d:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\je-skin-devkit-server.pkg',
|
|
||||||
{'BINARY': True,
|
|
||||||
'DATA': True,
|
|
||||||
'EXECUTABLE': True,
|
|
||||||
'EXTENSION': True,
|
|
||||||
'PYMODULE': True,
|
|
||||||
'PYSOURCE': True,
|
|
||||||
'PYZ': False,
|
|
||||||
'SPLASH': True,
|
|
||||||
'SYMLINK': False},
|
|
||||||
[('pyi-contents-directory _internal', '', 'OPTION'),
|
|
||||||
('PYZ-00.pyz',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\PYZ-00.pyz',
|
|
||||||
'PYZ'),
|
|
||||||
('struct',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\localpycs\\struct.pyc',
|
|
||||||
'PYMODULE'),
|
|
||||||
('pyimod01_archive',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod01_archive.pyc',
|
|
||||||
'PYMODULE'),
|
|
||||||
('pyimod02_importers',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod02_importers.pyc',
|
|
||||||
'PYMODULE'),
|
|
||||||
('pyimod03_ctypes',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod03_ctypes.pyc',
|
|
||||||
'PYMODULE'),
|
|
||||||
('pyimod04_pywin32',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod04_pywin32.pyc',
|
|
||||||
'PYMODULE'),
|
|
||||||
('pyiboot01_bootstrap',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
|
|
||||||
'PYSOURCE'),
|
|
||||||
('pyi_rth_inspect',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
|
|
||||||
'PYSOURCE'),
|
|
||||||
('pyi_rth_pkgutil',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
|
|
||||||
'PYSOURCE'),
|
|
||||||
('pyi_rth_multiprocessing',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
|
|
||||||
'PYSOURCE'),
|
|
||||||
('sensor_server', 'D:\\JE-Skin-main\\devkit\\sensor_server.py', 'PYSOURCE'),
|
|
||||||
('python314.dll', 'C:\\Python314\\python314.dll', 'BINARY'),
|
|
||||||
('numpy.libs\\msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy.libs\\msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('numpy.libs\\libscipy_openblas64_-63c857e738469261263c764a36be9436.dll',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy.libs\\libscipy_openblas64_-63c857e738469261263c764a36be9436.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('select.pyd', 'C:\\Python314\\DLLs\\select.pyd', 'EXTENSION'),
|
|
||||||
('_multiprocessing.pyd',
|
|
||||||
'C:\\Python314\\DLLs\\_multiprocessing.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('_zstd.pyd', 'C:\\Python314\\DLLs\\_zstd.pyd', 'EXTENSION'),
|
|
||||||
('pyexpat.pyd', 'C:\\Python314\\DLLs\\pyexpat.pyd', 'EXTENSION'),
|
|
||||||
('_lzma.pyd', 'C:\\Python314\\DLLs\\_lzma.pyd', 'EXTENSION'),
|
|
||||||
('_bz2.pyd', 'C:\\Python314\\DLLs\\_bz2.pyd', 'EXTENSION'),
|
|
||||||
('_ssl.pyd', 'C:\\Python314\\DLLs\\_ssl.pyd', 'EXTENSION'),
|
|
||||||
('_hashlib.pyd', 'C:\\Python314\\DLLs\\_hashlib.pyd', 'EXTENSION'),
|
|
||||||
('unicodedata.pyd', 'C:\\Python314\\DLLs\\unicodedata.pyd', 'EXTENSION'),
|
|
||||||
('_decimal.pyd', 'C:\\Python314\\DLLs\\_decimal.pyd', 'EXTENSION'),
|
|
||||||
('_socket.pyd', 'C:\\Python314\\DLLs\\_socket.pyd', 'EXTENSION'),
|
|
||||||
('_ctypes.pyd', 'C:\\Python314\\DLLs\\_ctypes.pyd', 'EXTENSION'),
|
|
||||||
('_queue.pyd', 'C:\\Python314\\DLLs\\_queue.pyd', 'EXTENSION'),
|
|
||||||
('numpy\\_core\\_multiarray_tests.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_multiarray_tests.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\_core\\_multiarray_umath.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_multiarray_umath.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('_wmi.pyd', 'C:\\Python314\\DLLs\\_wmi.pyd', 'EXTENSION'),
|
|
||||||
('_overlapped.pyd', 'C:\\Python314\\DLLs\\_overlapped.pyd', 'EXTENSION'),
|
|
||||||
('_asyncio.pyd', 'C:\\Python314\\DLLs\\_asyncio.pyd', 'EXTENSION'),
|
|
||||||
('numpy\\linalg\\_umath_linalg.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\linalg\\_umath_linalg.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\mtrand.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\mtrand.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\bit_generator.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\bit_generator.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_sfc64.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_sfc64.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_philox.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_philox.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_pcg64.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_pcg64.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_mt19937.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_mt19937.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_generator.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_generator.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_common.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_common.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\random\\_bounded_integers.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_bounded_integers.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('numpy\\fft\\_pocketfft_umath.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy\\fft\\_pocketfft_umath.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('_elementtree.pyd', 'C:\\Python314\\DLLs\\_elementtree.pyd', 'EXTENSION'),
|
|
||||||
('grpc\\_cython\\cygrpc.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\cygrpc.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('google\\_upb\\_message.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\google\\_upb\\_message.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('grpc_tools\\_protoc_compiler.cp314-win_amd64.pyd',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\grpc_tools\\_protoc_compiler.cp314-win_amd64.pyd',
|
|
||||||
'EXTENSION'),
|
|
||||||
('api-ms-win-crt-filesystem-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-filesystem-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-locale-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-locale-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-time-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-time-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-environment-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-environment-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-runtime-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-runtime-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-convert-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-convert-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-heap-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-heap-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-string-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-string-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-process-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-process-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-math-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-math-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-stdio-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-stdio-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-conio-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-conio-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('VCRUNTIME140.dll', 'C:\\Python314\\VCRUNTIME140.dll', 'BINARY'),
|
|
||||||
('VCRUNTIME140_1.dll', 'C:\\Python314\\VCRUNTIME140_1.dll', 'BINARY'),
|
|
||||||
('api-ms-win-crt-utility-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-utility-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-private-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-private-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('libcrypto-3.dll', 'C:\\Python314\\DLLs\\libcrypto-3.dll', 'BINARY'),
|
|
||||||
('libssl-3.dll', 'C:\\Python314\\DLLs\\libssl-3.dll', 'BINARY'),
|
|
||||||
('libffi-8.dll', 'C:\\Python314\\DLLs\\libffi-8.dll', 'BINARY'),
|
|
||||||
('python3.dll', 'C:\\Python314\\python3.dll', 'BINARY'),
|
|
||||||
('ucrtbase.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\ucrtbase.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-profile-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-profile-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processthreads-l1-1-1.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processthreads-l1-1-1.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-errorhandling-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-errorhandling-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-memory-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-memory-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l2-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l2-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processthreads-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processthreads-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-debug-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-debug-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l1-2-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-string-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-string-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-namedpipe-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-namedpipe-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-timezone-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-timezone-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-rtlsupport-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-rtlsupport-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-localization-l1-2-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-localization-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-datetime-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-datetime-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-util-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-util-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-console-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-console-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-synch-l1-2-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-synch-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-interlocked-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-interlocked-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-handle-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-handle-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-libraryloader-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-libraryloader-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-fibers-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-fibers-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-heap-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-heap-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-sysinfo-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-sysinfo-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processenvironment-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processenvironment-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-synch-l1-1-0.dll',
|
|
||||||
'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-synch-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('grpc\\_cython\\_credentials\\roots.pem',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_credentials\\roots.pem',
|
|
||||||
'DATA'),
|
|
||||||
('grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.h',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.h',
|
|
||||||
'DATA'),
|
|
||||||
('grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.cc',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.cc',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\common\\pythoncapi-compat\\COPYING',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\common\\pythoncapi-compat\\COPYING',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\INSTALLER',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\INSTALLER',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\REQUESTED',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\REQUESTED',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\fft\\pocketfft\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\fft\\pocketfft\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\splitmix64\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\splitmix64\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\linalg\\lapack_lite\\LICENSE.txt',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\linalg\\lapack_lite\\LICENSE.txt',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\include\\numpy\\libdivide\\LICENSE.txt',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\include\\numpy\\libdivide\\LICENSE.txt',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\RECORD',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\RECORD',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\WHEEL',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\WHEEL',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\sfc64\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\sfc64\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\philox\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\philox\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\pcg64\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\pcg64\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\ma\\LICENSE',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\ma\\LICENSE',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\umath\\svml\\LICENSE',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\umath\\svml\\LICENSE',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\entry_points.txt',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\entry_points.txt',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\mt19937\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\mt19937\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\LICENSE.txt',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\LICENSE.txt',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\multiarray\\dragon4_LICENSE.txt',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\multiarray\\dragon4_LICENSE.txt',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\METADATA',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\METADATA',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\DELVEWHEEL',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\DELVEWHEEL',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\highway\\LICENSE',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\highway\\LICENSE',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\distributions\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\distributions\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\npysort\\x86-simd-sort\\LICENSE.md',
|
|
||||||
'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\npysort\\x86-simd-sort\\LICENSE.md',
|
|
||||||
'DATA'),
|
|
||||||
('base_library.zip',
|
|
||||||
'd:\\JE-Skin-main\\devkit\\build\\je-skin-devkit-server\\base_library.zip',
|
|
||||||
'DATA')],
|
|
||||||
'python314.dll',
|
|
||||||
False,
|
|
||||||
False,
|
|
||||||
False,
|
|
||||||
[],
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None)
|
|
||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,245 +0,0 @@
|
|||||||
|
|
||||||
This file lists modules PyInstaller was not able to find. This does not
|
|
||||||
necessarily mean these modules are required for running your program. Both
|
|
||||||
Python's standard library and 3rd-party Python packages often conditionally
|
|
||||||
import optional modules, some of which may be available only on certain
|
|
||||||
platforms.
|
|
||||||
|
|
||||||
Types of import:
|
|
||||||
* top-level: imported at the top-level - look at these first
|
|
||||||
* conditional: imported within an if-statement
|
|
||||||
* delayed: imported within a function
|
|
||||||
* optional: imported within a try-except-statement
|
|
||||||
|
|
||||||
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
|
|
||||||
tracking down the missing module yourself. Thanks!
|
|
||||||
|
|
||||||
missing module named pwd - imported by posixpath (delayed, conditional, optional), shutil (delayed, optional), tarfile (optional), pathlib (optional), netrc (delayed, optional), subprocess (delayed, conditional, optional), http.server (delayed, optional)
|
|
||||||
missing module named grp - imported by shutil (delayed, optional), tarfile (optional), pathlib (optional), subprocess (delayed, conditional, optional)
|
|
||||||
missing module named 'collections.abc' - imported by _colorize (top-level), typing (top-level), traceback (top-level), logging (top-level), selectors (top-level), http.client (top-level), importlib.resources.readers (top-level), inspect (top-level), tracemalloc (top-level), multiprocessing.managers (top-level), typing_extensions (top-level), asyncio.base_events (top-level), asyncio.coroutines (top-level), grpc.aio._metadata (top-level), google.protobuf.internal.containers (top-level), google.protobuf.internal.well_known_types (top-level), numpy._typing._array_like (top-level), numpy._typing._nested_sequence (conditional), numpy._typing._shape (top-level), numpy._typing._dtype_like (top-level), numpy.lib._function_base_impl (top-level), _pyrepl.types (top-level), numpy.lib._npyio_impl (top-level), numpy.random._common (top-level), numpy.random._generator (top-level), numpy.random.bit_generator (top-level), numpy.random.mtrand (top-level), numpy.polynomial._polybase (top-level), xml.etree.ElementTree (top-level)
|
|
||||||
missing module named _posixsubprocess - imported by subprocess (conditional), multiprocessing.util (delayed)
|
|
||||||
missing module named fcntl - imported by pathlib._os (optional), subprocess (optional)
|
|
||||||
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
|
|
||||||
missing module named _scproxy - imported by urllib.request (conditional)
|
|
||||||
missing module named posix - imported by posixpath (optional), shutil (conditional), importlib._bootstrap_external (conditional), pathlib._os (optional), os (conditional, optional), _pyrepl.trace (conditional)
|
|
||||||
missing module named resource - imported by posix (top-level)
|
|
||||||
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
|
|
||||||
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
|
|
||||||
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
|
|
||||||
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.forkserver (top-level), multiprocessing.connection (top-level)
|
|
||||||
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
|
|
||||||
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
|
|
||||||
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
|
||||||
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
|
||||||
missing module named pyimod02_importers - imported by C:\Python314\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed)
|
|
||||||
missing module named _dummy_thread - imported by numpy._core.arrayprint (optional)
|
|
||||||
missing module named 'numpy_distutils.cpuinfo' - imported by numpy.f2py.diagnose (delayed, conditional, optional)
|
|
||||||
missing module named 'numpy_distutils.fcompiler' - imported by numpy.f2py.diagnose (delayed, conditional, optional)
|
|
||||||
missing module named 'numpy_distutils.command' - imported by numpy.f2py.diagnose (delayed, conditional, optional)
|
|
||||||
missing module named numpy_distutils - imported by numpy.f2py.diagnose (delayed, optional)
|
|
||||||
missing module named charset_normalizer - imported by numpy.f2py.crackfortran (optional)
|
|
||||||
missing module named vms_lib - imported by platform (delayed, optional)
|
|
||||||
missing module named 'java.lang' - imported by platform (delayed, optional)
|
|
||||||
missing module named java - imported by platform (delayed)
|
|
||||||
missing module named psutil - imported by numpy.testing._private.utils (delayed, optional)
|
|
||||||
missing module named termios - imported by tty (top-level), _pyrepl.pager (delayed, optional)
|
|
||||||
missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, conditional, optional), rlcompleter (optional)
|
|
||||||
missing module named win32pdh - imported by numpy.testing._private.utils (delayed, conditional)
|
|
||||||
missing module named _typeshed - imported by numpy.random.bit_generator (top-level)
|
|
||||||
missing module named numpy.random.RandomState - imported by numpy.random (top-level), numpy.random._generator (top-level)
|
|
||||||
missing module named pyodide_js - imported by threadpoolctl (delayed, optional)
|
|
||||||
missing module named numpy._core.zeros - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.vstack - imported by numpy._core (top-level), numpy.lib._shape_base_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.void - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.vecmat - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.vecdot - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.ushort - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.unsignedinteger - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.ulonglong - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.ulong - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.uintp - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.uintc - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.uint64 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
|
|
||||||
missing module named numpy._core.uint32 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
|
|
||||||
missing module named numpy._core.uint16 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
|
|
||||||
missing module named numpy._core.uint - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.ubyte - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.trunc - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.true_divide - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.transpose - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.lib._function_base_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.trace - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.timedelta64 - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.tensordot - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.tanh - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.tan - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.swapaxes - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.sum - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.subtract - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.str_ - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.square - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.sqrt - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional), numpy.fft._pocketfft (top-level)
|
|
||||||
missing module named numpy._core.spacing - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.sort - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.sinh - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.single - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.signedinteger - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.signbit - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy (conditional)
|
|
||||||
missing module named numpy._core.sign - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.short - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.rint - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.right_shift - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.result_type - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy (conditional), numpy.fft._pocketfft (top-level)
|
|
||||||
missing module named numpy._core.remainder - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.reciprocal - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional), numpy.fft._pocketfft (top-level)
|
|
||||||
missing module named numpy._core.radians - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.rad2deg - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.prod - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.power - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.positive - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.pi - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.outer - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.ones - imported by numpy._core (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.object_ - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (delayed), numpy (conditional)
|
|
||||||
missing module named numpy._core.number - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy (conditional)
|
|
||||||
missing module named numpy._core.not_equal - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.nextafter - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.newaxis - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.negative - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.ndarray - imported by numpy._core (top-level), numpy.testing._private.utils (top-level), numpy.lib._utils_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.multiply - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.moveaxis - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.modf - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.mod - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.minimum - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.maximum - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.max - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy (conditional)
|
|
||||||
missing module named numpy._core.matvec - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.matrix_transpose - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.matmul - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.longlong - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.longdouble - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.long - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.logical_xor - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.logical_or - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.logical_not - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.logical_and - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.logaddexp2 - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.logaddexp - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.log10 - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.log2 - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.log1p - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.log - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.linspace - imported by numpy._core (top-level), numpy.lib._index_tricks_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.less_equal - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.less - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.left_shift - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.ldexp - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.lcm - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.isscalar - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy.lib._polynomial_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.isnat - imported by numpy._core (top-level), numpy.testing._private.utils (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.isnan - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (delayed), numpy (conditional)
|
|
||||||
missing module named numpy._core.isfinite - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.intp - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (top-level), numpy (conditional), numpy._array_api_info (top-level)
|
|
||||||
missing module named numpy._core.integer - imported by numpy._core (conditional), numpy (conditional), numpy.fft._helper (top-level)
|
|
||||||
missing module named numpy._core.intc - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.int64 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
|
|
||||||
missing module named numpy._core.int32 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
|
|
||||||
missing module named numpy._core.int16 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
|
|
||||||
missing module named numpy._core.int8 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
|
|
||||||
missing module named numpy._core.inf - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (delayed), numpy (conditional)
|
|
||||||
missing module named numpy._core.inexact - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.iinfo - imported by numpy._core (top-level), numpy.lib._twodim_base_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.hypot - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.hstack - imported by numpy._core (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.heaviside - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.half - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.greater_equal - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.greater - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.gcd - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.frompyfunc - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.frexp - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.fmod - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.fmin - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.fmax - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.floor_divide - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.floor - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.floating - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.float_power - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.float32 - imported by numpy._core (top-level), numpy.testing._private.utils (top-level), numpy (conditional), numpy._array_api_info (top-level)
|
|
||||||
missing module named numpy._core.float16 - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.finfo - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.fabs - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.expm1 - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.exp2 - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.exp - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.euler_gamma - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.errstate - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (delayed), numpy (conditional)
|
|
||||||
missing module named numpy._core.equal - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.empty_like - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional), numpy.fft._pocketfft (top-level)
|
|
||||||
missing module named numpy._core.empty - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (top-level), numpy (conditional), numpy.fft._helper (top-level)
|
|
||||||
missing module named numpy._core.e - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.double - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.dot - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.divmod - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.divide - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.diagonal - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.degrees - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.deg2rad - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.datetime64 - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.csingle - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.cross - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.count_nonzero - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.cosh - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.cos - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.copysign - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.conjugate - imported by numpy._core (conditional), numpy (conditional), numpy.fft._pocketfft (top-level)
|
|
||||||
missing module named numpy._core.conj - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.complexfloating - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.complex64 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
|
|
||||||
missing module named numpy._core.clongdouble - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.character - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.ceil - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.cdouble - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.cbrt - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.bytes_ - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.byte - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.bool_ - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.bitwise_xor - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.bitwise_or - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.bitwise_count - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.bitwise_and - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.atleast_3d - imported by numpy._core (top-level), numpy.lib._shape_base_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.atleast_2d - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.atleast_1d - imported by numpy._core (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.asarray - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.lib._array_utils_impl (top-level), numpy (conditional), numpy.fft._helper (top-level), numpy.fft._pocketfft (top-level)
|
|
||||||
missing module named numpy._core.asanyarray - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.array_repr - imported by numpy._core (top-level), numpy.testing._private.utils (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.array2string - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy (conditional)
|
|
||||||
missing module named numpy._core.array - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.argsort - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.arctanh - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.arctan2 - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.arctan - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.arcsinh - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.arcsin - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.arccosh - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.arccos - imported by numpy._core (conditional), numpy (conditional)
|
|
||||||
missing module named numpy._core.arange - imported by numpy._core (top-level), numpy.testing._private.utils (top-level), numpy (conditional), numpy.fft._helper (top-level)
|
|
||||||
missing module named numpy._core.amin - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.amax - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named numpy._core.all - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (delayed), numpy (conditional)
|
|
||||||
missing module named numpy._core.add - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
|
|
||||||
missing module named yaml - imported by numpy.__config__ (delayed)
|
|
||||||
missing module named numpy._distributor_init_local - imported by numpy (optional), numpy._distributor_init (optional)
|
|
||||||
missing module named defusedxml - imported by openpyxl.xml (delayed, optional)
|
|
||||||
missing module named lxml - imported by openpyxl.xml (delayed, optional)
|
|
||||||
missing module named 'defusedxml.ElementTree' - imported by openpyxl.xml.functions (conditional)
|
|
||||||
missing module named 'lxml.etree' - imported by openpyxl.xml.functions (conditional)
|
|
||||||
missing module named PIL - imported by openpyxl.drawing.image (optional)
|
|
||||||
missing module named openpyxl.tests - imported by openpyxl.reader.excel (optional)
|
|
||||||
missing module named google.protobuf.pyext._message - imported by google.protobuf.pyext (conditional, optional), google.protobuf.internal.api_implementation (conditional, optional), google.protobuf.descriptor (conditional), google.protobuf.pyext.cpp_message (conditional)
|
|
||||||
missing module named google.protobuf.enable_deterministic_proto_serialization - imported by google.protobuf (optional), google.protobuf.internal.api_implementation (optional)
|
|
||||||
missing module named google.protobuf.internal._api_implementation - imported by google.protobuf.internal (optional), google.protobuf.internal.api_implementation (optional)
|
|
||||||
missing module named grpc_reflection - imported by grpc (optional)
|
|
||||||
missing module named grpc_health - imported by grpc (optional)
|
|
||||||
missing module named pkg_resources - imported by grpc_tools.protoc (conditional)
|
|
||||||
File diff suppressed because it is too large
Load Diff
BIN
devkit/dist/je-skin-devkit-server.exe
vendored
BIN
devkit/dist/je-skin-devkit-server.exe
vendored
Binary file not shown.
Binary file not shown.
@@ -5,8 +5,8 @@ a = Analysis(
|
|||||||
['sensor_server.py'],
|
['sensor_server.py'],
|
||||||
pathex=[],
|
pathex=[],
|
||||||
binaries=[],
|
binaries=[],
|
||||||
datas=[],
|
datas=[('sensor_stream_pb2.py', '.'), ('sensor_stream_pb2_grpc.py', '.')],
|
||||||
hiddenimports=[],
|
hiddenimports=['grpc', 'openpyxl', 'numpy'],
|
||||||
hookspath=[],
|
hookspath=[],
|
||||||
hooksconfig={},
|
hooksconfig={},
|
||||||
runtime_hooks=[],
|
runtime_hooks=[],
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import sys
|
|||||||
import time
|
import time
|
||||||
from concurrent import futures
|
from concurrent import futures
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import grpc
|
import grpc
|
||||||
import sensor_stream_pb2
|
import sensor_stream_pb2
|
||||||
import sensor_stream_pb2_grpc
|
import sensor_stream_pb2_grpc
|
||||||
@@ -230,56 +231,30 @@ def _append_analysis_log(source_csv: str, stats: dict):
|
|||||||
class SensorPushServicer(sensor_stream_pb2_grpc.SensorPushServicer):
|
class SensorPushServicer(sensor_stream_pb2_grpc.SensorPushServicer):
|
||||||
"""接收实时传感器帧(streaming)"""
|
"""接收实时传感器帧(streaming)"""
|
||||||
|
|
||||||
_csv_path = None # 类变量,记录当前 CSV 路径
|
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.frame_count = 0
|
self.frame_count = 0
|
||||||
self.last_report_time = time.time()
|
self.last_report_time = time.time()
|
||||||
self.last_angle = None
|
self.last_angle = None
|
||||||
self._csv_file = None
|
|
||||||
self._csv_writer = None
|
|
||||||
|
|
||||||
def _open_csv(self):
|
|
||||||
"""打开一个新的 CSV 文件用于持续写入"""
|
|
||||||
ts = time.strftime("%Y%m%d_%H%M%S")
|
|
||||||
SensorPushServicer._csv_path = os.path.join(os.getcwd(), f"sensor_log_{ts}.csv")
|
|
||||||
self._csv_file = open(SensorPushServicer._csv_path, "w", newline="", encoding="utf-8-sig")
|
|
||||||
self._csv_writer = csv.writer(self._csv_file)
|
|
||||||
header = ["seq", "timestamp_ms", "dts_ms", "angle", "magnitude", "state", "cop_x", "cop_y", "base_x", "base_y", "resultant_force"] + [f"ch{i}" for i in range(SENSOR_ROWS * SENSOR_COLS)]
|
|
||||||
self._csv_writer.writerow(header)
|
|
||||||
self._csv_file.flush()
|
|
||||||
print(f"[SensorPush] CSV logging to: {SensorPushServicer._csv_path}")
|
|
||||||
|
|
||||||
def _close_csv(self):
|
|
||||||
"""关闭 CSV 文件"""
|
|
||||||
if self._csv_file:
|
|
||||||
self._csv_file.close()
|
|
||||||
print(f"[SensorPush] CSV saved: {SensorPushServicer._csv_path}")
|
|
||||||
self._csv_file = None
|
|
||||||
self._csv_writer = None
|
|
||||||
|
|
||||||
def Upload(self, request_iterator, context):
|
def Upload(self, request_iterator, context):
|
||||||
print("[SensorPush] Client connected, waiting for frames...")
|
print("[SensorPush] Client connected, waiting for frames...")
|
||||||
reset_baseline()
|
reset_baseline()
|
||||||
self.last_angle = None
|
self.last_angle = None
|
||||||
self.frame_count = 0
|
|
||||||
self._open_csv()
|
|
||||||
|
|
||||||
for frame in request_iterator:
|
for frame in request_iterator:
|
||||||
self.frame_count += 1
|
self.frame_count += 1
|
||||||
angle = 0.0
|
angle = 0.0
|
||||||
magnitude = 0.0
|
|
||||||
state = 0
|
|
||||||
ok = True
|
ok = True
|
||||||
message = "OK"
|
message = "OK"
|
||||||
cop_x = cop_y = base_x = base_y = 0.0
|
|
||||||
total_press = 0.0
|
|
||||||
threshold = 0.0
|
|
||||||
if len(frame.matrix) == SENSOR_ROWS * SENSOR_COLS:
|
if len(frame.matrix) == SENSOR_ROWS * SENSOR_COLS:
|
||||||
try:
|
try:
|
||||||
angle, magnitude, state, cop_x, cop_y, base_x, base_y, total_press, threshold = get_pzt_angle(frame.matrix)
|
angle = get_pzt_angle(frame.matrix)
|
||||||
self.last_angle = angle
|
self.last_angle = angle
|
||||||
print(f"devkit: angle={angle:.2f}, magnitude={magnitude:.4f}, state={state}, cop_x={cop_x:.4f}, cop_y={cop_y:.4f}, base_x={base_x:.4f}, base_y={base_y:.4f}, total_press={total_press:.2f}, thresh={threshold:.2f}")
|
if self.frame_count <= 10 or self.frame_count % 30 == 0:
|
||||||
|
print(
|
||||||
|
f"[SensorPush] PZT angle frame #{frame.seq} "
|
||||||
|
f"dts={frame.dts_ms} angle={angle:.2f}"
|
||||||
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
ok = False
|
ok = False
|
||||||
message = str(e)
|
message = str(e)
|
||||||
@@ -287,18 +262,6 @@ class SensorPushServicer(sensor_stream_pb2_grpc.SensorPushServicer):
|
|||||||
else:
|
else:
|
||||||
ok = False
|
ok = False
|
||||||
message = f"Invalid matrix length: {len(frame.matrix)}"
|
message = f"Invalid matrix length: {len(frame.matrix)}"
|
||||||
print(f"[Recv #{frame.seq}] INVALID len={len(frame.matrix)}")
|
|
||||||
|
|
||||||
# 持续写入 CSV
|
|
||||||
if self._csv_writer:
|
|
||||||
row = [frame.seq, frame.timestamp_ms, frame.dts_ms,
|
|
||||||
f"{angle:.4f}", f"{magnitude:.4f}", state,
|
|
||||||
f"{cop_x:.4f}", f"{cop_y:.4f}", f"{base_x:.4f}", f"{base_y:.4f}",
|
|
||||||
frame.resultant_force]
|
|
||||||
row += list(frame.matrix)
|
|
||||||
self._csv_writer.writerow(row)
|
|
||||||
if self.frame_count % 10 == 0:
|
|
||||||
self._csv_file.flush()
|
|
||||||
|
|
||||||
yield sensor_stream_pb2.PztAngleResponse(
|
yield sensor_stream_pb2.PztAngleResponse(
|
||||||
seq=frame.seq,
|
seq=frame.seq,
|
||||||
@@ -307,14 +270,6 @@ class SensorPushServicer(sensor_stream_pb2_grpc.SensorPushServicer):
|
|||||||
dts_ms=frame.dts_ms,
|
dts_ms=frame.dts_ms,
|
||||||
ok=ok,
|
ok=ok,
|
||||||
message=message,
|
message=message,
|
||||||
magnitude=magnitude,
|
|
||||||
state=state,
|
|
||||||
cop_x=cop_x,
|
|
||||||
cop_y=cop_y,
|
|
||||||
base_x=base_x,
|
|
||||||
base_y=base_y,
|
|
||||||
total_press=total_press,
|
|
||||||
threshold=threshold,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.frame_count % 100 == 0:
|
if self.frame_count % 100 == 0:
|
||||||
@@ -335,7 +290,6 @@ class SensorPushServicer(sensor_stream_pb2_grpc.SensorPushServicer):
|
|||||||
f"total={self.frame_count} | ~{fps:.1f} fps"
|
f"total={self.frame_count} | ~{fps:.1f} fps"
|
||||||
)
|
)
|
||||||
|
|
||||||
self._close_csv()
|
|
||||||
print(f"[SensorPush] Stream ended. Total: {self.frame_count}")
|
print(f"[SensorPush] Stream ended. Total: {self.frame_count}")
|
||||||
|
|
||||||
|
|
||||||
@@ -396,84 +350,67 @@ def serve(port: int):
|
|||||||
|
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from collections import deque
|
import threading
|
||||||
|
|
||||||
# ===================== 算法参数=====================
|
# ===================== 算法参数=====================
|
||||||
COP_INIT_MEDIAN_FRAMES = 1 # 初始COP取中位数的帧数
|
TOTAL_PRESSURE_LOW_THRESHOLD = 500
|
||||||
NOISE_COLLECT_FRAMES = 10 # 动态阈值基线采集帧数
|
COP_STABILITY_FRAMES_REQUIRED = 5
|
||||||
THRESH_K = 5 # 阈值 = K * mean
|
|
||||||
SENSOR_ROWS = 12
|
SENSOR_ROWS = 12
|
||||||
SENSOR_COLS = 7
|
SENSOR_COLS = 7
|
||||||
|
|
||||||
# ===================== 二次静置精修参数 =====================
|
|
||||||
POST_INIT_WINDOW_CNT = 60000
|
|
||||||
POST_INIT_STABLE_CNT = 100
|
|
||||||
POST_INIT_STABLE_THRESH = 0.1
|
|
||||||
|
|
||||||
# ===================== 线程安全全局状态 =====================
|
# ===================== 线程安全全局状态 =====================
|
||||||
|
first_frame = None
|
||||||
|
first_frame_lock = threading.Lock()
|
||||||
|
|
||||||
first_contact_CoP_x = None
|
first_contact_CoP_x = None
|
||||||
first_contact_CoP_y = None
|
first_contact_CoP_y = None
|
||||||
contact_initialized = False
|
contact_initialized = False
|
||||||
|
|
||||||
# 候选初始CoP缓冲
|
total_pressure_low_counter = 0
|
||||||
cop_init_x_buf = deque(maxlen=COP_INIT_MEDIAN_FRAMES)
|
|
||||||
cop_init_y_buf = deque(maxlen=COP_INIT_MEDIAN_FRAMES)
|
|
||||||
|
|
||||||
# 动态阈值
|
# ===================== 基线减除 =====================
|
||||||
noise_sum_buf = deque(maxlen=NOISE_COLLECT_FRAMES)
|
def subtract_baseline(current_frame):
|
||||||
dynamic_thresh = None
|
global first_frame
|
||||||
|
current_frame = np.array(current_frame, dtype=np.float32).flatten()
|
||||||
|
|
||||||
# 二次静置精修状态
|
with first_frame_lock:
|
||||||
post_init_frame_cnt = 0
|
if first_frame is None:
|
||||||
post_stable_cnt = 0
|
first_frame = current_frame.copy()
|
||||||
post_refined_flag = False
|
|
||||||
post_cand_x = None
|
|
||||||
post_cand_y = None
|
|
||||||
|
|
||||||
|
diff = current_frame - first_frame
|
||||||
|
return np.clip(diff, 0, None)
|
||||||
|
|
||||||
# ===================== 重置CoP状态 =====================
|
# ===================== 重置CoP状态 =====================
|
||||||
def reset_cop_state():
|
def reset_cop_state():
|
||||||
global first_contact_CoP_x, first_contact_CoP_y, contact_initialized
|
global first_contact_CoP_x, first_contact_CoP_y, contact_initialized
|
||||||
global post_init_frame_cnt, post_stable_cnt, post_refined_flag
|
global total_pressure_low_counter
|
||||||
global post_cand_x, post_cand_y
|
|
||||||
|
|
||||||
first_contact_CoP_x = None
|
first_contact_CoP_x = None
|
||||||
first_contact_CoP_y = None
|
first_contact_CoP_y = None
|
||||||
contact_initialized = False
|
contact_initialized = False
|
||||||
cop_init_x_buf.clear()
|
total_pressure_low_counter = 0
|
||||||
cop_init_y_buf.clear()
|
|
||||||
post_init_frame_cnt = 0
|
|
||||||
post_stable_cnt = 0
|
|
||||||
post_refined_flag = False
|
|
||||||
post_cand_x = None
|
|
||||||
post_cand_y = None
|
|
||||||
|
|
||||||
|
|
||||||
# ===================== CoP压力中心计算 =====================
|
# ===================== CoP压力中心计算 =====================
|
||||||
def compute_pressure_direction(raw_frame):
|
def compute_pressure_direction(baseline_subtracted_frame):
|
||||||
global first_contact_CoP_x, first_contact_CoP_y, contact_initialized
|
global first_contact_CoP_x, first_contact_CoP_y, contact_initialized
|
||||||
global post_init_frame_cnt, post_stable_cnt, post_refined_flag
|
global total_pressure_low_counter
|
||||||
global post_cand_x, post_cand_y
|
|
||||||
global noise_sum_buf, dynamic_thresh
|
|
||||||
|
|
||||||
rows, cols = SENSOR_ROWS, SENSOR_COLS
|
rows, cols = SENSOR_ROWS, SENSOR_COLS
|
||||||
frame_flat = np.asarray(raw_frame, dtype=np.float32).flatten()
|
frame_flat = np.asarray(baseline_subtracted_frame, dtype=np.float32).flatten()
|
||||||
frame2d = frame_flat.reshape(rows, cols)
|
frame2d = frame_flat.reshape(rows, cols)
|
||||||
|
|
||||||
total_pressure = np.sum(frame2d)
|
total_pressure = np.sum(frame2d)
|
||||||
|
if total_pressure < TOTAL_PRESSURE_LOW_THRESHOLD:
|
||||||
|
total_pressure_low_counter += 1
|
||||||
|
else:
|
||||||
|
total_pressure_low_counter = 0
|
||||||
|
|
||||||
# 动态阈值
|
if total_pressure_low_counter >= COP_STABILITY_FRAMES_REQUIRED:
|
||||||
if dynamic_thresh is None:
|
|
||||||
noise_sum_buf.append(total_pressure)
|
|
||||||
if len(noise_sum_buf) >= NOISE_COLLECT_FRAMES:
|
|
||||||
sums = np.array(noise_sum_buf)
|
|
||||||
dynamic_thresh = THRESH_K * float(np.mean(sums))
|
|
||||||
|
|
||||||
# 低压重置
|
|
||||||
if total_pressure == 0 or (dynamic_thresh is not None and total_pressure < dynamic_thresh):
|
|
||||||
if contact_initialized and dynamic_thresh is not None:
|
|
||||||
reset_cop_state()
|
reset_cop_state()
|
||||||
return 0.0, 0.0, 0, rows-1, 0, cols-1, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, dynamic_thresh
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
if total_pressure == 0:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
x_grid = np.tile(np.arange(cols), (rows, 1))
|
x_grid = np.tile(np.arange(cols), (rows, 1))
|
||||||
y_grid = np.repeat(np.arange(rows), cols).reshape(rows, cols)
|
y_grid = np.repeat(np.arange(rows), cols).reshape(rows, cols)
|
||||||
@@ -482,66 +419,16 @@ def compute_pressure_direction(raw_frame):
|
|||||||
|
|
||||||
delta_CoP_x = 0.0
|
delta_CoP_x = 0.0
|
||||||
delta_CoP_y = 0.0
|
delta_CoP_y = 0.0
|
||||||
base_x = cop_x
|
|
||||||
base_y = cop_y
|
|
||||||
|
|
||||||
# ============ 初始点稳定判断(中位数判定) ============
|
|
||||||
if not contact_initialized:
|
if not contact_initialized:
|
||||||
cop_init_x_buf.append(cop_x)
|
first_contact_CoP_x = cop_x
|
||||||
cop_init_y_buf.append(cop_y)
|
first_contact_CoP_y = cop_y
|
||||||
|
|
||||||
if len(cop_init_x_buf) >= COP_INIT_MEDIAN_FRAMES:
|
|
||||||
first_contact_CoP_x = float(np.median(cop_init_x_buf))
|
|
||||||
first_contact_CoP_y = float(np.median(cop_init_y_buf))
|
|
||||||
contact_initialized = True
|
contact_initialized = True
|
||||||
cop_init_x_buf.clear()
|
|
||||||
cop_init_y_buf.clear()
|
|
||||||
|
|
||||||
# ========== 计算偏移量 ==========
|
|
||||||
else:
|
else:
|
||||||
# 二次静置精修
|
|
||||||
post_init_frame_cnt += 1
|
|
||||||
if not post_refined_flag and post_init_frame_cnt <= POST_INIT_WINDOW_CNT:
|
|
||||||
if post_cand_x is not None:
|
|
||||||
dist_val = np.hypot(cop_x - post_cand_x, cop_y - post_cand_y)
|
|
||||||
if dist_val <= POST_INIT_STABLE_THRESH:
|
|
||||||
post_stable_cnt += 1
|
|
||||||
else:
|
|
||||||
post_cand_x = cop_x
|
|
||||||
post_cand_y = cop_y
|
|
||||||
post_stable_cnt = 1
|
|
||||||
else:
|
|
||||||
post_cand_x = cop_x
|
|
||||||
post_cand_y = cop_y
|
|
||||||
post_stable_cnt = 1
|
|
||||||
|
|
||||||
if post_stable_cnt >= POST_INIT_STABLE_CNT:
|
|
||||||
first_contact_CoP_x = post_cand_x
|
|
||||||
first_contact_CoP_y = post_cand_y
|
|
||||||
post_refined_flag = True
|
|
||||||
else:
|
|
||||||
post_refined_flag = True
|
|
||||||
|
|
||||||
delta_CoP_x = cop_x - first_contact_CoP_x
|
delta_CoP_x = cop_x - first_contact_CoP_x
|
||||||
delta_CoP_y = first_contact_CoP_y - cop_y
|
delta_CoP_y = cop_y - first_contact_CoP_y
|
||||||
base_x = first_contact_CoP_x
|
|
||||||
base_y = first_contact_CoP_y
|
|
||||||
|
|
||||||
magnitude = np.hypot(delta_CoP_x, delta_CoP_y)
|
|
||||||
if not contact_initialized:
|
|
||||||
state = 0
|
|
||||||
elif not post_refined_flag:
|
|
||||||
state = 1
|
|
||||||
else:
|
|
||||||
state = 2
|
|
||||||
|
|
||||||
return (cop_x, cop_y,
|
|
||||||
0, rows-1, 0, cols-1,
|
|
||||||
delta_CoP_x, delta_CoP_y,
|
|
||||||
base_x, base_y,
|
|
||||||
magnitude, state,
|
|
||||||
total_pressure, dynamic_thresh)
|
|
||||||
|
|
||||||
|
return delta_CoP_x, delta_CoP_y
|
||||||
|
|
||||||
# ===================== 角度计算核心 =====================
|
# ===================== 角度计算核心 =====================
|
||||||
def compute_vector_angle(x: float, y: float) -> tuple[float, float]:
|
def compute_vector_angle(x: float, y: float) -> tuple[float, float]:
|
||||||
@@ -553,27 +440,23 @@ def compute_vector_angle(x: float, y: float) -> tuple[float, float]:
|
|||||||
return angle, mag
|
return angle, mag
|
||||||
|
|
||||||
def compute_PZT_angle(Px: float, Py: float) -> tuple[float, float]:
|
def compute_PZT_angle(Px: float, Py: float) -> tuple[float, float]:
|
||||||
return compute_vector_angle(Px, Py)
|
return compute_vector_angle(Px, -Py)
|
||||||
|
|
||||||
|
|
||||||
# ===================== 核心入口函数 =====================
|
# ===================== 核心入口函数 =====================
|
||||||
def get_pzt_angle(adc_data):
|
def get_pzt_angle(adc_data):
|
||||||
if len(adc_data) != 84:
|
if len(adc_data) != 84:
|
||||||
raise ValueError("ADC数据长度必须为84")
|
raise ValueError("ADC数据长度必须为84")
|
||||||
result = compute_pressure_direction(adc_data)
|
baseline_subtracted = subtract_baseline(adc_data)
|
||||||
cop_x, cop_y = result[0], result[1]
|
dx, dy = compute_pressure_direction(baseline_subtracted)
|
||||||
dx, dy = result[6], result[7]
|
|
||||||
base_x, base_y = result[8], result[9]
|
|
||||||
magnitude = result[10]
|
|
||||||
state = int(result[11])
|
|
||||||
total_press = result[12]
|
|
||||||
threshold = result[13]
|
|
||||||
pzt_angle, _ = compute_PZT_angle(dx, dy)
|
pzt_angle, _ = compute_PZT_angle(dx, dy)
|
||||||
return pzt_angle, magnitude, state, cop_x, cop_y, base_x, base_y, total_press, threshold
|
|
||||||
|
|
||||||
|
return pzt_angle
|
||||||
|
|
||||||
# ===================== 重置基线(校准用) =====================
|
# ===================== 重置基线(校准用) =====================
|
||||||
def reset_baseline():
|
def reset_baseline():
|
||||||
|
global first_frame
|
||||||
|
with first_frame_lock:
|
||||||
|
first_frame = None
|
||||||
reset_cop_state()
|
reset_cop_state()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13sensor_stream.proto\x12\rsensor_stream\"\x85\x01\n\x0bSensorFrame\x12\x0b\n\x03seq\x18\x01 \x01(\x04\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x04\x12\x0c\n\x04rows\x18\x03 \x01(\r\x12\x0c\n\x04\x63ols\x18\x04 \x01(\r\x12\x0e\n\x06matrix\x18\x05 \x03(\r\x12\x17\n\x0fresultant_force\x18\x06 \x01(\x01\x12\x0e\n\x06\x64ts_ms\x18\x07 \x01(\r\"\xd1\x01\n\x10PztAngleResponse\x12\x0b\n\x03seq\x18\x01 \x01(\x04\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x04\x12\r\n\x05\x61ngle\x18\x03 \x01(\x02\x12\x0e\n\x06\x64ts_ms\x18\x04 \x01(\r\x12\n\n\x02ok\x18\x05 \x01(\x08\x12\x0f\n\x07message\x18\x06 \x01(\t\x12\x11\n\tmagnitude\x18\x07 \x01(\x02\x12\r\n\x05state\x18\x08 \x01(\r\x12\r\n\x05\x63op_x\x18\t \x01(\x02\x12\r\n\x05\x63op_y\x18\n \x01(\x02\x12\x0e\n\x06\x62\x61se_x\x18\x0b \x01(\x02\x12\x0e\n\x06\x62\x61se_y\x18\x0c \x01(\x02\"8\n\x0eProcessRequest\x12\x10\n\x08\x63sv_path\x18\x01 \x01(\t\x12\x14\n\x0csave_as_xlsx\x18\x02 \x01(\x08\"\xa6\x01\n\x0fProcessResponse\x12\n\n\x02ok\x18\x01 \x01(\x08\x12\x13\n\x0boutput_path\x18\x02 \x01(\t\x12\x13\n\x0bgroups_used\x18\x03 \x01(\r\x12\x12\n\nmean_value\x18\x04 \x01(\x01\x12\x11\n\tthreshold\x18\x05 \x01(\x01\x12\x12\n\nrows_total\x18\x06 \x01(\r\x12\x11\n\trows_kept\x18\x07 \x01(\r\x12\x0f\n\x07message\x18\x08 \x01(\t2W\n\nSensorPush\x12I\n\x06Upload\x12\x1a.sensor_stream.SensorFrame\x1a\x1f.sensor_stream.PztAngleResponse(\x01\x30\x01\x32_\n\x0f\x45xportProcessor\x12L\n\x0bProcessFile\x12\x1d.sensor_stream.ProcessRequest\x1a\x1e.sensor_stream.ProcessResponseb\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13sensor_stream.proto\x12\rsensor_stream\"\x85\x01\n\x0bSensorFrame\x12\x0b\n\x03seq\x18\x01 \x01(\x04\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x04\x12\x0c\n\x04rows\x18\x03 \x01(\r\x12\x0c\n\x04\x63ols\x18\x04 \x01(\r\x12\x0e\n\x06matrix\x18\x05 \x03(\r\x12\x17\n\x0fresultant_force\x18\x06 \x01(\x01\x12\x0e\n\x06\x64ts_ms\x18\x07 \x01(\r\"q\n\x10PztAngleResponse\x12\x0b\n\x03seq\x18\x01 \x01(\x04\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x04\x12\r\n\x05\x61ngle\x18\x03 \x01(\x02\x12\x0e\n\x06\x64ts_ms\x18\x04 \x01(\r\x12\n\n\x02ok\x18\x05 \x01(\x08\x12\x0f\n\x07message\x18\x06 \x01(\t\"8\n\x0eProcessRequest\x12\x10\n\x08\x63sv_path\x18\x01 \x01(\t\x12\x14\n\x0csave_as_xlsx\x18\x02 \x01(\x08\"\xa6\x01\n\x0fProcessResponse\x12\n\n\x02ok\x18\x01 \x01(\x08\x12\x13\n\x0boutput_path\x18\x02 \x01(\t\x12\x13\n\x0bgroups_used\x18\x03 \x01(\r\x12\x12\n\nmean_value\x18\x04 \x01(\x01\x12\x11\n\tthreshold\x18\x05 \x01(\x01\x12\x12\n\nrows_total\x18\x06 \x01(\r\x12\x11\n\trows_kept\x18\x07 \x01(\r\x12\x0f\n\x07message\x18\x08 \x01(\t2W\n\nSensorPush\x12I\n\x06Upload\x12\x1a.sensor_stream.SensorFrame\x1a\x1f.sensor_stream.PztAngleResponse(\x01\x30\x01\x32_\n\x0f\x45xportProcessor\x12L\n\x0bProcessFile\x12\x1d.sensor_stream.ProcessRequest\x1a\x1e.sensor_stream.ProcessResponseb\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
@@ -33,14 +33,14 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|||||||
DESCRIPTOR._loaded_options = None
|
DESCRIPTOR._loaded_options = None
|
||||||
_globals['_SENSORFRAME']._serialized_start=39
|
_globals['_SENSORFRAME']._serialized_start=39
|
||||||
_globals['_SENSORFRAME']._serialized_end=172
|
_globals['_SENSORFRAME']._serialized_end=172
|
||||||
_globals['_PZTANGLERESPONSE']._serialized_start=175
|
_globals['_PZTANGLERESPONSE']._serialized_start=174
|
||||||
_globals['_PZTANGLERESPONSE']._serialized_end=384
|
_globals['_PZTANGLERESPONSE']._serialized_end=287
|
||||||
_globals['_PROCESSREQUEST']._serialized_start=386
|
_globals['_PROCESSREQUEST']._serialized_start=289
|
||||||
_globals['_PROCESSREQUEST']._serialized_end=442
|
_globals['_PROCESSREQUEST']._serialized_end=345
|
||||||
_globals['_PROCESSRESPONSE']._serialized_start=445
|
_globals['_PROCESSRESPONSE']._serialized_start=348
|
||||||
_globals['_PROCESSRESPONSE']._serialized_end=611
|
_globals['_PROCESSRESPONSE']._serialized_end=514
|
||||||
_globals['_SENSORPUSH']._serialized_start=613
|
_globals['_SENSORPUSH']._serialized_start=516
|
||||||
_globals['_SENSORPUSH']._serialized_end=700
|
_globals['_SENSORPUSH']._serialized_end=603
|
||||||
_globals['_EXPORTPROCESSOR']._serialized_start=702
|
_globals['_EXPORTPROCESSOR']._serialized_start=605
|
||||||
_globals['_EXPORTPROCESSOR']._serialized_end=797
|
_globals['_EXPORTPROCESSOR']._serialized_end=700
|
||||||
# @@protoc_insertion_point(module_scope)
|
# @@protoc_insertion_point(module_scope)
|
||||||
|
|||||||
@@ -1,127 +0,0 @@
|
|||||||
"""
|
|
||||||
独立测试脚本:读取84个原始ADC数据,传入CoP算法计算角度,终端打印结果。
|
|
||||||
|
|
||||||
用法:
|
|
||||||
python test_pzt.py # 从 stdin 逐行读取(每行84个逗号分隔数值)
|
|
||||||
python test_pzt.py data.csv # 从 CSV 文件逐行读取
|
|
||||||
python test_pzt.py --random # 生成随机测试数据(调试用)
|
|
||||||
"""
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import csv
|
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
# ── 从 sensor_server.py 导入算法 ──
|
|
||||||
sys.path.insert(0, ".")
|
|
||||||
from sensor_server import (
|
|
||||||
get_pzt_angle,
|
|
||||||
reset_baseline,
|
|
||||||
subtract_baseline,
|
|
||||||
compute_pressure_direction,
|
|
||||||
compute_PZT_angle,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def print_result(data_label: str, pzt_angle: float, magnitude: float, state: int, cop_x: float, cop_y: float, base_x: float, base_y: float):
|
|
||||||
dx = cop_x - base_x
|
|
||||||
dy = base_y - cop_y
|
|
||||||
print(
|
|
||||||
f"devkit: angle={pzt_angle:.2f}, magnitude={magnitude:.4f}, state={state}, "
|
|
||||||
f"cop_x={cop_x:.4f}, cop_y={cop_y:.4f}, dx={dx:.4f}, dy={dy:.4f}"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def process_values(values: list[int | float]):
|
|
||||||
"""处理一帧84个值并打印结果"""
|
|
||||||
if len(values) != 84:
|
|
||||||
print(f"[ERROR] 期望84个值,实际收到 {len(values)} 个", file=sys.stderr)
|
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
|
||||||
pzt_angle, magnitude, state, cop_x, cop_y, base_x, base_y = get_pzt_angle(values)
|
|
||||||
print_result("", pzt_angle, magnitude, state, cop_x, cop_y, base_x, base_y)
|
|
||||||
except Exception as e:
|
|
||||||
print(f"[ERROR] 计算失败: {e}", file=sys.stderr)
|
|
||||||
|
|
||||||
|
|
||||||
def run_random_test():
|
|
||||||
"""生成随机数据测试算法"""
|
|
||||||
reset_baseline()
|
|
||||||
print("[TEST] 使用随机数据测试 CoP 算法")
|
|
||||||
print("[TEST] 先用全零帧建立基线...")
|
|
||||||
process_values([0] * 84)
|
|
||||||
print("[TEST] 模拟右侧偏移按压...")
|
|
||||||
# 模拟:row 5-7, col 4-6 区域有压力
|
|
||||||
data = [0.0] * 84
|
|
||||||
for r in range(5, 8):
|
|
||||||
for c in range(4, 7):
|
|
||||||
idx = r * 7 + c
|
|
||||||
data[idx] = 100.0 + (c - 4) * 50 # 右侧更强
|
|
||||||
process_values(data)
|
|
||||||
print("[TEST] 模拟下方偏移按压...")
|
|
||||||
data2 = [0.0] * 84
|
|
||||||
for r in range(8, 11):
|
|
||||||
for c in range(2, 5):
|
|
||||||
idx = r * 7 + c
|
|
||||||
data2[idx] = 150.0 + (r - 8) * 30
|
|
||||||
process_values(data2)
|
|
||||||
print("[TEST] 完成")
|
|
||||||
|
|
||||||
|
|
||||||
def run_csv_mode(filepath: str):
|
|
||||||
"""从 CSV 文件逐行读取并处理"""
|
|
||||||
reset_baseline()
|
|
||||||
print(f"[CSV] 读取文件: {filepath}")
|
|
||||||
with open(filepath, "r", encoding="utf-8-sig", newline="") as f:
|
|
||||||
reader = csv.reader(f)
|
|
||||||
for i, row in enumerate(reader):
|
|
||||||
if not row:
|
|
||||||
continue
|
|
||||||
# 跳过 header
|
|
||||||
if row[0].strip() in ("seq", "timestamp_ms"):
|
|
||||||
print(f"[CSV] 跳过 header: {row[:5]}...")
|
|
||||||
continue
|
|
||||||
try:
|
|
||||||
values = [float(v) for v in row]
|
|
||||||
if len(values) == 84:
|
|
||||||
process_values(values)
|
|
||||||
elif len(values) > 84:
|
|
||||||
process_values(values[:84])
|
|
||||||
except ValueError:
|
|
||||||
continue
|
|
||||||
|
|
||||||
|
|
||||||
def run_stdin_mode():
|
|
||||||
"""从 stdin 逐行读取"""
|
|
||||||
reset_baseline()
|
|
||||||
print("[STDIN] 等待输入(每行84个逗号分隔数值,Ctrl+C 退出)...")
|
|
||||||
try:
|
|
||||||
for line in sys.stdin:
|
|
||||||
line = line.strip()
|
|
||||||
if not line:
|
|
||||||
continue
|
|
||||||
try:
|
|
||||||
values = [float(v) for v in line.split(",")]
|
|
||||||
if len(values) >= 84:
|
|
||||||
process_values(values[:84])
|
|
||||||
except ValueError:
|
|
||||||
continue
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
print("\n[STDIN] 已退出")
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
if len(sys.argv) > 1:
|
|
||||||
arg = sys.argv[1]
|
|
||||||
if arg == "--random":
|
|
||||||
run_random_test()
|
|
||||||
elif arg == "--help" or arg == "-h":
|
|
||||||
print(__doc__)
|
|
||||||
else:
|
|
||||||
run_csv_mode(arg)
|
|
||||||
else:
|
|
||||||
run_stdin_mode()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
2
package-lock.json
generated
2
package-lock.json
generated
@@ -6,7 +6,7 @@
|
|||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "JE-Skin",
|
"name": "JE-Skin",
|
||||||
"version": "0.4.0",
|
"version": "0.3.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tauri-apps/api": "^2",
|
"@tauri-apps/api": "^2",
|
||||||
|
|||||||
1312
src-tauri/Cargo.lock
generated
1312
src-tauri/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -27,14 +27,6 @@ message PztAngleResponse {
|
|||||||
uint32 dts_ms = 4;
|
uint32 dts_ms = 4;
|
||||||
bool ok = 5;
|
bool ok = 5;
|
||||||
string message = 6;
|
string message = 6;
|
||||||
float magnitude = 7;
|
|
||||||
uint32 state = 8;
|
|
||||||
float cop_x = 9;
|
|
||||||
float cop_y = 10;
|
|
||||||
float base_x = 11;
|
|
||||||
float base_y = 12;
|
|
||||||
float total_press = 13;
|
|
||||||
float threshold = 14;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message ProcessRequest {
|
message ProcessRequest {
|
||||||
|
|||||||
Binary file not shown.
@@ -1,162 +0,0 @@
|
|||||||
/// AD值反解x计算器
|
|
||||||
/// AD = -5.732*x^3 - 131.5*x^2 + 31980*x + 13490 (x <= 6.57)
|
|
||||||
/// AD = -377.8*x^2 + 26040*x + 51120 (x > 6.57)
|
|
||||||
|
|
||||||
const X_BOUNDARY: f64 = 6.57;
|
|
||||||
|
|
||||||
/// 二次方程在边界处的AD值
|
|
||||||
/// 当 x = 6.57 时,AD = -377.8*6.57^2 + 26040*6.57 + 51120
|
|
||||||
const AD_BOUNDARY: f64 = 205895.10;
|
|
||||||
|
|
||||||
/// 二次方程求解器
|
|
||||||
/// -377.8*x^2 + 26040*x + 51120 = ad
|
|
||||||
/// 返回 x > 6.57 的那个解
|
|
||||||
fn solve_quadratic(ad: f64) -> Option<f64> {
|
|
||||||
let a = -377.8;
|
|
||||||
let b = 26040.0;
|
|
||||||
let c = 51120.0 - ad;
|
|
||||||
|
|
||||||
let discriminant = b * b - 4.0 * a * c;
|
|
||||||
if discriminant < 0.0 {
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
|
|
||||||
let sqrt_d = discriminant.sqrt();
|
|
||||||
let x1 = (-b + sqrt_d) / (2.0 * a);
|
|
||||||
let x2 = (-b - sqrt_d) / (2.0 * a);
|
|
||||||
|
|
||||||
// 选择 x > 6.57 的解(只可能有一个解满足这个条件)
|
|
||||||
if x1 > X_BOUNDARY && x1 > 0.0 {
|
|
||||||
Some(x1)
|
|
||||||
} else if x2 > X_BOUNDARY && x2 > 0.0 {
|
|
||||||
Some(x2)
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 计算三次多项式的值
|
|
||||||
/// f(x) = -5.732*x^3 - 131.5*x^2 + 31980*x + 13490
|
|
||||||
fn cubic_value(x: f64) -> f64 {
|
|
||||||
-5.732 * x.powi(3) - 131.5 * x.powi(2) + 31980.0 * x + 13490.0
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 使用二分法求解三次方程 (x <= 6.57)
|
|
||||||
/// 三次方程在 [0, 6.57] 范围内是单调递增的
|
|
||||||
fn solve_cubic_bisection(ad: f64) -> Option<f64> {
|
|
||||||
let mut low = 0.0;
|
|
||||||
let mut high = X_BOUNDARY;
|
|
||||||
|
|
||||||
let target = ad;
|
|
||||||
|
|
||||||
// 检查目标是否在范围内
|
|
||||||
let low_ad = cubic_value(low);
|
|
||||||
let high_ad = cubic_value(high);
|
|
||||||
|
|
||||||
if target < low_ad.min(high_ad) || target > low_ad.max(high_ad) {
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
|
|
||||||
for _i in 0..100 {
|
|
||||||
let mid = (low + high) / 2.0;
|
|
||||||
let mid_ad = cubic_value(mid);
|
|
||||||
|
|
||||||
if (high - low).abs() < 1e-10 {
|
|
||||||
return Some((low + high) / 2.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if mid_ad > target {
|
|
||||||
high = mid;
|
|
||||||
} else {
|
|
||||||
low = mid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Some((low + high) / 2.0)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 主求解函数:根据AD值反解x
|
|
||||||
pub fn solve_for_x(ad: f64) -> Option<f64> {
|
|
||||||
// 如果 AD <= 边界值,使用三次方程 (x <= 6.57)
|
|
||||||
// 如果 AD > 边界值,使用二次方程 (x > 6.57)
|
|
||||||
if ad <= AD_BOUNDARY {
|
|
||||||
return solve_cubic_bisection(ad);
|
|
||||||
}
|
|
||||||
|
|
||||||
// AD > 边界值,使用二次方程
|
|
||||||
solve_quadratic(ad)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 批量求解,用于验证所有解
|
|
||||||
pub fn solve_for_x_all(ad: f64) -> Vec<f64> {
|
|
||||||
let mut results = Vec::new();
|
|
||||||
|
|
||||||
// 三次方程解
|
|
||||||
if let Some(x) = solve_cubic_bisection(ad) {
|
|
||||||
results.push(x);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 二次方程解
|
|
||||||
if let Some(x) = solve_quadratic(ad) {
|
|
||||||
results.push(x);
|
|
||||||
}
|
|
||||||
|
|
||||||
results
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_cubic_forward() {
|
|
||||||
// 测试 x <= 6.57 的正向计算
|
|
||||||
let x = 5.0;
|
|
||||||
let ad = cubic_value(x);
|
|
||||||
println!("x={}, ad={}", x, ad);
|
|
||||||
let solved = solve_for_x(ad).unwrap();
|
|
||||||
println!("solved={}", solved);
|
|
||||||
assert!((solved - x).abs() < 0.01, "x={}, solved={}", x, solved);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_quadratic_forward() {
|
|
||||||
// 测试 x > 6.57 的正向计算
|
|
||||||
let x = 10.0;
|
|
||||||
let ad = -377.8 * x * x + 26040.0 * x + 51120.0;
|
|
||||||
let solved = solve_for_x(ad).unwrap();
|
|
||||||
assert!((solved - x).abs() < 0.01, "x={}, solved={}", x, solved);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_boundary() {
|
|
||||||
// 测试边界值
|
|
||||||
let x = 6.57;
|
|
||||||
let ad_cubic = cubic_value(x);
|
|
||||||
let ad_quad = -377.8 * x * x + 26040.0 * x + 51120.0;
|
|
||||||
|
|
||||||
println!("x=6.57 时三次方程 AD = {:.2}", ad_cubic);
|
|
||||||
println!("x=6.57 时二次方程 AD = {:.2}", ad_quad);
|
|
||||||
println!("边界值 AD_BOUNDARY = {:.2}", AD_BOUNDARY);
|
|
||||||
|
|
||||||
// 边界处两个公式应该有显著差异
|
|
||||||
assert!((ad_cubic - ad_quad).abs() > 100.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_known_values() {
|
|
||||||
// 测试一些已知值
|
|
||||||
let test_cases = [
|
|
||||||
(0.0, cubic_value(0.0)),
|
|
||||||
(3.0, cubic_value(3.0)),
|
|
||||||
(6.0, cubic_value(6.0)),
|
|
||||||
(8.0, -377.8 * 8.0 * 8.0 + 26040.0 * 8.0 + 51120.0),
|
|
||||||
(15.0, -377.8 * 15.0 * 15.0 + 26040.0 * 15.0 + 51120.0),
|
|
||||||
];
|
|
||||||
|
|
||||||
for (x, ad) in test_cases {
|
|
||||||
let solved = solve_for_x(ad).unwrap();
|
|
||||||
assert!((solved - x).abs() < 0.01, "x={}, ad={}, solved={}", x, ad, solved);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -278,16 +278,10 @@ async fn run_grpc_upload(
|
|||||||
angle: message.angle,
|
angle: message.angle,
|
||||||
};
|
};
|
||||||
::log::debug!(
|
::log::debug!(
|
||||||
"devkit: angle={:.2}, magnitude={:.4}, state={}, cop_x={:.4}, cop_y={:.4}, base_x={:.4}, base_y={:.4}, total_press={:.2}, thresh={:.2}",
|
"python pzt angle: seq={} dts_ms={} angle={:.2}",
|
||||||
message.angle,
|
message.seq,
|
||||||
message.magnitude,
|
message.dts_ms,
|
||||||
message.state,
|
message.angle
|
||||||
message.cop_x,
|
|
||||||
message.cop_y,
|
|
||||||
message.base_x,
|
|
||||||
message.base_y,
|
|
||||||
message.total_press,
|
|
||||||
message.threshold
|
|
||||||
);
|
);
|
||||||
app.emit("devkit_pzt_angle", payload)?;
|
app.emit("devkit_pzt_angle", payload)?;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
pub mod ad_solver;
|
|
||||||
mod commands;
|
mod commands;
|
||||||
mod lan_game;
|
mod lan_game;
|
||||||
pub mod log;
|
pub mod log;
|
||||||
|
|||||||
@@ -77,12 +77,11 @@ impl TactileACodec {
|
|||||||
.chunks_exact(2)
|
.chunks_exact(2)
|
||||||
.map(|chunk| {
|
.map(|chunk| {
|
||||||
let raw = u16::from_le_bytes([chunk[0], chunk[1]]) as i32;
|
let raw = u16::from_le_bytes([chunk[0], chunk[1]]) as i32;
|
||||||
|
if raw < 15 {
|
||||||
|
0
|
||||||
|
} else {
|
||||||
raw
|
raw
|
||||||
// if raw < 15 {
|
}
|
||||||
// 0
|
|
||||||
// } else {
|
|
||||||
// raw
|
|
||||||
// }
|
|
||||||
})
|
})
|
||||||
.collect::<Vec<i32>>();
|
.collect::<Vec<i32>>();
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
|||||||
use tokio::time::{self, Duration, MissedTickBehavior};
|
use tokio::time::{self, Duration, MissedTickBehavior};
|
||||||
use tokio_serial::SerialStream;
|
use tokio_serial::SerialStream;
|
||||||
use tokio_util::sync::CancellationToken;
|
use tokio_util::sync::CancellationToken;
|
||||||
use crate::ad_solver::solve_for_x;
|
|
||||||
const AUTO_SUB_INTERVAL: Duration = Duration::from_nanos(16_666_667);
|
const AUTO_SUB_INTERVAL: Duration = Duration::from_nanos(16_666_667);
|
||||||
|
|
||||||
pub enum PollMode<F> {
|
pub enum PollMode<F> {
|
||||||
@@ -316,10 +316,10 @@ where
|
|||||||
{
|
{
|
||||||
let pzt_values = vals.iter().map(|value| *value as f32).collect::<Vec<f32>>();
|
let pzt_values = vals.iter().map(|value| *value as f32).collect::<Vec<f32>>();
|
||||||
if let Ok(analysis) = pzt_processor.get_pzt_analysis(&pzt_values) {
|
if let Ok(analysis) = pzt_processor.get_pzt_analysis(&pzt_values) {
|
||||||
// debug!(
|
debug!(
|
||||||
// "spatial force: angle={:.2}°, magnitude={:.2}, dx={:.2}, dy={:.2}",
|
"spatial force: angle={:.2}°, magnitude={:.2}, dx={:.2}, dy={:.2}",
|
||||||
// analysis.angle_deg, analysis.magnitude, analysis.planar_x, analysis.planar_y
|
analysis.angle_deg, analysis.magnitude, analysis.planar_x, analysis.planar_y
|
||||||
// );
|
);
|
||||||
if PztProcessor::should_report(&analysis) {
|
if PztProcessor::should_report(&analysis) {
|
||||||
spatial_force = Some(HudSpatialForce {
|
spatial_force = Some(HudSpatialForce {
|
||||||
angle_deg: analysis.angle_deg,
|
angle_deg: analysis.angle_deg,
|
||||||
@@ -333,7 +333,6 @@ where
|
|||||||
{
|
{
|
||||||
let summary = vals.iter().copied().sum::<i32>();
|
let summary = vals.iter().copied().sum::<i32>();
|
||||||
let force = raw_to_g1(summary as u32);
|
let force = raw_to_g1(summary as u32);
|
||||||
|
|
||||||
push_devkit_frame(&app, vals.as_slice(), frame.dts_ms(), force);
|
push_devkit_frame(&app, vals.as_slice(), frame.dts_ms(), force);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -359,8 +358,6 @@ fn build_display_values(
|
|||||||
) -> Option<Vec<i32>> {
|
) -> Option<Vec<i32>> {
|
||||||
let summary = values.iter().copied().sum::<i32>();
|
let summary = values.iter().copied().sum::<i32>();
|
||||||
let force = raw_to_g1(summary as u32);
|
let force = raw_to_g1(summary as u32);
|
||||||
// let force_solve = solve_for_x(summary as f64)?;
|
|
||||||
// println!("force_solve: {force_solve}");
|
|
||||||
chart_state.record_summary(force as f32);
|
chart_state.record_summary(force as f32);
|
||||||
chart_state.record_pressure_matrix(values);
|
chart_state.record_pressure_matrix(values);
|
||||||
chart_state.record_spatial_force(spatial_force);
|
chart_state.record_spatial_force(spatial_force);
|
||||||
@@ -420,12 +417,12 @@ fn infer_matrix_shape(len: usize) -> (u32, u32) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn raw_to_g1(raw: u32) -> f64 {
|
fn raw_to_g1(raw: u32) -> f64 {
|
||||||
const X: [u32; 13] = [
|
const X: [u32; 12] = [
|
||||||
0, 16811, 41350, 79241, 94615, 127446, 149559, 175900, 195056, 237852, 267810, 322472, 378511,
|
0, 84402, 117218, 140176, 159126, 175812, 191484, 208758, 224703, 252448, 302361, 352703,
|
||||||
];
|
];
|
||||||
|
|
||||||
const Y: [f64; 13] = [
|
const Y: [f64; 12] = [
|
||||||
0.0, 57.0, 97.0, 197.0, 257.0, 357.0, 457.0, 557.0, 657.0, 857.0, 1057.0, 1557.0, 2057.0,
|
0.0, 160.0, 260.0, 360.0, 460.0, 560.0, 660.0, 760.0, 860.0, 1060.0, 1560.0, 2060.0,
|
||||||
];
|
];
|
||||||
|
|
||||||
let n = X.len();
|
let n = X.len();
|
||||||
|
|||||||
@@ -61,7 +61,6 @@
|
|||||||
export let replayProgress = 0;
|
export let replayProgress = 0;
|
||||||
export let replayFileName = "";
|
export let replayFileName = "";
|
||||||
export let replayFrameInfo = "";
|
export let replayFrameInfo = "";
|
||||||
export let showPrecisionTestPanel = false;
|
|
||||||
export let sessionStartedAt: number = Date.now();
|
export let sessionStartedAt: number = Date.now();
|
||||||
|
|
||||||
let stagePlaneEl: HTMLDivElement | undefined;
|
let stagePlaneEl: HTMLDivElement | undefined;
|
||||||
@@ -90,8 +89,6 @@
|
|||||||
$: replayToggleButtonText = replayIsPlaying ? replayPauseLabel : replayPlayLabel;
|
$: replayToggleButtonText = replayIsPlaying ? replayPauseLabel : replayPlayLabel;
|
||||||
$: replayProgressPercent = Math.round(Math.min(1, Math.max(0, replayProgress)) * 100);
|
$: replayProgressPercent = Math.round(Math.min(1, Math.max(0, replayProgress)) * 100);
|
||||||
$: summaryCurveVisible = summary.points.length > 0 && summary.points.some((value) => Number.isFinite(value) && Math.abs(value) >= 0.0001);
|
$: summaryCurveVisible = summary.points.length > 0 && summary.points.some((value) => Number.isFinite(value) && Math.abs(value) >= 0.0001);
|
||||||
$: splitMatrixTitle = locale === "zh-CN" ? "数字矩阵" : "Matrix";
|
|
||||||
$: splitMatrixHint = locale === "zh-CN" ? "实时压力数据 / 数字矩阵" : "Live pressure matrix";
|
|
||||||
$: isModelStage = stageViewMode === "model3d";
|
$: isModelStage = stageViewMode === "model3d";
|
||||||
|
|
||||||
function toPxNumber(rawValue: string): number {
|
function toPxNumber(rawValue: string): number {
|
||||||
@@ -117,7 +114,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
panelZoneTopPx = showPrecisionTestPanel ? 24 : 16;
|
panelZoneTopPx = 16;
|
||||||
|
|
||||||
const panelZoneBottomPx = panelZoneEl ? toPxNumber(getComputedStyle(panelZoneEl).bottom) : 0;
|
const panelZoneBottomPx = panelZoneEl ? toPxNumber(getComputedStyle(panelZoneEl).bottom) : 0;
|
||||||
const zoneHeight = Math.max(0, stagePlaneEl.clientHeight - panelZoneTopPx - panelZoneBottomPx);
|
const zoneHeight = Math.max(0, stagePlaneEl.clientHeight - panelZoneTopPx - panelZoneBottomPx);
|
||||||
@@ -191,43 +188,6 @@
|
|||||||
<ModelStage {locale} {modelUrl} />
|
<ModelStage {locale} {modelUrl} />
|
||||||
{/key}
|
{/key}
|
||||||
</div>
|
</div>
|
||||||
{:else if showPrecisionTestPanel}
|
|
||||||
<div class="split-game-wrap">
|
|
||||||
<section class="split-panel split-matrix-panel">
|
|
||||||
<header class="split-panel-head">
|
|
||||||
<p>{splitMatrixTitle}</p>
|
|
||||||
<span>{splitMatrixHint}</span>
|
|
||||||
</header>
|
|
||||||
<div class="split-panel-body">
|
|
||||||
{#key `${matrixRows}x${matrixCols}:${colorMapPreset}:split`}
|
|
||||||
<PressureMatrixViewer
|
|
||||||
{summary}
|
|
||||||
{pressureMatrix}
|
|
||||||
{matrixRows}
|
|
||||||
{matrixCols}
|
|
||||||
{rangeMin}
|
|
||||||
{rangeMax}
|
|
||||||
{colorMapPreset}
|
|
||||||
{matrixDisplayMode}
|
|
||||||
{locale}
|
|
||||||
showStatsPanel={true}
|
|
||||||
/>
|
|
||||||
{/key}
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="split-panel split-breakout-panel">
|
|
||||||
<NeonBreakoutArena
|
|
||||||
{locale}
|
|
||||||
{pressureMatrix}
|
|
||||||
{matrixRows}
|
|
||||||
{matrixCols}
|
|
||||||
{rangeMin}
|
|
||||||
{rangeMax}
|
|
||||||
{colorMapPreset}
|
|
||||||
/>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
{:else}
|
{:else}
|
||||||
<div class="canvas-wrap">
|
<div class="canvas-wrap">
|
||||||
{#key `${matrixRows}x${matrixCols}:${colorMapPreset}`}
|
{#key `${matrixRows}x${matrixCols}:${colorMapPreset}`}
|
||||||
@@ -247,7 +207,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if showConfigPanel && !showPrecisionTestPanel && !isModelStage}
|
{#if showConfigPanel && !isModelStage}
|
||||||
<div class="config-panel-wrap">
|
<div class="config-panel-wrap">
|
||||||
<ConfigPanel
|
<ConfigPanel
|
||||||
bind:matrixRows
|
bind:matrixRows
|
||||||
@@ -269,7 +229,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if !showPrecisionTestPanel && !isModelStage}
|
{#if !isModelStage}
|
||||||
<div class="panel-zone" bind:this={panelZoneEl}>
|
<div class="panel-zone" bind:this={panelZoneEl}>
|
||||||
<aside class="side-rail left-rail">
|
<aside class="side-rail left-rail">
|
||||||
<div class="rail-stack" bind:this={leftStackEl}>
|
<div class="rail-stack" bind:this={leftStackEl}>
|
||||||
@@ -377,7 +337,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if replayHasData && !showPrecisionTestPanel && !isModelStage}
|
{#if replayHasData && !isModelStage}
|
||||||
<aside class="replay-floating-panel" class:is-left={replaySide === "left"} class:is-right={replaySide === "right"}>
|
<aside class="replay-floating-panel" class:is-left={replaySide === "left"} class:is-right={replaySide === "right"}>
|
||||||
<div class="replay-panel-head">
|
<div class="replay-panel-head">
|
||||||
<div class="replay-panel-title-group">
|
<div class="replay-panel-title-group">
|
||||||
@@ -415,7 +375,7 @@
|
|||||||
</aside>
|
</aside>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if !showPrecisionTestPanel && !isModelStage}
|
{#if !isModelStage}
|
||||||
<div class="stage-bottom-overlay">
|
<div class="stage-bottom-overlay">
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,9 +4,6 @@
|
|||||||
ConnectionState,
|
ConnectionState,
|
||||||
HudConfigLink,
|
HudConfigLink,
|
||||||
HudNoticeTone,
|
HudNoticeTone,
|
||||||
LocaleCode,
|
|
||||||
MatrixDisplayMode,
|
|
||||||
StageViewMode,
|
|
||||||
WindowControlAction
|
WindowControlAction
|
||||||
} from "$lib/types/hud";
|
} from "$lib/types/hud";
|
||||||
|
|
||||||
@@ -32,12 +29,7 @@
|
|||||||
export let configLinksLabel = "";
|
export let configLinksLabel = "";
|
||||||
export let configLinks: HudConfigLink[] = [];
|
export let configLinks: HudConfigLink[] = [];
|
||||||
export let matrixViewLabel = "";
|
export let matrixViewLabel = "";
|
||||||
export let matrixViewNumericLabel = "";
|
|
||||||
export let matrixViewDotsLabel = "";
|
export let matrixViewDotsLabel = "";
|
||||||
export let matrixDisplayMode: MatrixDisplayMode = "dots";
|
|
||||||
export let stageModeLabel = "";
|
|
||||||
export let stageModeWebglLabel = "";
|
|
||||||
export let stageModeModelLabel = "";
|
|
||||||
export let stageViewMode: StageViewMode = "webgl";
|
export let stageViewMode: StageViewMode = "webgl";
|
||||||
export let connectActionLabel = "";
|
export let connectActionLabel = "";
|
||||||
export let disconnectActionLabel = "";
|
export let disconnectActionLabel = "";
|
||||||
@@ -107,10 +99,6 @@
|
|||||||
dispatch("configlink", linkId);
|
dispatch("configlink", linkId);
|
||||||
}
|
}
|
||||||
|
|
||||||
function emitMatrixDisplayToggle(): void {
|
|
||||||
dispatch("matrixdisplaytoggle", matrixDisplayMode !== "dots");
|
|
||||||
}
|
|
||||||
|
|
||||||
function emitStageModeChange(nextMode: StageViewMode): void {
|
function emitStageModeChange(nextMode: StageViewMode): void {
|
||||||
dispatch("stagemodechange", nextMode);
|
dispatch("stagemodechange", nextMode);
|
||||||
}
|
}
|
||||||
@@ -209,46 +197,6 @@
|
|||||||
{/each}
|
{/each}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="matrix-switch-wrap" aria-label={matrixViewLabel}>
|
|
||||||
<span class="matrix-switch-label">{matrixViewLabel}</span>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="matrix-switch-btn"
|
|
||||||
class:is-active={matrixDisplayMode === "dots"}
|
|
||||||
role="switch"
|
|
||||||
aria-checked={matrixDisplayMode === "dots"}
|
|
||||||
aria-label={matrixViewDotsLabel}
|
|
||||||
on:click={emitMatrixDisplayToggle}
|
|
||||||
>
|
|
||||||
<span class="matrix-switch-track" aria-hidden="true">
|
|
||||||
<span class="matrix-switch-thumb"></span>
|
|
||||||
</span>
|
|
||||||
<span class="matrix-switch-copy">{matrixDisplayMode === "dots" ? matrixViewDotsLabel : matrixViewNumericLabel}</span>
|
|
||||||
</button>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="stage-mode-switch" aria-label={stageModeLabel}>
|
|
||||||
<span class="stage-mode-label">{stageModeLabel}</span>
|
|
||||||
<div class="stage-mode-options" role="group" aria-label={stageModeLabel}>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="stage-mode-btn"
|
|
||||||
class:is-active={stageViewMode === "webgl"}
|
|
||||||
on:click={() => emitStageModeChange("webgl")}
|
|
||||||
>
|
|
||||||
{stageModeWebglLabel}
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="stage-mode-btn"
|
|
||||||
class:is-active={stageViewMode === "model3d"}
|
|
||||||
on:click={() => emitStageModeChange("model3d")}
|
|
||||||
>
|
|
||||||
{stageModeModelLabel}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="state-card" aria-label={connectionLabel}>
|
<section class="state-card" aria-label={connectionLabel}>
|
||||||
<span class="state-dot" class:ok={connectionTone === "ok"} class:warn={connectionTone === "warn"}></span>
|
<span class="state-dot" class:ok={connectionTone === "ok"} class:warn={connectionTone === "warn"}></span>
|
||||||
<span class="state-label">{connectionLabel}</span>
|
<span class="state-label">{connectionLabel}</span>
|
||||||
@@ -517,149 +465,6 @@
|
|||||||
background: var(--panel-surface);
|
background: var(--panel-surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-switch-wrap,
|
|
||||||
.stage-mode-switch {
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 0.4rem;
|
|
||||||
min-block-size: 2rem;
|
|
||||||
border: 1px solid var(--panel-line);
|
|
||||||
border-radius: 999px;
|
|
||||||
padding: 0.16rem 0.22rem 0.16rem 0.56rem;
|
|
||||||
background: var(--panel-surface);
|
|
||||||
}
|
|
||||||
|
|
||||||
.matrix-switch-label,
|
|
||||||
.stage-mode-label {
|
|
||||||
color: var(--panel-text-dim);
|
|
||||||
font-size: 0.66rem;
|
|
||||||
letter-spacing: 0.08em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
line-height: 1;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.matrix-switch-btn {
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 0.42rem;
|
|
||||||
min-block-size: 1.62rem;
|
|
||||||
border: 1px solid rgb(var(--hud-border-rgb) / 0.26);
|
|
||||||
border-radius: 999px;
|
|
||||||
padding: 0.18rem 0.28rem 0.18rem 0.22rem;
|
|
||||||
background: rgb(var(--hud-surface-deep-rgb) / 0.84);
|
|
||||||
color: rgb(var(--hud-text-main-rgb) / 0.92);
|
|
||||||
cursor: pointer;
|
|
||||||
transition:
|
|
||||||
border-color 180ms ease,
|
|
||||||
box-shadow 180ms ease,
|
|
||||||
background-color 180ms ease,
|
|
||||||
color 180ms ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.matrix-switch-btn:hover {
|
|
||||||
border-color: rgb(var(--hud-cyan-rgb) / 0.4);
|
|
||||||
}
|
|
||||||
|
|
||||||
.matrix-switch-btn.is-active {
|
|
||||||
border-color: rgb(var(--hud-cyan-rgb) / 0.5);
|
|
||||||
background:
|
|
||||||
linear-gradient(180deg, rgb(var(--hud-surface-alt-rgb) / 0.94), rgb(var(--hud-surface-rgb) / 0.9)),
|
|
||||||
radial-gradient(circle at 50% 0, rgb(var(--hud-cyan-rgb) / 0.12), transparent 60%);
|
|
||||||
box-shadow:
|
|
||||||
inset 0 0 0 1px rgb(var(--hud-text-main-rgb) / 0.05),
|
|
||||||
0 0 12px rgb(var(--hud-cyan-rgb) / 0.12);
|
|
||||||
}
|
|
||||||
|
|
||||||
.matrix-switch-track {
|
|
||||||
position: relative;
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
inline-size: 2.2rem;
|
|
||||||
block-size: 1.2rem;
|
|
||||||
border-radius: 999px;
|
|
||||||
padding: 0.14rem;
|
|
||||||
background: rgb(var(--hud-surface-rgb) / 0.9);
|
|
||||||
box-shadow: inset 0 0 0 1px rgb(var(--hud-border-rgb) / 0.24);
|
|
||||||
transition:
|
|
||||||
background-color 180ms ease,
|
|
||||||
box-shadow 180ms ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.matrix-switch-btn.is-active .matrix-switch-track {
|
|
||||||
background: rgb(var(--hud-cyan-rgb) / 0.18);
|
|
||||||
box-shadow: inset 0 0 0 1px rgb(var(--hud-cyan-rgb) / 0.18);
|
|
||||||
}
|
|
||||||
|
|
||||||
.matrix-switch-thumb {
|
|
||||||
inline-size: 0.92rem;
|
|
||||||
block-size: 0.92rem;
|
|
||||||
border-radius: 50%;
|
|
||||||
background: rgb(var(--hud-text-main-rgb) / 0.96);
|
|
||||||
box-shadow:
|
|
||||||
0 1px 4px rgb(0 0 0 / 0.26),
|
|
||||||
0 0 10px rgb(var(--hud-text-main-rgb) / 0.12);
|
|
||||||
transform: translateX(0);
|
|
||||||
transition:
|
|
||||||
transform 180ms ease,
|
|
||||||
background-color 180ms ease,
|
|
||||||
box-shadow 180ms ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.matrix-switch-btn.is-active .matrix-switch-thumb {
|
|
||||||
transform: translateX(0.96rem);
|
|
||||||
background: rgb(var(--hud-cyan-rgb) / 0.96);
|
|
||||||
box-shadow:
|
|
||||||
0 1px 4px rgb(0 0 0 / 0.26),
|
|
||||||
0 0 12px rgb(var(--hud-cyan-rgb) / 0.22);
|
|
||||||
}
|
|
||||||
|
|
||||||
.matrix-switch-copy {
|
|
||||||
font-size: 0.74rem;
|
|
||||||
letter-spacing: 0.04em;
|
|
||||||
white-space: nowrap;
|
|
||||||
line-height: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stage-mode-options {
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 0.18rem;
|
|
||||||
padding: 0.16rem;
|
|
||||||
border: 1px solid rgb(var(--hud-border-rgb) / 0.24);
|
|
||||||
border-radius: 999px;
|
|
||||||
background: rgb(var(--hud-surface-deep-rgb) / 0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.stage-mode-btn {
|
|
||||||
min-block-size: 1.38rem;
|
|
||||||
border: 1px solid transparent;
|
|
||||||
border-radius: 999px;
|
|
||||||
padding: 0.18rem 0.54rem;
|
|
||||||
background: transparent;
|
|
||||||
color: rgb(var(--hud-text-dim-rgb) / 0.88);
|
|
||||||
font: inherit;
|
|
||||||
font-size: 0.7rem;
|
|
||||||
letter-spacing: 0.04em;
|
|
||||||
cursor: pointer;
|
|
||||||
transition:
|
|
||||||
border-color 180ms ease,
|
|
||||||
background-color 180ms ease,
|
|
||||||
color 180ms ease,
|
|
||||||
box-shadow 180ms ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stage-mode-btn:hover {
|
|
||||||
color: rgb(var(--hud-text-main-rgb) / 0.96);
|
|
||||||
}
|
|
||||||
|
|
||||||
.stage-mode-btn.is-active {
|
|
||||||
border-color: rgb(var(--hud-cyan-rgb) / 0.42);
|
|
||||||
background: rgb(var(--hud-cyan-rgb) / 0.14);
|
|
||||||
color: rgb(var(--hud-text-main-rgb) / 0.98);
|
|
||||||
box-shadow: 0 0 12px rgb(var(--hud-cyan-rgb) / 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.state-dot {
|
.state-dot {
|
||||||
inline-size: 0.55rem;
|
inline-size: 0.55rem;
|
||||||
block-size: 0.55rem;
|
block-size: 0.55rem;
|
||||||
|
|||||||
@@ -28,7 +28,6 @@
|
|||||||
HudSignalSeries,
|
HudSignalSeries,
|
||||||
HudSummary,
|
HudSummary,
|
||||||
LocaleCode,
|
LocaleCode,
|
||||||
MatrixDisplayMode,
|
|
||||||
SerialConnectResult,
|
SerialConnectResult,
|
||||||
SerialExportResult,
|
SerialExportResult,
|
||||||
SerialRecordStateResult,
|
SerialRecordStateResult,
|
||||||
@@ -69,7 +68,6 @@
|
|||||||
rangeMaxLabel: "最大值",
|
rangeMaxLabel: "最大值",
|
||||||
colorMapLabel: "映射颜色",
|
colorMapLabel: "映射颜色",
|
||||||
matrixViewLabel: "矩阵模式",
|
matrixViewLabel: "矩阵模式",
|
||||||
matrixViewNumericLabel: "数字矩阵",
|
|
||||||
matrixViewDotsLabel: "点矩阵",
|
matrixViewDotsLabel: "点矩阵",
|
||||||
stageModeLabel: "渲染模式",
|
stageModeLabel: "渲染模式",
|
||||||
stageModeWebglLabel: "WebGL",
|
stageModeWebglLabel: "WebGL",
|
||||||
@@ -131,7 +129,6 @@
|
|||||||
rangeMaxLabel: "Max",
|
rangeMaxLabel: "Max",
|
||||||
colorMapLabel: "Color Map",
|
colorMapLabel: "Color Map",
|
||||||
matrixViewLabel: "Matrix Mode",
|
matrixViewLabel: "Matrix Mode",
|
||||||
matrixViewNumericLabel: "Numeric",
|
|
||||||
matrixViewDotsLabel: "Dots",
|
matrixViewDotsLabel: "Dots",
|
||||||
stageModeLabel: "Render Mode",
|
stageModeLabel: "Render Mode",
|
||||||
stageModeWebglLabel: "WebGL",
|
stageModeWebglLabel: "WebGL",
|
||||||
@@ -231,7 +228,6 @@
|
|||||||
let isWindowMaximized = false;
|
let isWindowMaximized = false;
|
||||||
let activeConfigLinkId = "stream-on";
|
let activeConfigLinkId = "stream-on";
|
||||||
let isConfigPanelOpen = false;
|
let isConfigPanelOpen = false;
|
||||||
let isPrecisionTestOpen = false;
|
|
||||||
let hasSignalData = false;
|
let hasSignalData = false;
|
||||||
let signalPanels: HudSignalPanel[] = buildInactivePanels();
|
let signalPanels: HudSignalPanel[] = buildInactivePanels();
|
||||||
let summary: HudSummary = buildEmptySummary();
|
let summary: HudSummary = buildEmptySummary();
|
||||||
@@ -243,7 +239,6 @@
|
|||||||
let rangeMin = DEFAULT_PRESSURE_RANGE_MIN;
|
let rangeMin = DEFAULT_PRESSURE_RANGE_MIN;
|
||||||
let rangeMax = DEFAULT_PRESSURE_RANGE_MAX;
|
let rangeMax = DEFAULT_PRESSURE_RANGE_MAX;
|
||||||
let colorMapPreset: PressureColorMapPreset = "emerald";
|
let colorMapPreset: PressureColorMapPreset = "emerald";
|
||||||
let matrixDisplayMode: MatrixDisplayMode = "dots";
|
|
||||||
let stageViewMode: StageViewMode = "webgl";
|
let stageViewMode: StageViewMode = "webgl";
|
||||||
let replayFrames: ReplayFrame[] = [];
|
let replayFrames: ReplayFrame[] = [];
|
||||||
let replayCurrentIndex = 0;
|
let replayCurrentIndex = 0;
|
||||||
@@ -286,7 +281,6 @@
|
|||||||
locale,
|
locale,
|
||||||
activeConfigLinkId,
|
activeConfigLinkId,
|
||||||
isConfigPanelOpen,
|
isConfigPanelOpen,
|
||||||
isPrecisionTestOpen,
|
|
||||||
devkitEnabled,
|
devkitEnabled,
|
||||||
isDevKitConfigOpen
|
isDevKitConfigOpen
|
||||||
);
|
);
|
||||||
@@ -1089,7 +1083,6 @@
|
|||||||
currentLocale: LocaleCode,
|
currentLocale: LocaleCode,
|
||||||
activeId: string,
|
activeId: string,
|
||||||
isSettingsOpen: boolean,
|
isSettingsOpen: boolean,
|
||||||
isPrecisionOpen: boolean,
|
|
||||||
isDevKitEnabled: boolean,
|
isDevKitEnabled: boolean,
|
||||||
isDevKitOpen: boolean
|
isDevKitOpen: boolean
|
||||||
): HudConfigLink[] {
|
): HudConfigLink[] {
|
||||||
@@ -1098,13 +1091,11 @@
|
|||||||
? {
|
? {
|
||||||
streamOn: "打开",
|
streamOn: "打开",
|
||||||
streamOff: "关闭",
|
streamOff: "关闭",
|
||||||
precisionTest: "游戏",
|
|
||||||
settings: "参数"
|
settings: "参数"
|
||||||
}
|
}
|
||||||
: {
|
: {
|
||||||
streamOn: "Open",
|
streamOn: "Open",
|
||||||
streamOff: "Close",
|
streamOff: "Close",
|
||||||
precisionTest: "Game",
|
|
||||||
settings: "Setup"
|
settings: "Setup"
|
||||||
};
|
};
|
||||||
const devkitLabel = currentLocale === "zh-CN" ? "开发工具" : "DevKit";
|
const devkitLabel = currentLocale === "zh-CN" ? "开发工具" : "DevKit";
|
||||||
@@ -1122,12 +1113,6 @@
|
|||||||
tone: "orange",
|
tone: "orange",
|
||||||
active: activeId === "stream-off"
|
active: activeId === "stream-off"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: "precision-test",
|
|
||||||
label: labels.precisionTest,
|
|
||||||
tone: "lime",
|
|
||||||
active: isPrecisionOpen
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "settings",
|
id: "settings",
|
||||||
label: labels.settings,
|
label: labels.settings,
|
||||||
@@ -1698,30 +1683,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleConfigLink(event: CustomEvent<string>): void {
|
function handleConfigLink(event: CustomEvent<string>): void {
|
||||||
if (event.detail === "precision-test") {
|
|
||||||
stageViewMode = "webgl";
|
|
||||||
isPrecisionTestOpen = !isPrecisionTestOpen;
|
|
||||||
isConfigPanelOpen = false;
|
|
||||||
isDevKitConfigOpen = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event.detail === "settings") {
|
if (event.detail === "settings") {
|
||||||
stageViewMode = "webgl";
|
stageViewMode = "webgl";
|
||||||
isPrecisionTestOpen = false;
|
|
||||||
isConfigPanelOpen = !isConfigPanelOpen;
|
isConfigPanelOpen = !isConfigPanelOpen;
|
||||||
isDevKitConfigOpen = false;
|
isDevKitConfigOpen = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event.detail === "devkit") {
|
if (event.detail === "devkit") {
|
||||||
isPrecisionTestOpen = false;
|
|
||||||
isConfigPanelOpen = false;
|
isConfigPanelOpen = false;
|
||||||
isDevKitConfigOpen = !isDevKitConfigOpen;
|
isDevKitConfigOpen = !isDevKitConfigOpen;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
isPrecisionTestOpen = false;
|
|
||||||
isConfigPanelOpen = false;
|
isConfigPanelOpen = false;
|
||||||
isDevKitConfigOpen = false;
|
isDevKitConfigOpen = false;
|
||||||
activeConfigLinkId = event.detail;
|
activeConfigLinkId = event.detail;
|
||||||
@@ -1796,14 +1770,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleMatrixDisplayToggle(event: CustomEvent<boolean>): void {
|
|
||||||
matrixDisplayMode = event.detail ? "dots" : "numeric";
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleStageModeChange(event: CustomEvent<StageViewMode>): void {
|
function handleStageModeChange(event: CustomEvent<StageViewMode>): void {
|
||||||
stageViewMode = event.detail;
|
stageViewMode = event.detail;
|
||||||
if (stageViewMode === "model3d") {
|
if (stageViewMode === "model3d") {
|
||||||
isPrecisionTestOpen = false;
|
|
||||||
isConfigPanelOpen = false;
|
isConfigPanelOpen = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1914,12 +1883,7 @@
|
|||||||
configLinksLabel={uiCopy.configLinksLabel}
|
configLinksLabel={uiCopy.configLinksLabel}
|
||||||
refreshPortsLabel={uiCopy.refreshPortsLabel}
|
refreshPortsLabel={uiCopy.refreshPortsLabel}
|
||||||
matrixViewLabel={uiCopy.matrixViewLabel}
|
matrixViewLabel={uiCopy.matrixViewLabel}
|
||||||
matrixViewNumericLabel={uiCopy.matrixViewNumericLabel}
|
|
||||||
matrixViewDotsLabel={uiCopy.matrixViewDotsLabel}
|
matrixViewDotsLabel={uiCopy.matrixViewDotsLabel}
|
||||||
{matrixDisplayMode}
|
|
||||||
stageModeLabel={uiCopy.stageModeLabel}
|
|
||||||
stageModeWebglLabel={uiCopy.stageModeWebglLabel}
|
|
||||||
stageModeModelLabel={uiCopy.stageModeModelLabel}
|
|
||||||
{stageViewMode}
|
{stageViewMode}
|
||||||
connectActionLabel={uiCopy.connectActionLabel}
|
connectActionLabel={uiCopy.connectActionLabel}
|
||||||
disconnectActionLabel={uiCopy.disconnectActionLabel}
|
disconnectActionLabel={uiCopy.disconnectActionLabel}
|
||||||
@@ -1942,7 +1906,6 @@
|
|||||||
on:localechange={handleLocaleChange}
|
on:localechange={handleLocaleChange}
|
||||||
on:portchange={handlePortChange}
|
on:portchange={handlePortChange}
|
||||||
on:configlink={handleConfigLink}
|
on:configlink={handleConfigLink}
|
||||||
on:matrixdisplaytoggle={handleMatrixDisplayToggle}
|
|
||||||
on:stagemodechange={handleStageModeChange}
|
on:stagemodechange={handleStageModeChange}
|
||||||
on:serialrefresh={handleSerialRefresh}
|
on:serialrefresh={handleSerialRefresh}
|
||||||
on:serialconnect={handleSerialConnect}
|
on:serialconnect={handleSerialConnect}
|
||||||
@@ -1963,7 +1926,6 @@
|
|||||||
bind:rangeMin
|
bind:rangeMin
|
||||||
bind:rangeMax
|
bind:rangeMax
|
||||||
bind:colorMapPreset
|
bind:colorMapPreset
|
||||||
bind:matrixDisplayMode
|
|
||||||
{stageViewMode}
|
{stageViewMode}
|
||||||
configPanelTitle={uiCopy.configPanelTitle}
|
configPanelTitle={uiCopy.configPanelTitle}
|
||||||
configPanelHint={uiCopy.configPanelHint}
|
configPanelHint={uiCopy.configPanelHint}
|
||||||
@@ -1994,7 +1956,6 @@
|
|||||||
{spatialForce}
|
{spatialForce}
|
||||||
{devkitSpatialForce}
|
{devkitSpatialForce}
|
||||||
showConfigPanel={isConfigPanelOpen}
|
showConfigPanel={isConfigPanelOpen}
|
||||||
showPrecisionTestPanel={isPrecisionTestOpen}
|
|
||||||
{summary}
|
{summary}
|
||||||
on:replaytoggle={handleReplayToggle}
|
on:replaytoggle={handleReplayToggle}
|
||||||
on:replaystop={handleReplayStop}
|
on:replaystop={handleReplayStop}
|
||||||
@@ -2003,7 +1964,7 @@
|
|||||||
on:replayclose={handleReplayClose}
|
on:replayclose={handleReplayClose}
|
||||||
on:configclose={() => (isConfigPanelOpen = false)}
|
on:configclose={() => (isConfigPanelOpen = false)}
|
||||||
>
|
>
|
||||||
{#if !isPrecisionTestOpen && stageViewMode === "webgl"}
|
{#if stageViewMode === "webgl"}
|
||||||
<section class="range-scale" aria-label="Signal Range">
|
<section class="range-scale" aria-label="Signal Range">
|
||||||
<p class="range-label">{locale === "zh-CN" ? "范围" : "Range"}</p>
|
<p class="range-label">{locale === "zh-CN" ? "范围" : "Range"}</p>
|
||||||
<div class="range-track">
|
<div class="range-track">
|
||||||
|
|||||||
Reference in New Issue
Block a user