146 lines
4.6 KiB
Markdown
146 lines
4.6 KiB
Markdown
# 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)
|