Wednesday, October 14, 2015

Alternatives to Chrome for FBNavigator

As of September 1, Google has disabled the NPAPI plug-in interface required to support Java applets in the Chrome browser, saying "If you want to use a website that uses an NPAPI plugin, you’ll need to use a different web browser." (https://support.google.com/chrome/answer/6213033). (Does this qualify as "evil" yet?)
If you want to access the FBNavigator feature of the Holobloc website, you can use the Firefox browser with the Java plug-in for Windows (https://support.mozilla.org/en-US/kb/use-java-plugin-to-view-interactive-content) or the IcedTea plugin for Ubuntu.
For Raspbian, you can use the IcedTea plugin for the IceWeasel browser:
sudo apt-get install openjdk-7-jdk 
sudo apt-get install iceweasel 
sudo apt-get install icedtea-7-plugin
This also enables it for the Epiphany browser that comes with the NOOBS installation.

Saturday, September 19, 2015

Simplified command line formats

The command line formats for launching Systems and Devices have been simplified by taking advantage of the new system.jar and device.jar files, respectively. See http://www.holobloc.com/doc/fbdk2/systest.htm#Remote and http://www.holobloc.com/doc/fbdk2/systest.htm#System for details.

FBDK 2.3 Release

A new release (FBDK 2.3, version 20150919) is now available. To facilitate reuse of the codebase on multiple platforms, this release encapsulates platform dependencies in "manifest" files contained in the corresponding *.jar files, which now include fbrt.jar, editor.jar, system.jar and device.jar.
In order to obtain proper launching of this new configuration, you will need to replace your existing fbdk2.jar with the new version available at http://www.holobloc.com/fbdk2/. Updates of the other files will then occur upon launching the fbdk2.jar file.
Descriptions of the new features will be posted to this blog with links to corresponding pages of the online documentation.

Friday, June 5, 2015

Drag and Drop (DnD) Tagging

The latest (20150602) FBDK2 self-update now supports DnD tagging of FB instances in the Tagged Data Design Pattern. See the documentation at http://www.holobloc.com/doc/despats/tags/tags.htm#Tools for details.
Previous versions of the FBDK tried to support automatic application of tags under certain conditions, but this turned out to result in unanticipated and sometimes undesirable results.

Monday, June 1, 2015

RPi Test #6: Bit Toggling

In this example (GPIO_TEST6), at each press of a pushbutton the state of an LED is toggled from OFF to ON or vice versa.
  • The Tagged Data and Local Multicast design patterns are reused from the previous example to simplify the system configuration.
  • An instance of the E_F_TRIG function block (FB) type is used to detect the keypress by issuing an EO event when a falling edge of the button state (BUTTON.RD_1) occurs.
  • The TRIGGER.EO event fires the OUTPUT.REQ event block to toggle the OUTPUT.OUT value, which is then passed to the LED.
    • The OUTPUT block is an instance of the E_TOGGLE FB type, whose interface and implementation are documented in the second and third figures below.
    • Although the E_TOGGLE implementation is modeled using instances of the E_SWITCH and E_SR FB types, the actual implementation uses optimized Java code.


xxx

Tuesday, May 26, 2015

RPi Test #5: Separation of Concerns

In the previous example, you may have noticed the beginning of "diagram clutter", where the I/O interface blocks were taking up significantly more space than the actual program logic. This problem can become severe with more complicated logic and a greater amount of I/O, such that it can become extremely difficult to even figure out what the logic is supposed to be doing.
As shown in the current example (GPIO_TEST5), we can solve this problem by applying the principle of Separation of Concerns:
  • First, as shown below, we move all the I/O interface blocks into one or more Resources separate from the program logic (here the resource is named IO for obvious reasons).
  • Then we add Local Multicast blocks to transmit inputs to and receive outputs from other Resources.
  • The Tagged Data design pattern support in the FBDK helps to keep the use of Local Multicast channels consistent among Resources.
Now we add Local Multicast blocks to the LOGIC resource to receive data from inputs and transmit the results of the control logic to outputs. Notice the reduction of diagram clutter:
In the next example, we'll take advantage of this reduced clutter to make room for more complicated control logic.

Monday, May 25, 2015

RPi GPIO Test #4: Signal Inversion

In the previous example, a pushbutton was "soft wired" to an LED in such a way that the LED was ON when the pushbutton was up, and OFF when the pushbutton was down. This is the reverse of what you would usually expect, so in the present system configuration (GPIO_TEST4.sys), the signal is inverted using an instance of the FB_NOT function block type so that the LED is ON when the pushbutton is down.