2
0
Fork 0

Added most content

This commit is contained in:
Willem Cazander 2020-01-03 21:14:21 +01:00
parent 8b9afa66ce
commit ade8feb556
27 changed files with 1063 additions and 6 deletions

View file

@ -6,7 +6,11 @@
title: ForwardFire
subtitle: ''
description: ''
keywords: pulsefire,java,vasc,x4o
keywords:
- pulsefire
- java
- vasc
- x4o
author: Willem
language: en
timezone: Europe/Amsterdam
@ -27,9 +31,14 @@ public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
code_dir: code
i18n_dir: :lang
skip_render:
- _posts/Emscripten-webgl-imgui-site-demo/test/ff-site.asm.js
- _posts/Emscripten-webgl-imgui-site-demo/test/ff-site.data
- _posts/Emscripten-webgl-imgui-site-demo/test/ff-site.html
- _posts/Emscripten-webgl-imgui-site-demo/test/ff-site.js
- _posts/Emscripten-webgl-imgui-site-demo/test/ff-site.js.mem
# Writing
new_post_name: :title.md # File name of new posts
@ -41,7 +50,7 @@ external_link:
exclude: ''
filename_case: 0
render_drafts: false
post_asset_folder: false
post_asset_folder: true
relative_link: false
future: true
highlight:

View file

@ -0,0 +1,10 @@
---
title: Converted site to hexo
date: 2020-01-03 17:25:50
tags:
- hexo
- website
---
Today converted my website to hexo see; https://hexo.io/
Converting the content went without a problem and the themeing was also not complex to modify.

View file

@ -0,0 +1,127 @@
---
title: Cross Unit Converter test
date: 2018-01-18 21:01:43
tags:
- java
- unit-converter
---
### Unit groups
![Unit groups](unitxc-groups.png "Unit groups")
### Building groups
``` java
/**
*
*
* @author Willem Cazander
* @version 1.0 Oct 17, 2015
*/
public class UnitXCModuleKelvin implements UnitXCConfigModule {
public static final String GROUP_ID = "kelvin";
public static final String GROUP_BASE_TYPE_ID = "K";
private static final String[] GROUP_QUANTITIES = {"thermodynamic_temperature"};
public static final String TYPE_KELVIN_ID = GROUP_BASE_TYPE_ID;
public static final String TYPE_KELVIN_NAME = GROUP_ID;
public static final String TYPE_KELVIN_FLAG = buildFlag(GROUP_ID,TYPE_KELVIN_NAME);
private static final String TYPE_KELVIN_WIKI = "Kelvin";
public static final String TYPE_CELSIUS_ID = "°C";
public static final String TYPE_CELSIUS_NAME = "celsius";
public static final String TYPE_CELSIUS_FLAG = buildFlag(GROUP_ID,TYPE_CELSIUS_NAME);
private static final double TYPE_CELSIUS_OFFSET = 273.15;
private static final String TYPE_CELSIUS_WIKI = "Celsius";
public static final String TYPE_FAHRENHEIT_ID = "°F";
public static final String TYPE_FAHRENHEIT_NAME = "fahrenheit";
public static final String TYPE_FAHRENHEIT_FLAG = buildFlag(GROUP_ID,TYPE_FAHRENHEIT_NAME);
private static final double TYPE_FAHRENHEIT_OFFSET = 459.67;
private static final Fraction TYPE_FAHRENHEIT_FRACTION = Fraction.getFraction(5,9);
private static final String TYPE_FAHRENHEIT_WIKI = "Fahrenheit";
public static final String TYPE_RANKINE_ID = "°R";
public static final String TYPE_RANKINE_NAME = "rankine";
public static final String TYPE_RANKINE_FLAG = buildFlag(GROUP_ID,TYPE_RANKINE_NAME);
private static final String TYPE_RANKINE_WIKI = "Rankine_scale";
public static final String TYPE_ROMER_ID = "Rø";
public static final String TYPE_ROMER_NAME = "rømer";
public static final String TYPE_ROMER_FLAG = buildFlag(GROUP_ID,TYPE_ROMER_NAME);
public static final String TYPE_ROMER_ALIAS_NAME = "romer";
public static final String TYPE_ROMER_ALIAS_FLAG = buildFlag(GROUP_ID,TYPE_ROMER_ALIAS_NAME);
private static final Fraction TYPE_ROMER_FRACTION = Fraction.getFraction(40,21);
private static final double TYPE_ROMER_FRACTION_OFFSET = 7.5;
private static final String TYPE_ROMER_WIKI = "Rømer_scale";
@Override
public void configModule(UnitXCConfigBuilder builder) {
builder.createUnitGroupBase(GROUP_ID)
.addQuantityIds(GROUP_QUANTITIES)
.setBaseTypeId( TYPE_KELVIN_ID)
.createSIUnitTypes()
.setId( TYPE_KELVIN_ID)
.setName( TYPE_KELVIN_NAME)
.addTypeFlag( TYPE_KELVIN_FLAG)
.setWebLinkWiki(TYPE_KELVIN_WIKI)
.build()
.createSIUnitTypes()
.setId( TYPE_CELSIUS_ID)
.setName( TYPE_CELSIUS_NAME)
.addTypeFlag( TYPE_CELSIUS_FLAG)
.setWebLinkWiki(TYPE_CELSIUS_WIKI)
.createToBaseConverterSteps().offsetUp(TYPE_CELSIUS_OFFSET).build()
.createFromBaseConverterSteps().offsetDown(TYPE_CELSIUS_OFFSET).build()
.build()
.createSIUnitTypes()
.setId( TYPE_FAHRENHEIT_ID)
.setName( TYPE_FAHRENHEIT_NAME)
.addTypeFlag( TYPE_FAHRENHEIT_FLAG)
.addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL)
.setWebLinkWiki( TYPE_FAHRENHEIT_WIKI)
.createToBaseConverterSteps()
.offsetUp( TYPE_FAHRENHEIT_OFFSET)
.multiply( TYPE_FAHRENHEIT_FRACTION)
.build()
.createFromBaseConverterSteps()
.multiply( TYPE_FAHRENHEIT_FRACTION.invert())
.offsetDown( TYPE_FAHRENHEIT_OFFSET)
.build()
.build()
.createSIUnitTypes()
.setId( TYPE_RANKINE_ID)
.setName( TYPE_RANKINE_NAME)
.addTypeFlag ( TYPE_RANKINE_FLAG)
.setWebLinkWiki( TYPE_RANKINE_WIKI)
.createToBaseConverterSteps().multiply(TYPE_FAHRENHEIT_FRACTION).build()
.createFromBaseConverterSteps().multiply(TYPE_FAHRENHEIT_FRACTION.invert()).build()
.build()
.createSIUnitTypes()
.setId( TYPE_ROMER_ID)
.setName( TYPE_ROMER_NAME)
.addTypeFlag( TYPE_ROMER_FLAG)
.setWebLinkWiki( TYPE_ROMER_WIKI)
.createToBaseConverterSteps()
.offsetUp( TYPE_CELSIUS_OFFSET)
.multiply( TYPE_ROMER_FRACTION)
.offsetUp( TYPE_ROMER_FRACTION_OFFSET)
.build()
.createFromBaseConverterSteps()
.offsetDown( TYPE_ROMER_FRACTION_OFFSET)
.multiply( TYPE_ROMER_FRACTION.invert())
.offsetDown( TYPE_CELSIUS_OFFSET)
.build()
.build()
.createSIUnitTypes()
.setAliasOfType( TYPE_ROMER_ID)
.setId( TYPE_ROMER_ALIAS_NAME)
.setName( TYPE_ROMER_ALIAS_NAME)
.addTypeFlag( TYPE_ROMER_ALIAS_FLAG)
.build()
.build()
;
}
}
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

View file

@ -0,0 +1,182 @@
---
title: Emscripten webgl/imgui site demo
date: 2017-01-07 11:11:22
tags:
- webgl
- imgui
---
Created and compiled some c++ code for doing a website in imgui on top of webgl;
Launch: [Demo](test/ff-site.html)
My main.cpp looks like this;
``` c++
//============================================================================
// Name : main.cpp
// Author : Willem Cazander
//============================================================================
#include "page/PageWindow.h"
#include "page/PageController.h"
#include "site/FFSiteBackground.h"
#include "site/FFSiteDebug.h"
#include "imgui_impl_sdl.h"
#include "SOIL.h"
#ifdef __EMSCRIPTEN__
#include "emscripten.h"
#endif
extern "C" {
void ff_browser_add_resize_handler(void (*handlerFunc)(int newWidth, int newHeight));
void ff_browser_add_popstate_handler(void (*handlerFunc)(char* hrefHash));
void ff_browser_pushstate(const char* hrefHash);
void ff_browser_openlink(const char* url);
}
void onWindowResize(int newWidth, int newHeight) {
printf("Browser resized to %dx%d.\n", newWidth, newHeight);
#ifdef __EMSCRIPTEN__
emscripten_set_canvas_size(newWidth, newHeight); // This probably needs that any extra elements are removed from the default shell.html.
#endif
SDL_SetWindowSize(PAGE_WINDOW.window, newWidth, newHeight);
}
void onWindowPopState(char* hrefHash) {
printf("popstate url: %s\n", hrefHash);
PAGE_WINDOW.setPageCurrent(PAGE_WINDOW.findPage(hrefHash));
#ifdef __EMSCRIPTEN__
free(newUrl);
#endif
}
void renderLoop(void) {
ImGui_ImplSdl_ProcessEvents(&PAGE_WINDOW.windowRun);
ImGui_ImplSdl_NewFrame(PAGE_WINDOW.window);
PAGE_WINDOW.draw();
glViewport(0, 0, (int) ImGui::GetIO().DisplaySize.x, (int) ImGui::GetIO().DisplaySize.y);
glClearColor(PAGE_WINDOW.backgroundClearColor.x, PAGE_WINDOW.backgroundClearColor.y, PAGE_WINDOW.backgroundClearColor.z, PAGE_WINDOW.backgroundClearColor.w);
glClear(GL_COLOR_BUFFER_BIT);
ImGui::Render();
SDL_GL_SwapWindow(PAGE_WINDOW.window);
}
void initSiteContent() {
FFSiteDebug* siteDebug = new FFSiteDebug();
PageController* page;
const char * exampleCode = R"EOS(
page = PAGE_WINDOW.addPage("pulsefire","PulseFire");
page->buildText("Pulsefire is software for the arduino.");
page->buildText("Embedded flash support:")->setFont(SMALL);
page->buildImage("data/pulsefire-flash.png")->setSize(300,300);
page->buildText("Custom multi output pwm:")->setFont(SMALL);
page->buildImage("data/pulsefire-pwm.png")->setSize(300,300);
)EOS";
page = PAGE_WINDOW.addPage("home","Home");
PAGE_WINDOW.setPageCurrent(page);
page->buildText("Welcome the forwardfire.net website.");
page->buildText("Feature")->setFont(HEADER_SUB);
page->buildText("Source in C++14")->setBullet()->setColor(ImVec4(1.0f,0.0f,1.0f,1.0f));
page->buildText("UI of ImGui webgl")->setBullet()->setColor(ImVec4(1.0f,1.0f,0.0f,1.0f));
page->buildText("Compiled by Emscripten")->setBullet()->setColor(ImVec4(0.0f,1.0f,1.0f,1.0f));
page->buildText("Frontend by Me")->setBullet()->setColor(ImVec4(1.0f,0.0f,0.0f,1.0f));
page->buildText("Example page code;")->setFont(SMALL);
page->buildText(exampleCode)->setMultiLine();
page = PAGE_WINDOW.addPage("pulsefire","PulseFire");
page->buildText("Pulsefire is software for the arduino.");
page->buildText("Embedded flash support:")->setFont(SMALL);
page->buildImage("data/pulsefire-flash.png")->setSize(300,300);
page->buildText("Custom multi output pwm:")->setFont(SMALL);
page->buildImage("data/pulsefire-pwm.png")->setSize(300,300);
page = PAGE_WINDOW.addPage("vasc","Vasc");
page->buildText("Old java5 crud lib");
page->buildImage("data/vasc-list.png")->setSize(300,300);
page = PAGE_WINDOW.addPage("test3","Test Page3");
page->buildText("YOyo");
page->buildImage("data/home-tesla.png")->setSize(200,200);
page->buildImage("data/home-pulsefire.png")->setSize(200,200);
page->buildText("YOyo2");
page = PAGE_WINDOW.addPage("404","Page Not Found");
PAGE_WINDOW.setPageNotFound(page);
page->setMenu(false);
page->buildText("Page not found.");
page = PAGE_WINDOW.addPage("debug","Debug");
page->buildText("Experimental debug options.");
page->buildLink("http://www.x4o.org");
page->addComponent(siteDebug);
PAGE_WINDOW.addLayer(siteDebug);
PAGE_WINDOW.addLayer(new FFSiteBackground());
}
int main(void) {
printf("ff-site: boot\n");
printf("ff-site: init video\n");
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
printf("Error: %s\n", SDL_GetError());
return -1;
}
printf("ff-site: init window\n");
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_DisplayMode current;
SDL_GetCurrentDisplayMode(0, &current);
PAGE_WINDOW.window = SDL_CreateWindow("ForwardFire Site",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600,
SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
PAGE_WINDOW.glcontext = SDL_GL_CreateContext(PAGE_WINDOW.window);
// Setup ImGui binding
printf("ff-site: init imgui\n");
ImGui_ImplSdl_Init(PAGE_WINDOW.window);
printf("ff-site: init site\n");
ImGui::GetStyle().FrameRounding = 6;
initSiteContent();
PAGE_WINDOW.printDebug();
PAGE_FONT.loadFonts();
printf("ff-site: started\n");
#ifdef __EMSCRIPTEN__
ff_browser_add_popstate_handler(onWindowPopState);
ff_browser_add_resize_handler(onWindowResize);
PAGE_WINDOW.platformOpenUrl = ff_browser_openlink;
PAGE_WINDOW.platformPageCb = ff_browser_pushstate;
emscripten_set_main_loop(renderLoop, 0, 0);
#else
while (PAGE_WINDOW.windowRun) {
renderLoop();
}
printf("ff-site: shutdown\n");
// Cleanup
ImGui_ImplSdl_Shutdown();
SDL_GL_DeleteContext(PAGE_WINDOW.glcontext);
SDL_DestroyWindow(PAGE_WINDOW.window);
SDL_Quit();
#endif
return EXIT_SUCCESS;
}
```

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

View file

@ -0,0 +1,244 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Emscripten-Generated Code</title>
<style>
body {
font-family: arial;
margin: 0;
padding: none;
}
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
div.emscripten { text-align: center; }
div.emscripten_border { border: 1px solid black; }
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
canvas.emscripten { border: 0px none; }
#emscripten_logo {
display: inline-block;
margin: 0;
}
.spinner {
height: 30px;
width: 30px;
margin: 0;
margin-top: 20px;
margin-left: 20px;
display: inline-block;
vertical-align: top;
-webkit-animation: rotation .8s linear infinite;
-moz-animation: rotation .8s linear infinite;
-o-animation: rotation .8s linear infinite;
animation: rotation 0.8s linear infinite;
border-left: 5px solid rgb(235, 235, 235);
border-right: 5px solid rgb(235, 235, 235);
border-bottom: 5px solid rgb(235, 235, 235);
border-top: 5px solid rgb(120, 120, 120);
border-radius: 100%;
background-color: rgb(189, 215, 46);
}
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(360deg);}
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(360deg);}
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(360deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(360deg);}
}
#status {
display: inline-block;
vertical-align: top;
margin-top: 30px;
margin-left: 20px;
font-weight: bold;
color: rgb(120, 120, 120);
}
#progress {
height: 20px;
width: 30px;
}
#controls {
display: inline-block;
float: right;
vertical-align: top;
margin-top: 30px;
margin-right: 20px;
}
#output {
width: 100%;
height: 200px;
margin: 0 auto;
margin-top: 10px;
border-left: 0px;
border-right: 0px;
padding-left: 0px;
padding-right: 0px;
display: block;
background-color: black;
color: white;
font-family: 'Lucida Console', Monaco, monospace;
outline: none;
}
#status,#controls,#output {
display: none !important;
}
#canvas {
width: 100vw;
height: 100vh;
display: block;
}
div.emscripten_border { border: none; }
</style>
</head>
<body>
<div class="spinner" id='spinner'></div>
<div class="emscripten" id="status">Downloading...</div>
<span id='controls'>
<span><input type="checkbox" id="resize">Resize canvas</span>
<span><input type="checkbox" id="pointerLock" checked>Lock/hide mouse pointer &nbsp;&nbsp;&nbsp;</span>
<span><input type="button" value="Fullscreen" onclick="Module.requestFullScreen(document.getElementById('pointerLock').checked,
document.getElementById('resize').checked)">
</span>
</span>
<div class="emscripten">
<progress value="0" max="100" id="progress" hidden=1></progress>
</div>
<div class="emscripten_border">
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
</div>
<textarea id="output" rows="8"></textarea>
<script type='text/javascript'>
var statusElement = document.getElementById('status');
var progressElement = document.getElementById('progress');
var spinnerElement = document.getElementById('spinner');
var Module = {
preRun: [],
postRun: [],
print: (function() {
var element = document.getElementById('output');
if (element) element.value = ''; // clear browser cache
return function(text) {
if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ');
// These replacements are necessary if you render to raw HTML
//text = text.replace(/&/g, "&amp;");
//text = text.replace(/</g, "&lt;");
//text = text.replace(/>/g, "&gt;");
//text = text.replace('\n', '<br>', 'g');
console.log(text);
if (element) {
element.value += text + "\n";
element.scrollTop = element.scrollHeight; // focus on bottom
}
};
})(),
printErr: function(text) {
if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ');
if (0) { // XXX disabled for safety typeof dump == 'function') {
dump(text + '\n'); // fast, straight to the real console
} else {
console.error(text);
}
},
canvas: (function() {
var canvas = document.getElementById('canvas');
// As a default initial behavior, pop up an alert when webgl context is lost. To make your
// application robust, you may want to override this behavior before shipping!
// See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2
canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false);
return canvas;
})(),
setStatus: function(text) {
if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' };
if (text === Module.setStatus.text) return;
var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
var now = Date.now();
if (m && now - Date.now() < 30) return; // if this is a progress update, skip it if too soon
if (m) {
text = m[1];
progressElement.value = parseInt(m[2])*100;
progressElement.max = parseInt(m[4])*100;
progressElement.hidden = false;
spinnerElement.hidden = false;
} else {
progressElement.value = null;
progressElement.max = null;
progressElement.hidden = true;
if (!text) spinnerElement.style.display = 'none';
}
statusElement.innerHTML = text;
},
totalDependencies: 0,
monitorRunDependencies: function(left) {
this.totalDependencies = Math.max(this.totalDependencies, left);
Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
}
};
Module.setStatus('Downloading...');
window.onerror = function(event) {
// TODO: do not warn on ok events like simulating an infinite loop or exitStatus
Module.setStatus('Exception thrown, see JavaScript console');
spinnerElement.style.display = 'none';
Module.setStatus = function(text) {
if (text) Module.printErr('[post-exception status] ' + text);
};
};
</script>
<script>
var script = document.createElement('script');
script.src = "ff-site.asm.js";
script.onload = function() {
setTimeout(function() {
(function() {
var memoryInitializer = 'ff-site.js.mem';
if (typeof Module['locateFile'] === 'function') {
memoryInitializer = Module['locateFile'](memoryInitializer);
} else if (Module['memoryInitializerPrefixURL']) {
memoryInitializer = Module['memoryInitializerPrefixURL'] + memoryInitializer;
}
var xhr = Module['memoryInitializerRequest'] = new XMLHttpRequest();
xhr.open('GET', memoryInitializer, true);
xhr.responseType = 'arraybuffer';
xhr.send(null);
})();
var script = document.createElement('script');
script.src = "ff-site.js";
document.body.appendChild(script);
}, 1); // delaying even 1ms is enough to allow compilation memory to be reclaimed
};
document.body.appendChild(script);
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,13 @@
---
title: Engine Calculator test
date: 2018-01-29 21:02:41
tags:
- java
- swt
---
Engine calculator demo;
<video width="800" height="600" controls>
<source src="demo-wec-2018-01-29_21-39-35.mkv" type="video/mp4">
Your browser does not support the video tag.
</video>

View file

@ -0,0 +1,10 @@
---
title: JS spa-loader example
date: 2019-11-11 17:44:37
tags:
- spa-loader
- js
- es5
---
Using the npm package; https://www.npmjs.com/package/es5-ff-spa-loader

View file

@ -0,0 +1,29 @@
---
title: Pulsefire 1.0.4 released
date: 2012-07-22 19:57:57
tags:
- pulsefire
- arduino
- java
---
Downloads are on http://download.savannah.nongnu.org/releases/pulsefire/1.0.4/
### Demo setup
![Pulsefire setup](home-pulsefire.png "Pulsefire setup")
### Native flashing
![Pulsefire flash](pulsefire-flash.png "Pulsefire flash")
### Changes
* Changed ptc_Xcnt and ptt_cntX to 16bit so mapping works with values above 255.
* Enabled cit_0a_com gui dropdown box.
* Fixed avr-gcc const warning of pmCmdList array.
* Added more variable filters in data tab panel.
* Improved chip seconds timing from ~96% to ~99.5% relative to atom time.
* Fixed/removed the 50% extra time offset of ptt and ptc 'time' mapping.
(now ptt time step of 6000 is 10min but in real 10min and ~24secs)
* Redone firmware filter options, speed/type are saved and click column header to filter.
* Fixed dial start offset, now relative from start so it is not jumping anymore.
* Improved fire dial tooltip editor support.
* Improved fire qmap table keyboard handling support.

Binary file not shown.

After

Width:  |  Height:  |  Size: 742 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

View file

@ -0,0 +1,85 @@
---
title: Pulsefire 1.1 released
date: 2019-12-05 16:18:43
tags:
- pulsefire
- arduino
- java
---
After an long wait and lots of coding today released pulsefire 1.1.0 for the arduino boards.
Downloads are on http://download.savannah.nongnu.org/releases/pulsefire/1.1.0/
![Pulsefire 1.1 running](pf-release-1.1.0-running.jpg "Pulsefire 1.1 running")
### GUI Demo
Early demo of 1.1 gui;
<video width="800" height="600" controls>
<source src="demo-pulsefire-1.1-2018-01-29_22-07-05.mkv" type="video/mp4">
Your browser does not support the video tag.
</video>
### Changes
* Made dev_volt/amp/temp variable indexed.
* internal PF_VARS inverse nolimit flag.
* Added lcd paging and lcd_defp for default page.
* Added 4 button support with lcd_mode 3.
* Added lcd_plp; programatic lcd page with 4 vars.
* Added info_pwm to readout precalculated pwm data.
* Changed pwm to precalculated data/time steps.
* Dropped pulse_inv/pwm_loop_delta/pwm_tune_cnt options.
* Dropped SF_ENABLE_DIC/_DOC/_PPM/_DEV compile flags.
* Replaced SF_ENABLE_EXT_* with SF_ENABLE_SPI and spi_mode for hardware spi mode.
* Added spi_chips and spi_clock settings.
* Added 32 bit variable support.
* Replaces chip_name_id to sys_id as 32 bit integer.
* Added sys_pass for future login system.
* Added req_doc to request doc port output bit.
* Dropped LPM from chip code and moved to application.
* Dropped experimental GLCD support to free pins.
* Replaced mega pin mapping with mega_port_a and mega_port_c.
* GUI: Small update for dark-red and black-white color thema.
* GUI: Added new yellow-purple color thema.
* Added two new pulse_dir modes; LRRL-2 and LRLR
* Removed two pulse_modes PPM_ALL and PPM_INTERL.
* Renamed pulse_trig_delay to pulse_pre_delay.
* Added pulse_pre/post_mul step multiplier.
* Added pulse_post_hold to select off or last step.
* Added int0/1 variables to fire/hold/trigger/etc on int.
* Replaced dev_freq.* to int_0freq/etc.
* Dropped CIT (8bit-timer) support.
* Changed avr_pin2/3 to input only.
* GUI: Added visuals for info_pwm data.
* Added dic_mux for mux chip mode select.
* Added info_vars to output all variable meta data in one go.
* Removed all(5) help arguments, now it only lists the help.
* Removed 2 pulse_trig's now its LOOP or PULSE_FIRE.
* GUI: Added serial cmd/error counters and improved serial code.
* GUI: Added 250,500 and 1000 ms pull data speed.
* Redone info_freq from pwm step data.
* Renamed: mal_mticks to mal_wait and made 8b.
* Redone main pulsefire time loop and removed *_time_cnt.
* Added lcd_hcd for speed of hardware command delay.
* Added 'info_data np' argument to remove auto push data from pulling.
* Replaced SWC with generic stepper VSC on max 20hz.
* Changed PTC speed from 10hz to 20hz with ptc_Xmul=0.
* Added req_tx_hex for faster cmd rate, so over 1000 cmd/sec is done.
* Added sys_uptime and sys_speed indicators.
* Removed all but one 168p images which where to big.(>15kb)
* Changed adc_jitter to 8bit value.
* Removed dev_X_dot meta data for generic mapping.
* Added sys_vvl/vvm_map, Variable Value Limit(min/max) and Meta(dot/lock)
* GUI: Added initial 32b command variable support for sys_id/pass.
* Renamed info_ppm output to info_ppm_a/b(0-15)
* Made avr serial send use buffered lines.
* GUI: Dropped experimental audio scope code.
* GUI: Improved gui performance, so uses less cpu.
* GUI: Reworked all tabs layouts.
* GUI: Added keys; F3=connect/disconnect F11=toggleFullScreen (only when disconnected)
* Dropped "==" was 'get' indicator now all response is single equals sign.
* Made adc skip readout if input not enabled.
* GUI: Replace serial libary rxtx for jssc.
* Fixed main loop time overflow and made sys counters smaller.
* GUI: Updated to java 11 with native build images.

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

View file

@ -0,0 +1,233 @@
---
title: 'VASC: Java auto crud server'
date: 2015-07-02 19:24:59
tags:
- java
- vasc
- crud
- jsf
- swing
- swt
- ejb3
---
Site: http://vasc.forwardfire.net
Status: Need reboot in development
Video demo; http://vasc.forwardfire.net/vasc-preview-video.ogv
![JSF listing](vasc-list.png "Vasc Client JSF listing")
![JSF editing](vasc-edit.png "Vasc Client JSF editing")
![Vasc Client Swing](vasc-client-swing.png "Vasc Client Swing")
![Vasc Client SWT](vasc-client-swt.png "Vasc Client SWT")
All (207) used jars in demo;
``` text
antlr-2.7.7.jar
asm-3.3.1.jar
bcmail-jdk14-1.38.jar
bcmail-jdk14-138.jar
bcprov-jdk14-1.38.jar
bcprov-jdk14-138.jar
bctsp-jdk14-1.38.jar
bsaf-1.9.2.jar
bval-core-0.5.jar
bval-jsr303-0.5.jar
castor-1.2.jar
classmate-0.5.4.jar
commons-beanutils-1.8.0.jar
commons-beanutils-core-1.8.3.jar
commons-cli-1.2.jar
commons-codec-1.5.jar
commons-collections-3.2.1.jar
commons-dbcp-1.4.jar
commons-digester-2.1.jar
commons-io-2.4.jar
commons-lang-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.1.jar
commons-pool-1.5.7.jar
cssparser-0.9.5.jar
cxf-api-2.6.0.jar
cxf-rt-bindings-soap-2.6.0.jar
cxf-rt-bindings-xml-2.6.0.jar
cxf-rt-core-2.6.0.jar
cxf-rt-databinding-jaxb-2.6.0.jar
cxf-rt-frontend-jaxrs-2.6.0.jar
cxf-rt-frontend-jaxws-2.6.0.jar
cxf-rt-frontend-simple-2.6.0.jar
cxf-rt-transports-http-2.6.0.jar
cxf-rt-ws-addr-2.6.0.jar
cxf-rt-ws-policy-2.6.0.jar
derby-10.9.1.0.jar
de.tudarmstadt.ukp.wikipedia.api-0.9.1.jar
dom4j-1.6.1.jar
ecj-3.5.1.jar
geronimo-j2ee-deployment_1.1_spec-1.1.jar
geronimo-javamail_1.4_mail-1.8.2.jar
geronimo-javamail_1.4_spec-1.7.1.jar
geronimo-transaction-3.1.1.jar
guava-r08.jar
h2-1.3.170.jar
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-4.0.0.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
howl-1.0.1-1.jar
hsqldb-2.2.8.jar
httpclient-4.1.2.jar
httpclient-cache-4.1.2.jar
httpcore-4.1.2.jar
itext-2.1.7.jar
jackcess-1.2.6.jar
jackson-core-asl-1.9.10.jar
jackson-core-lgpl-1.7.4.jar
jackson-mapper-asl-1.9.10.jar
jackson-mapper-lgpl-1.7.4.jar
jandex-1.0.3.Final.jar
jansi-1.8.jar
jasperreports-4.5.1.jar
javaee-api-6.0-4.jar
javaee-api-6.0-4-tomcat.jar
javassist-3.15.0-GA.jar
javax.faces-2.1.3.jar
jawr-3.3.3.jar
jaxb-impl-2.2.5.jar
jaxb-xjc-2.2.5.jar
jboss-logging-3.1.0.CR2.jar
jboss-transaction-api_1.1_spec-1.0.0.Final.jar
jcl-over-slf4j-1.7.1.jar
jcommon-1.0.15.jar
jdtcore-3.1.0.jar
jfreechart-1.0.12.jar
jgrapht-jdk1.5-0.7.3.jar
jldap-4.3.jar
json-simple-1.1.jar
jsr181-api-1.0-MR1.jar
jsr311-api-1.1.1.jar
jstl-1.2.jar
jul-to-slf4j-1.6.4.jar
junit-3.8.1.jar
log4j-over-slf4j-1.6.4.jar
logback-access-1.0.9.jar
logback-classic-1.0.9.jar
logback-core-1.0.9.jar
mbean-annotation-api-4.5.1.jar
MetaModel-access-3.2.5.jar
MetaModel-core-3.2.5.jar
MetaModel-couchdb-3.2.5.jar
MetaModel-csv-3.2.5.jar
MetaModel-dbase-3.2.5.jar
MetaModel-excel-3.2.5.jar
MetaModel-fixedwidth-3.2.5.jar
MetaModel-full-3.2.5.jar
MetaModel-jdbc-3.2.5.jar
MetaModel-mongodb-3.2.5.jar
MetaModel-openoffice-3.2.5.jar
MetaModel-pojo-3.2.5.jar
MetaModel-xml-3.2.5.jar
microba-0.4.4.1.jar
mongo-java-driver-2.7.3.jar
mysql-connector-java-5.1.22.jar
neethi-3.0.2.jar
opencsv-2.1.jar
openejb-api-4.5.1.jar
openejb-client-4.5.1.jar
openejb-core-4.5.1.jar
openejb-ejbd-4.5.1.jar
openejb-http-4.5.1.jar
openejb-javaagent-4.5.1.jar
openejb-jee-4.5.1.jar
openejb-jpa-integration-4.5.1.jar
openejb-loader-4.5.1.jar
openejb-server-4.5.1.jar
openjpa-asm-shaded-2.2.0.jar
openwebbeans-ee-1.1.7.jar
openwebbeans-ee-common-1.1.7.jar
openwebbeans-ejb-1.1.7.jar
openwebbeans-impl-1.1.7.jar
openwebbeans-jsf-1.1.7.jar
openwebbeans-spi-1.1.7.jar
openwebbeans-web-1.1.7.jar
org.ektorp-1.3.0.jar
oro-2.0.8.jar
poi-3.8.jar
poi-ooxml-3.8.jar
poi-ooxml-schemas-3.8.jar
postgresql-9.1-901-1.jdbc4.jar
quartz-2.1.6.jar
rewrite-servlet-1.0.6-20120724.065549-68.jar
richfaces-components-api-4.1.0.Final.jar
richfaces-components-ui-4.1.0.Final.jar
richfaces-core-api-4.1.0.Final.jar
richfaces-core-impl-4.1.0.Final.jar
sac-1.3.jar
serp-1.13.1.jar
slf4j-api-1.7.2.jar
sqlite-jdbc-3.7.2.jar
stax2-api-3.1.1.jar
stax-api-1.0.1.jar
swizzle-stream-1.6.1.jar
tomcat-annotations-api-7.0.34.jar
tomcat-api-7.0.34.jar
tomcat-catalina-7.0.34.jar
tomcat-catalina-ha-7.0.34.jar
tomcat-coyote-7.0.34.jar
tomcat-dbcp-7.0.34.jar
tomcat-el-api-7.0.34.jar
tomcat-jasper-7.0.34.jar
tomcat-jasper-el-7.0.34.jar
tomcat-jdbc-7.0.34.jar
tomcat-jsp-api-7.0.34.jar
tomcat-juli-7.0.34.jar
tomcat-servlet-api-7.0.34.jar
tomcat-tribes-7.0.34.jar
tomcat-util-7.0.34.jar
tomee-catalina-1.5.1.jar
tomee-common-1.5.1.jar
tomee-embedded-1.5.1.jar
tomee-jdbc-1.5.1.jar
tomee-loader-1.5.1.jar
tomee-mojarra-1.5.1.jar
trove4j-2.0.2.jar
vasc-backend-jdbc-0.4.1-SNAPSHOT.jar
vasc-backend-jpa-0.4.1-SNAPSHOT.jar
vasc-backend-ldap-0.4.1-SNAPSHOT.jar
vasc-backend-metamodel-0.4.1-SNAPSHOT.jar
vasc-backend-mongodb-0.4.1-SNAPSHOT.jar
vasc-core-0.4.1-SNAPSHOT.jar
vasc-core-ejb3-client-0.4.1-SNAPSHOT.jar
vasc-core-ejb3-server-0.4.1-SNAPSHOT.jar
vasc-demo-server-core-0.4.1-SNAPSHOT.jar
vasc-demo-tech-client-swing-0.4.1-SNAPSHOT.jar
vasc-demo-tech-ejb3-0.4.1-SNAPSHOT.jar
vasc-demo-tech-web-0.4.1-SNAPSHOT.jar
vasc-export-generic-0.4.1-SNAPSHOT.jar
vasc-export-jr4o-0.4.1-SNAPSHOT.jar
vasc-export-json-0.4.1-SNAPSHOT.jar
vasc-frontend-cxf-client-0.4.1-SNAPSHOT.jar
vasc-frontend-cxf-server-0.4.1-SNAPSHOT.jar
vasc-frontend-swing-0.4.1-SNAPSHOT.jar
vasc-frontend-web-export-0.4.1-SNAPSHOT.jar
vasc-frontend-web-jsf-0.4.1-SNAPSHOT.jar
vasc-lib-editor-0.4.1-SNAPSHOT.jar
vasc-lib-i18n-0.4.1-SNAPSHOT.jar
vasc-lib-jr4o-0.4.1-SNAPSHOT.jar
vasc-test-i18n-0.4.1-SNAPSHOT.jar
vasc-xpql-0.4.1-SNAPSHOT.jar
vasc-xpql-ejb3-client-0.4.1-SNAPSHOT.jar
vasc-xpql-ejb3-server-0.4.1-SNAPSHOT.jar
velocity-1.6.4.jar
woodstox-core-asl-4.1.2.jar
wsdl4j-1.6.2.jar
x4o-core-0.8.5-SNAPSHOT.jar
x4o-meta-0.8.5-SNAPSHOT.jar
xbean-asm-shaded-3.12.jar
xbean-bundleutils-3.12.jar
xbean-finder-shaded-3.12.jar
xbean-naming-3.12.jar
xbean-reflect-3.12.jar
xml-apis-1.3.04.jar
xmlbeans-2.3.0.jar
xml-resolver-1.2.jar
xmlschema-core-2.0.2.jar
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 KiB

View file

@ -0,0 +1,92 @@
---
title: 'X4O: Java xml library'
date: 2015-07-01 19:24:59
tags:
- java
- x4o
---
Site: http://www.x4o.org
Source: http://git.savannah.gnu.org/cgit/x4o.git
Status: Discontinued development
Framework to define your xml languages with full scheme and namespace support.
Small example of parsing a simple example language;
``` xml
<root:JFrame
xmlns:root="http://swixml.x4o.org/xml/ns/swixml-root"
xmlns="http://swixml.x4o.org/xml/ns/swixml-lang"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://test.x4o.org/xml/ns/test-root test-root-1.0.xsd"
name="mainframe" size="800,600" title="SWIXML-X4O" plaf="com.sun.java.swing.plaf.windows.WindowsLookAndFeel" defaultCloseOperation="3"
>
<JMenubar name="menubar">
<JMenu name="filemenu" text="File">
<JMenuItem name="mi_new" text="New" icon="icons/new.gif" mnemonic="VK_N" accelerator="control N" Action="newAction"/>
<JMenuItem name="mi_open" text="Open" icon="icons/open.gif" mnemonic="VK_O" Accelerator="control O" ActionCommand="open"/>
<JMenuItem name="mi_save" text="Save" icon="icons/save.gif" mnemonic="VK_S" ActionCommand="save"/>
<JMenu name="propmenu" text="Properties" icon="icons/new.gif" >
<JMenuItem name="mi_prop_edit" text="Edit" icon="icons/new.gif"/>
<JMenuItem name="mi_prop_clear" text="Clear" icon="icons/new.gif"/>
</JMenu>
<JMenu.Separator/>
<JMenuItem name="mi_exit" text="Exit" icon="icons/exit.gif" mnemonic="VK_X" Accelerator="control X" ActionCommand="exit" Action="exitAction"/>
</JMenu>
<JMenu text="Help">
<JMenuItem name="mi_about" text="About" enabled="true" icon="icons/info.gif" Accelerator="alt A" Action="aboutAction" />
</JMenu>
</JMenubar>
<JDesktopPane>
<JInternalFrame title="Flow Layout (right aligned)" bounds="10,10,150,150" layout="FlowLayout(FlowLayout.RIGHT)" visible="true" resizable="true">
<JButton text="1"/>
<JButton text="2"/>
<JButton text="3"/>
<JButton text="4"/>
</JInternalFrame>
<JInternalFrame title="Grid Layout" bounds="200,10,170,170" layout="GridLayout(4,3)" visible="true" resizable="true">
<JButton text="1"/><JButton text="2"/><JButton text="3"/>
<JButton text="4"/><JButton text="5"/><JButton text="6"/>
<JButton text="7"/><JButton text="8"/><JButton text="9"/>
<JButton text="*"/><JButton text="0"/><JButton text="#"/>
</JInternalFrame>
<JInternalFrame title="Border Layout" bounds="390,10,150,150" layout="borderlayout" visible="true" resizable="true">
<JButton constraints="BorderLayout.NORTH" text="1"/>
<JButton constraints="BorderLayout.EAST" text="2"/>
<JButton constraints="BorderLayout.SOUTH" text="3"/>
<JButton constraints="BorderLayout.WEST" text="4"/>
</JInternalFrame>
<JInternalFrame title="Tree Window" bounds="10,170,350,360" layout="borderlayout" visible="true" resizable="true">
<JPanel layout="borderlayout" constraints="BorderLayout.CENTER">
<JSplitPane oneTouchExpandable="true" dividerLocation="200">
<JSplitPane oneTouchExpandable="true" dividerLocation="140" orientation="VERTICAL">
<JScrollPane background="blue" >
<JTree name="tree"/>
</JScrollPane>
<JPanel layout="borderlayout">
<JPanel constraints="BorderLayout.NORTH">
<JButton name="btn_copy" toolTipText="JPanel" enabled="true" borderPainted="false" focusPainted="false" icon="icons/copy.gif" size="24,24"/>
<JButton name="btn_paste" toolTipText="JJButton" enabled="true" borderPainted="false" focusPainted="false" icon="icons/paste.gif" size="24,24"/>
<JButton name="btn_cut" toolTipText="JLabel" enabled="true" icon="icons/cut.gif" borderPainted="false" focusPainted="false" size="24,24"/>
</JPanel>
<JScrollPane constraints="BorderLayout.CENTER">
<JTable name="table"/>
</JScrollPane>
</JPanel>
</JSplitPane>
<JPanel name="preview" border="LoweredBevelBorder">
<JTextArea name="ta" text="Tree Status Log....." background="red"/>
</JPanel>
</JSplitPane>
</JPanel>
<JPanel constraints="BorderLayout.SOUTH">
<JLabel text="Status:"/>
<JTextField text="OK"/>
</JPanel>
</JInternalFrame>
</JDesktopPane>
</root:JFrame>
```
![X4O swixml example](x4o-swixml.png "X4O swixml example")

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View file

@ -11,9 +11,9 @@ Menu:
# Search:
# url: /search
# text: Search
Pulsefire:
url: /pulsefire
text: Pulsefire
# Pulsefire:
# url: /pulsefire
# text: Pulsefire
Icon:
Favicon: /images/favicon.ico