Initial commit: merge nuescan, pymso, pybbd202, and pypewpewhops into scanengine-3

- Merged four separate hardware control projects into unified platform
- Created unified requirements.txt with all dependencies
- Added comprehensive .gitignore
- Added project overview README

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Thomas Ales [M S E]
2026-01-16 20:11:31 -06:00
commit fc43fbe4b0
65 changed files with 19127 additions and 0 deletions
+484
View File
@@ -0,0 +1,484 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>nueScanWindow</class>
<widget class="QMainWindow" name="nueScanWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>830</width>
<height>681</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QGridLayout" name="topGridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>ThorLABS MLS Stage Serial:</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QLineEdit" name="le_stage_serial"/>
</item>
<item row="0" column="3" colspan="2">
<widget class="QPushButton" name="btn_toggle_mls">
<property name="text">
<string>Connect</string>
</property>
</widget>
</item>
<item row="0" column="5" colspan="2">
<widget class="QPushButton" name="btn_toggle_status_window">
<property name="text">
<string>Status</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>T3R COM Port:</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QComboBox" name="combo_com_ports"/>
</item>
<item row="1" column="3" colspan="2">
<widget class="QPushButton" name="btn_refresh_com">
<property name="text">
<string>Refresh Serial Devices</string>
</property>
</widget>
</item>
<item row="1" column="5" colspan="2">
<widget class="QPushButton" name="button_connect_com">
<property name="text">
<string>Connect</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="7">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QLabel" name="label_44">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>Scan Details and Settings:</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_50">
<property name="text">
<string>Coordinate and Spacing Settings:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="label_45">
<property name="text">
<string>X-Begin [mm]</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="le_x_start_coord"/>
</item>
<item row="5" column="2">
<widget class="QLabel" name="label_46">
<property name="text">
<string>X-Delta [mm]</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QLineEdit" name="le_x_delta"/>
</item>
<item row="5" column="3">
<widget class="QLabel" name="label_47">
<property name="text">
<string>Y-Begin [mm]</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="6" column="3">
<widget class="QLineEdit" name="le_y_start_coord"/>
</item>
<item row="5" column="4">
<widget class="QLabel" name="label_48">
<property name="text">
<string>Y-Delta [mm]</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="6" column="4">
<widget class="QLineEdit" name="le_y_delta"/>
</item>
<item row="5" column="5">
<widget class="QLabel" name="label_49">
<property name="text">
<string>Row
Spacing [mm]:</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="6" column="5">
<widget class="QComboBox" name="cb_row_spacing"/>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_52">
<property name="text">
<string>Angular Settings:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLabel" name="label_53">
<property name="text">
<string># of Scans:</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QComboBox" name="cb_num_scans"/>
</item>
<item row="8" column="2">
<widget class="QLabel" name="label_54">
<property name="text">
<string>Equivalent
Angular Spacing</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="9" column="2">
<widget class="QLabel" name="l_scan_angle_spacing">
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_58">
<property name="text">
<string>File Suffix:</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
</property>
</widget>
</item>
<item row="11" column="1" colspan="3">
<widget class="QLineEdit" name="le_file_suffix"/>
</item>
<item row="12" column="0" colspan="7">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="13" column="0" colspan="2">
<widget class="QLabel" name="label_100">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>Timing and Size Information:</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
</property>
</widget>
</item>
<item row="14" column="1">
<widget class="QLabel" name="label_173">
<property name="text">
<string>Points Per Row</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="15" column="1">
<widget class="QLabel" name="l_scan_ppr">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="14" column="2">
<widget class="QLabel" name="label_174">
<property name="text">
<string>Rows Per Scan</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="15" column="2">
<widget class="QLabel" name="l_scan_rps">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="14" column="3">
<widget class="QLabel" name="label_175">
<property name="text">
<string>Scans In Set</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="15" column="3">
<widget class="QLabel" name="l_scan_sis">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="14" column="4">
<widget class="QLabel" name="label_176">
<property name="text">
<string>Total Records</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="15" column="4">
<widget class="QLabel" name="l_scan_total_records">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="14" column="5">
<widget class="QLabel" name="label_177">
<property name="text">
<string>Total Points
Captured</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="15" column="5">
<widget class="QLabel" name="l_scan_total_points">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="14" column="6">
<widget class="QLabel" name="label_178">
<property name="text">
<string>Current Size
On Disk</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
</widget>
</item>
<item row="15" column="6">
<widget class="QLabel" name="l_scan_estimated_size">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>0GB</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="16" column="0" colspan="7">
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="17" column="4" colspan="3">
<widget class="QPushButton" name="btn_begin_scanning">
<property name="font">
<font>
<pointsize>20</pointsize>
</font>
</property>
<property name="text">
<string>Begin Scan</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="neuScanMBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>830</width>
<height>30</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
<property name="title">
<string>File</string>
</property>
<addaction name="actionShow_Oscope_Settings"/>
</widget>
<widget class="QMenu" name="menuView">
<property name="title">
<string>View</string>
</property>
<addaction name="actionDigital_IO_State"/>
<addaction name="separator"/>
<addaction name="actionMLS203_Information"/>
<addaction name="actionTransfer_System_Editor"/>
<addaction name="separator"/>
<addaction name="actionHelios_Settings"/>
<addaction name="actionGenesis_Settings"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuView"/>
</widget>
<widget class="QStatusBar" name="neuScanSBar"/>
<action name="actionShow_Oscope_Settings">
<property name="text">
<string>Show Oscope Settings</string>
</property>
</action>
<action name="actionDigital_IO_State">
<property name="text">
<string>Digital IO State</string>
</property>
</action>
<action name="actionMLS203_Information">
<property name="text">
<string>MLS203 Information</string>
</property>
</action>
<action name="actionTransfer_System_Editor">
<property name="text">
<string>Transfer System Editor</string>
</property>
</action>
<action name="actionHelios_Settings">
<property name="text">
<string>Helios Settings</string>
</property>
</action>
<action name="actionGenesis_Settings">
<property name="text">
<string>Genesis Settings</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>