Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
GSoC 2019 Work Product | Aakash S. Mallik | PSLab Desktop | FOSSASIA

Aakash S. Mallik | @AakashMallik | FOSSASIA

Google summer of Code banner

Overview

The PSLab project already had an android application and a PyQt based desktop application. The main problem with the PyQt application was that it was pretty hard to maintain due to poor developer support and it was too complex for everyday users. My proposal was to reimplement it using the ElectronJS framework and simplify the business logic in the code that is used to communicate with the device. I also wanted to make the app user-friendly by making use of modern UI frameworks like ReactJS and material UI. It also provided me an opportunity to explore the possibility of outsourcing thread blocking operations to python which had a well supported and mature scientific computation ecosystem.

Major Areas of My Contributions and Goals Achieved

My major area of code contribution was a reimplementation of the old pyQt app using the new ElectronJS framework. As our app also needed to communicate with the PSLab Board, we needed a way to make use of python script under the hood.

  • My main goal was to think of a stable and reliable architecture that could enable us to achieve this.
  • After that, my secondary goal was to reimplement the instruments that we have in PSLab android app, out of which I was able to implement all the major instruments and a few minor ones.
  • My third objective was to make the UI easy to use and similar to android, which I was able to do successfully.

Community Bonding:

  • Discussed viable architecture that could be used to revamp the app
  • Did a brief study of the different electronics instruments that would be recreated in the app
  • Combed through the code base of the old pyQt app
  • Made a basic boilerplate for the project

Phase 1:

  • Worked on recreating the Oscilloscope instrument
  • Optimized the existing python script logic
  • Explored viable UI/UX options for the new app
  • Worked on reimplementing basic instruments - Power source, Wave generator
  • Engaged newbies and helped them understand the new implementation

Oscilloscope Image

Wave generator

Power Souce Image

Phase 2:

  • Started working on modifying the UI to make it look similar to android
  • Worked on optimizing implemented instruments
  • Refactored code written in Phase 1
  • Implemented robotic arm
  • Implemented Multimeter

Phase 2 UI

Robotic arm

Multimeter

Phase 3:

  • Implemented Logic Analyser
  • Improved and optimized code implemented in Phase 2
  • Implemented data logging and config saving
  • Implemented playback and config restore feature
  • Improved UI further
  • Worked on documentation and guides

Logic Analyzer

Data logger

Code Contributions:

Outreach Events:

Screencasts

Presentation

Additional Links

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment