# Helios Laser Test Application A simple PyQt6 GUI application for testing and controlling the Helios pulsed laser system. ## Features - **Connection Management**: Connect/disconnect to the laser via RS-232 serial port - **Frequency Control**: Set and query laser pulse frequency (16,700 - 125,000 Hz) - **Current Control**: Set and query pump diode current (0 - 7,000 mA) - **Pulse Mode**: Select from three pulse modes: - Single Pulse - Continuous Gating - Continuous Pulsing - **Laser Enable/Disable**: Control laser emission with dedicated buttons - **System Information**: Query and display controller and head serial numbers - **Power Monitoring**: Query and display output power in mW - **Message Log**: Real-time log of operations and responses ## Usage ### Starting the Application ```bash /opt/scanengine-3/run_helios_test.sh ``` Or directly: ```bash source /opt/srasenv/bin/activate cd /opt/scanengine-3 python3 helios_test_app.py ``` ### Connection 1. **Select Serial Port**: Choose the appropriate serial port from the dropdown (e.g., `/dev/ttyUSB0`) 2. **Refresh Ports**: Click "Refresh Ports" to update the list of available ports 3. **Connect**: Click "Connect" to establish connection with the laser 4. Once connected, the status will show "Connected to [port]" in green ### Control Tab #### Frequency Control - Enter desired frequency (16,700 - 125,000 Hz) - Click **Set Frequency** to apply the setting - Click **Query** to read the current frequency from the laser #### Current Control - Enter desired pump diode current (0 - 7,000 mA) - Click **Set Current** to apply the setting - Click **Query** to read the current from the laser #### Pulse Mode Control - Select desired pulse mode from dropdown - Click **Set Mode** to apply the setting #### Laser Control - **Enable Laser**: Starts laser emission - **Disable Laser**: Stops laser emission - **Query Status**: Checks if laser is currently enabled/disabled ### Monitor Tab #### System Information - **Query All**: Queries all available parameters from the laser - **Controller SN**: Displays controller serial number - **Head SN**: Displays laser head serial number #### Power Monitoring - **Query Power**: Reads output power in mW #### Messages - Real-time log of all operations and responses - Useful for debugging and verifying commands ## RS-232 Communication Settings The driver uses the following settings (automatic, no configuration needed): - **Baud Rate**: 9600 - **Data Bits**: 8 - **Parity**: None - **Stop Bits**: 1 - **Flow Control**: None - **Timeout**: 1 second ## Command Reference The application uses the following Helios commands: | Command | Function | Range | |---------|----------|-------| | `FP=value` | Set frequency period (ns) | 8,000 - 60,000 | | `FP?` | Query frequency period | - | | `PC=value` | Set pump current (mA) | 0 - 7,000 | | `PC?` | Query pump current | - | | `PM=value` | Set pulse mode (0-2) | 0=Single, 1=Gate, 2=Continuous | | `LE=value` | Set laser enable (0/1) | 0=Off, 1=On | | `LE?` | Query laser enable status | - | | `PO?` | Query output power (mW) | - | | `SN?` | Query controller serial | - | | `HSN?` | Query head serial | - | ## Safety Notes ⚠️ **IMPORTANT**: Please follow these safety precautions when using the laser: 1. **Door Switch**: Ensure the laser enclosure door switch is closed during operation 2. **Laser Disable Pin**: The laser disable pin (pin 3) must be properly connected 3. **Residual Emission**: The laser may emit when the door switch is open - always treat it as potentially dangerous 4. **Start Low**: When setting current, start at lower values and increase gradually 5. **Monitor Power**: Use the "Query Power" function to verify safe output levels ## Troubleshooting ### Cannot Connect - Verify the correct serial port is selected - Check that the USB-to-RS-232 adapter is properly connected - Ensure no other application is using the same port - Try clicking "Refresh Ports" to update the list ### Commands Not Working - Verify the laser is connected (status shows green) - Check that the laser is not in error state - Review the message log for error details ### Serial Numbers Not Showing - The laser may not respond if not properly powered - Check the serial connection - Try the "Query All" button to get diagnostic information ## Files - `helios_test_app.py` - Main application - `run_helios_test.sh` - Launcher script - `hardware/helios_laser.py` - Helios driver - `docs/protocols/helios_comms_protocol.pdf` - Official Helios documentation ## Requirements - Python 3.8+ - PyQt6 - pyserial - Helios laser with RS-232 interface - USB-to-RS-232 adapter (if using modern computer)