Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

pyILPER2

Abstract

pyILPER version 2.x is the successor of pyILPER 1.x. Version 2.x allows you to use multiple interfaces (PIL-Box, TCP/IP, Socket) and includes a more flexible version of the scope.

Version 1.x of pyILPER is no longer being developed; only bug fixes are being made.

Since pyILPER 2 is a beta version, its use is recommended only for people with experience using version 1 of pyILPER.

This document provides a concise overview of the changes in pyILPER 2.0 compared to version 1.9. There are only a few, but important, differences from version 1.x

It is the result of a nearly two-year-long, comprehensive overhaul of the software.

Changes in Operating Requirements

pyILPER2 requires now:

  • Python >= 3.11
  • Pyside6 >= 6.8
  • pySerial >= 3.5 and LIFUTILS 2.0.1

Qt5 is not supported anymore.

pyILPER Loop

pyILPER creates a virtual loop of emulated HP-IL devices, interfaces, and two scope probes. The loop can be started or stopped from the file menu. The loop has either the state "stopped", or "waiting for connections" or "running". In the pyILPER configuration window, you can configure the loop to start automatically,

Interfaces

Interfaces can be configured at an arbitrary position in the loop in the "Virtual HP-IL devices configuration" window. Each interface has its onw tab, where it is configured. Please note that each additional interface will slow down the throughput of the loop considerably. As before, the interface types PIL-Box. TCP/IP and socket are available. The PIL-Box interface has an additional configuration option, that tells the box whether to operate in controller on or controller off mode.

The PIL-Box tty speed of 9600 baud and its special protocol used at this baudrate is not supported any more.

Interfaces have four states that are indicated by a status light in the status bar: "inactive" (black), "disconnected" (red), "waiting for connection" (yellow) and "connected" (green). The loop goes only into "running" state if all interfaces are connected.

After the loop has started, each active interfaces goes into "waiting for connection" state. It goes to "connected" state if either a read and write network connection (TCP/IP, Socket interface) was established or a PIL-Box serial device was found and initialized successfully.

A PIL-Box interface operates only in "autoreconnect" mode, that was introduced with pyILPER 1.9.

A TCP/IP interface is connected only after the first frame has been sent to the remote host. Therefore, you should generate some traffic on the loop (e.g., RESTORE IO on the HP-71 or powering the HP-41 on and off) to bring the TCP/IP interfaces to the “connected” state.

An interface can be deactivated (bridged) if the loop is stopped.

Scope and Probes

As before, the scope is always the first tab that cannot be moved or deleted. By default, there are two probe devices, "Probe1" and "Probe2" which have no tab. The probes can be seen either in the "Virtual HP-IL device status" window or the "Virtual HP-IL device configuration". The position of the probes can be moved, but they can not be deleted. The probes are activated in the scope tab. Frames captured by "Probe1" are shown in uppercase letters and frames captured by "Probe2" are shown in lowercase letters.

In pyILPER 1.x the probes were always at a fixed position (after the interface and after the last device).

The scope now has a button to clear the display.

Devices

New devices are now enabled by default.

Software Status

This is a development verision that is almost feature complete.

Installing and Running the software

  • Download the zip file (green Code button)

  • Create a Python virtual environment with the software listed above

  • Unpack the zip file and go to the top-level directory of the unpacked package

Now run from the command line:

 python -m pyilper2 -v

This show the program version.

The configuration of pyILPER2 is entirely separated from the configuration of version 1.x. You can migrate the configuration of your pyILPER 1.9 production version into a pyILPER 2.0 compatible format:

 python -m pyilper2 --migrate

Now run the program:

 pyilper -m pyilper2

If you did not have a pyilper 2.0 configuration before, a default configuration with one interface of type PIL-Box is created. pyILPER will show some quick start information about how to configure the program for first-time use. Follow the installation steps as described and start the loop from the file menu.

Configuration with Multiple Interfaces

If your pyILPER configuration contains several interfaces, there are a few things to keep in mind. It is recommended that you activate the pyILPER virtual loop in the following order:

  • Connect all USB devices

  • Start the loop. Check, whether all USB devices connect. If their status stays "connecting" then the serial device in the interface configuration does not exist.

  • Start any programs for virtual HP-IL over TCP/IP devices (e.g. IlVideo80.exe) and press their START button.

  • Start the HP-IL controller last! Please follow the instructions above regarding TCP/IP connections.

Performance

The loop throughput of the pyILPER virtual loop of version 2 is the same as that of version 1 with an identical interface/devices configuration.

Each additional interface significantly slows down the virtual loop. Every frame sent by an interface takes a certain amount of time (travel time) to be fully received. This travel time adds up for each interface. For example, if the throughput of a PIL-Box device is 2,000 frames/s, the travel time for each frame is 0.5 ms. If you have 4 interfaces of this type, the travel time sums up to 2 ms. This will reduce the maximum speed of the pyILPER virtual loop to approximately 500 frames/s, assuming all other overhead is negligible.

This is different with the (real) HP-IL loop. Here, the HP-IL chip built into each device in the loop can determine, after receiving just 3 bits of a frame, whether it can begin forwarding the frame to the next device. This reduces the time lag introduced by devices in the loop considerably.

Acknowledgements

Much code was taken from ILPER for Windows (Copyright (c) 2008-2013 J-F Garnier, Visual C++ version by Christoph Gießelink 2016). The terminal emulator code was taken from the pyqterm console widget written by Henning Schroeder. The virtual TCP/IP support of pyILPER was significantly improved by Christoph Gießelink who also provided many other improvements. The virtual HP7470A plotter engine was derived from the HP2XX software (Heinz W. Werntges, Martin Kroeker). Parts of the HP82162A printer emulation were taken from Eric Smith's Nonpareil emulator.

Metadata

Release files for pyilper2 2.0.0b1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for pyilper2 2.0.0b1
File Interpreter ABI Platform
pyilper2-2.0.0b1-py3-none-any.whl Python 3 none any Details

Release files / pyilper2-2.0.0b1-py3-none-any.whl

Download URL pyilper2-2.0.0b1-py3-none-any.whl
Size 286.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9727258e5211b6c570234066b175a59d5220beb1d96b45c77f3db4a03c2085d4
BLAKE2b-256 checksum
How to use checksums
f89b6959cd84d8cfb74df48ac8432ebafd50676c2307ee158a696d278de8bb8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Security for pyilper2 2.0.0b1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page