Archive for category programming

Hacking LSS Chronolux

The “required insolation’ sector is added to support in-model decision on the limiting volumes and conditions.

This is not a public software, so please contact the author of the LSS Arch Tools for more questions.

Tags: ,

Video distribution in the classroom

We have a computer room in our local university, ind it’s quite bussy. The main problem it became (this is another story) too long to be usable and there was a strong demand for the screencast view right on the student’s workplace. Yes we do use beamers, but the view was too small to dead the text on the screen.

And so the project was born. There is single seat where the view originates and multiple locations where it should be visible. The system must be easily expandable and upgradeable, no vendor lock-ins. All the points in the systems should be easily adjustable and replaceable.

Read the rest of this entry »

Tags: , , ,

Messing with PHP-ODT

I’m working oh hobby project on a free time, and one of the tasks here is to generate ODT file, containing output from the database. The output library i’ve chosen is PHP-ODT. It’s kind of basic, but allows to create ODT documents on the fly.

And now, lessons learned

Allways provide file size.

This code will create corrupt file, according to LibreOffice: The correct code is:

 header(“Content-Description: File Transfer”);
header(“Content-Type: application/vnd.oasis.opendocument.text”);
header(“Content-Disposition: attachment; filename=\”” . $ODTFile .”\”” );
readfile($ODTtmpFile);

 header(“Content-Description: File Transfer”);
header(“Content-Type: application/vnd.oasis.opendocument.text”);
header(‘Content-Length: ‘ . filesize($ODTtmpFile));
header(“Content-Disposition: attachment; filename=\”” . $ODTFile .”\”” );
readfile($ODTtmpFile);

It is possible to add hierarchical styles

Not in the base code yet

$pStyleDate = new ParagraphStyle(‘revDate’);

$pStyleDateStrike = new ParagraphStyle(‘revDate-strike’);
$pStyleDateStrike->setAsChild(‘revDate’);

It is possible to add text decorations in the paragraph level

Again, not in the base code yet:

$pStyleDateStrike->setLineThrough(StyleConstants::SINGLE);

It is possible to merge cells in the table

Well, not in the base code and horizontally only:

$hSpan=array(“”,””,””);

$cRow = array($hSpan,$pRev,$pDate,$pMemo);
$table->addRows(array($cRow));

Tags: ,

The Power of Pipes

Okay guys, the log if filling with

sshd[20117]: Invalid user pi from 142.93.118.186 port 50416
sshd[20117]: input_userauth_request: invalid user pi [preauth]
sshd[20117]: Received disconnect from 142.93.118.186 port 50416:11: Bye Bye [preauth]
sshd[20117]: Disconnected from 142.93.118.186 port 50416 [preauth]
sshd[20119]: Invalid user cubie from 5.189.227.161 port 39772
sshd[20119]: input_userauth_request: invalid user cubie [preauth]
sshd[20119]: Received disconnect from 5.189.227.161 port 39772:11: Bye Bye [preauth]
sshd[20119]: Disconnected from 5.189.227.161 port 39772 [preauth]
sshd[20121]: Invalid user guest from 208.68.37.169 port 42858

Read the rest of this entry »

Tags: , ,

Eclipse, Arduino and STM32

Mkay, let’s switch from Arduino IDE to some more user friendly.

I need Arduino, PHP, Python and i woukl like to switch to STM32 ‘Blue pill” instead of AVR core.

Seems like Eclipse community has developed some support on Arduino: need to mention Sloeber to bringing more pleasant UX to Arduino community. STM32duino community has an nice wiki post on installing Sloeber on Eclipse, yet it’s not up to date right now:

  1. Arduino plugin JSON link right now resides in http://eclipse.baeyens.it/update/V4/stable instead of http://www.baeyens.it/eclipse/V2.
  2. You don’t need to update to CDT 9.1, as Eclipse has CDT 9.4
  3. You do need to install support for SAM boards from “Arduino”->”Preferences”->”Platforms and boards”, mainly “Arduino SAM Boards (32-bits ARM Cortex-M3)”
  4. The GNU C/C++ compiler, provided with SAM boards is quite oldish, IMHO – it tells “4.8.3-2014q1”. I have a GNU Arm Embedded Toolchain in “C:\Program Files (x86)\GNU Tools ARM Embedded\7 2017-q4-major” and it seems quite legit to replace “A.RUNTIME.TOOLS.ARM-NONE-EABI-GCC.PATH” projec’t variable with the path above and the compilation is performed using the GCC v7 binaries.

