At its core, qdotweb is a Flask wrapper for the PyVISA communication package.
The goal is to build a system where all instrument control is done via HTTP methods.
The requirements are fairly loose; the number of instruments is relatively small (<10), no more than a few clients need access to the instruments, and the request rates are no more than 100Hz.
- Clients can write instrument control software in any language with access to HTTP.
- Multiple clients can access the same hardware without conflict over which client controls the resource.
- Multiple requests can be sent asyncronously on the client side to speed up data collection.
Basic communication (connect, close, read, write, query) and client access using the Flask Development server.
- Blocking using file creation/process IDs to prevent multiple clients from trying to access the same VISA resource.
- Deployment using something other than the Flask development server. The Flask server is only able to handle one request at a time, while leaving others waiting. In the end, you should only have to wait if the instrument you want to use (or GPIB interface you want to use) is blocked by a lock file.
- Security. Since these instruments are connected to thousands of dollars of equipment and irreplaceable samples, we need some decent security. Maybe some sort of username, password, session id type of system.
- Functions to handle reading of lists from instruments (wrap those that already exist in VISA).