A native macOS application for controlling the FNIRSI DPS-150 programmable power supply via serial communication.
⚠️ Work in Progress: This application is currently under active development. Some features may be incomplete or subject to change. Use at your own risk.
Note: This is a standalone Flutter application. For the Python library, see the DPS-150 Python Library repository.
- Automatic Device Detection: Automatically scans USB ports and connects to DPS-150 devices
- Live Monitoring: Real-time display of voltage, current, power, and temperature
- Voltage/Current Control: Adjustable sliders and text inputs for precise control
- Protection Settings: Configure over-voltage, over-current, over-power, over-temperature, and low-voltage protection
- Preset Groups: Save and load up to 6 preset configurations
- Native macOS UI: Beautiful Cupertino design matching macOS aesthetics
- macOS 10.14 or later
- DPS-150 device connected via USB
- Go to the Releases page
- Download the latest
dps150_control-macos.zipfile - Extract the ZIP file
- Move
dps150_control.appto your Applications folder - Launch the app from Applications
Note: On first launch, macOS may show a security warning. Go to System Preferences > Security & Privacy and click "Open Anyway" if needed.
If you want to build the app yourself:
-
Install Flutter (if not already installed):
# Follow instructions at https://flutter.dev/docs/get-started/install/macos -
Navigate to the project directory:
cd DPS-150-Control -
Install dependencies:
flutter pub get
-
Run the app:
flutter run -d macos
This project uses GitHub Actions to automatically build and release the app when tags are pushed:
-
Create a release tag:
git tag v1.0.0 git push origin v1.0.0
-
GitHub Actions will automatically:
- Build the macOS app using Flutter
- Create a ZIP archive
- Create a GitHub release with the built app attached
The workflow is defined in .github/workflows/build-and-release.yml and triggers on tags matching v*.
To build the app locally:
-
Build the app:
flutter build macos --release
-
The built app will be in:
build/macos/Build/Products/Release/dps150_control.app -
Create a distributable archive (optional):
cd build/macos/Build/Products/Release zip -r dps150_control-macos.zip dps150_control.app
- Launch the app
- The app will automatically scan for DPS-150 devices
- If a device is found, it will automatically connect
- If no device is found, you can manually select a port from the Connection tab
- Live Monitoring: View real-time voltage, current, power, and temperature
- Voltage Control: Adjust target voltage using the slider or text input
- Current Control: Adjust target current (current limit) using the slider or text input
- Output Toggle: Enable or disable the power supply output
- Apply Settings: Apply the configured voltage and current settings
- Protection Settings: Configure all protection limits (OVP, OCP, OPP, OTP, LVP)
- Preset Groups: View and load preset groups (1-6)
- Device Information: View device model, hardware version, and firmware version
- Connection Status: View current connection status
- Auto-connect Toggle: Enable/disable automatic connection on startup
- Port Selection: Manually select a serial port if auto-detection fails
- Device Information: View connected device information
- Check that the DPS-150 is connected via USB
- Verify the device appears in System Information > USB
- Try manually selecting the port from the Connection tab
- Check that the device description contains "AT32" or "Virtual Com Port"
- Ensure no other application is using the serial port
- Try disconnecting and reconnecting the USB cable
- Restart the app
- Check macOS System Preferences > Security & Privacy for serial port permissions
If you see permission errors:
- Go to System Preferences > Security & Privacy > Privacy
- Add the app to the list of applications allowed to access serial ports
- Restart the app
Releases are automatically created via GitHub Actions when version tags are pushed. Each release includes:
- Pre-built macOS application (
dps150_control-macos.zip) - Release notes (auto-generated from commits)
- Source code for the tagged version
To create a new release:
- Update the version in
pubspec.yaml - Commit and push your changes
- Create and push a version tag:
git tag v1.0.0 && git push origin v1.0.0 - The GitHub Actions workflow will automatically build and publish the release
DPS-150-Control/
├── lib/
│ ├── main.dart # App entry point
│ ├── models/ # Data models
│ ├── services/ # Protocol, serial, device services
│ ├── providers/ # State management
│ ├── screens/ # UI screens
│ ├── widgets/ # Reusable widgets
│ └── utils/ # Constants and utilities
├── macos/ # macOS-specific configuration
├── test/ # Test files
└── pubspec.yaml # Dependencies
provider: State managementliquid_flutter: UI componentsfl_chart: Charting library for time-series graphs- Platform channels: Native serial communication (macOS)
MIT License
- Based on the DPS-150 Python Library implementation
- Protocol reference from the JavaScript implementation by cho45