Right now i have some older Arduino sketches that I would like to port to STM32: I like the on-board USB, increased pin count and the idea of J-Link debugger.

Tags: , ,

Rant: SF.net GIT repositories

If unable to push commits, use git clone ssh://USERNAME@git.code.sf.net/u/USERNAME/PROJECTNAME instead of proposed git clone ssh://USERNAME@git.code.sf.net/u/USERNAME/PROJECTNAME u-USERNAME-PROJECTNAME

Tags:

LCM-WM002

LCM-WM002 is a 16×2 LCD display, coming from a “refurbished” equipment. To be true, the equipment was a HP 5000 / 5100 laser printer, and the LCD has a bezel and a PCB with buttons attached, named ESU19516, part number RG5-5438. Read the rest of this entry »

Tags: , ,

Rant on AVR ISRs

Once you define an ISR bit in the TIMSKx, the appropriate ISR must be attached.

Lost almost a day on non functioning serial port, until stumbled upon the post in stackoverflow.com

So, when copypasting

TIMSK1 |= (1 << TOIE1) | (1 << OCIE1A);

be sure to define both
ISR(TIMER1_OVF_vect) {
...
}

and
ISR (TIMER1_COMPA_vect)
{
...
}



                      

Tags: , ,

Current token in Arduino’s ArduinoSerialCommand

Ever played with ArduinoSerialCommand? Nice library, but it lacks the possibility to retrieve current command. This possibility is waiting in the pull request for a long time, so if you deadly need it – merge it by yourself.

Tags: ,

Meet the fMRI Parrot

fMRI Parrot

Camera
LG-D405n
Focal Length
3.2mm
Aperture
f/2.4
Exposure
1/20s
ISO
600

What the heck is “fMRI Parrot”?

First of all, the heck is fMRI. fMRI stands for “Functional Magnetic Resonace Imaging”, as defined in Wikipedia. It involves tons of expensive hardware, like Magnetic Resonance machine, and software, used to reconstruct the scanned volumes. During fMRI scanning a series of stimulus are applied to the patient and the brain is scanned using fast scanning MRI techniques. The aim of fMRI is to record immediate changes happening in particular areas of the brain.

The single MRI scan is called “volume”. It is created from a series of slices of the predefined thickness. Having more slices creates more detailed volume and extends acquisition time. As the changes of the brain activity are momentary, a short volume acquisition interval, named TR or “Time Repetition” is needed. Usually it varies from 7 to 1.5 seconds, depending on the capabilities of the MR machine. Short TR time supposes lower quality scans, compared to the “traditional” MR scanning. So the level of detail of particular volume is a trade off between time and specific requirements.

The fMRI scans consists from a number of volumes, recorded at particular intervals. The key condition for a successful scan is the precise timing. In order to find a region with elevated activity, a stimulus must be started just when the volume acquisition begins. For this the MRI machine may expose a short pulse – start of a volume. The pulse may be brought to the MRI control room via the interface box and the required stimulus started automatically. Some stimulus require the patient to respond, eg. press the predefined button. The response from the patient is also brought to the MRI control room. As there are special requirements for any hardware at the MRI machine, only certified equipment is allowed to the MR room. The requirement at the MRI control room are more relaxed as well as the choice of the equipment There are different vendors of the interface boxes and response buttons, NordicNeuroLab (NNL) being one of them.

In order to create the simulation series, or paradigmas in fMRI terminology, a lot of time is needed. Each paradigma is to be verified before the clinical test, while some of them can not be tested without a signal form the MRI scanner or a response from the patient. There is no need to say the MRI equipment is expensive, so is the time spent in the MRI machine. Most of the MRI scanner interface boxed can be used in so called “simulation” mode, sending particular responses at the predefined moments, without actually running the scanner. For example the Sync Box from NordicNeuroLab will send “S” symbol at the start of the volume acquisition, while fORP from Cambridge Reserch Systems is to send “5”. So what is actually required to test a paradigma, is the response from the scan… WAIT!

It’s must not be the MRI scanner nor the interface box.

Read the rest of this entry »

Tags: , , , , , , ,