Programm: Ex Tools EN

Veröffentlicht von Joe-C (jch) am Jun 03 2014
Software >>


Zurück zur Übersicht


zurück zum Index

Dies ist die Englische Beschreibung. Zur Deutschen: Programm: Ex Tools

This program has been developed, after getting the knowing about the control possibility of the Wärmebildkamera FLIR E4. It bases on the DevTools.
it was my wish, to get the most functionality of my camera.

The program can control over Telnet (USB Mode: RNDIS, RNDIS_MSD or the best RNDIS_UVC) or over UART (needs a hardware modification).

Now I try to explain the Software also in English. My English is not the best, but I hope you understand it ;)

  start view

start view

After the first start, there 2 orange boxes shown:
Here all available language files will be listed. After selecting one, the named controls inside will be renamed. So you can instantly see, what the language file changes. The language file is a readable text file, you could modify if you wish (program needs a restart to show the changes)
Enter License
Here you have to enter the license code, which was provided with the program. Without a valid license code, the connection over Telnet and UART are disabled and remote control is impossible.
The orange box will only disappear after entering a valid license code. The code was stored in the "settings.txt" so you have to enter the code again after manual delete the file.

I recommend the RNDIS_UVC mode (I'd like to think that you use this) for using the camera with this program. That give the best remote control possibility.
MSD (volume) the camera was found as a volume and the stored images are direct accessible. But for this time, the camera could not store new images.
UVC (webcam, live stream) the image from the camera LCD was streamed to the PC with 15 FPS.
RNDIS (network) the camera was connectable as a network PC with a own website and the possibility to communicate over Telnet and the stored images could be downloaded over FTP. The camera screen could be view at 3 secondly interval. The normally not active RNDIS mode (how to set is provided as image) has the most functionality, but it also needs additional drivers: flir_device_drivers.exe

Note: the camera normally uses the IP but if this IP was already used in your network, you have to change the IP from your camera in the Tab: Web in the textbox Telnet IP.


zurück zum Index

The program will search for video devices after startup. If one of them contains "FLIR" in the description, this will activated automatically. So normally, the live screen is shown after starting the program.

General information about the controls:
Buttons: just click and the function will be executed. Light blue Buttons are Macros. This takes more time and set several settings.
Checkboxes: fires after every change and sent to camera.
Numeric fields: if the keyboard focus is on this field, the values could be changed by the arrow keys. If you hit ENTER, the value was send to camera. It is also possible do enter the value directly.

If no connection was activated, the program tries automatically to connect over telnet after using any function.
Maybe the first function will fail. It is recommend to make a connection check like change the color palette (down left) an see any changes.

  View 1

Darstellung 1

On the first Tab "Control" are the most remote control functions. The easier settings are right, the more complex
(or maybe not often used) in the tab control below the image.
Tab: View 1

Here the color palette was changed with a single click. A good possibility to check the control connection to camera.
Here all pixels with temperature values above/below a threshold value will be colored. Additional you can set the color (grau, rot, grün, blau, cyan, magenta, gelb) and the graphic rendition (transparent, solid, linked). With "Send all" will be activated a macro, which sends all settings to camera.
If "send changes to Camera immediately" was set, every change of the settings was send to camera (by default this is off, because the "Send all" should not be disturbed).
IR Window (Picture in Picture)
First I have to say... the PIP is not a function, it's a setting. In the IR mode, the IR image will be fully displayed over the visual image. By the PIP, the IR overlay image has only other another size.
With "Set IR Window" you could draw a rectangle on the camera image and this rectangle values will be used to set the PIP were you want. With "IR full Screen" you get the whole IR image.


  View 2

View 2

Tab: View 2
Level and Span
Here the auto scaling could set to "Manuell". With that the start and end temperature of the scale could be set.
With "Auto" you get the normal state of the camera.
Backlight %
To set the backlight of the camera LCD.
MSX offset:
This is the same setting like the menu point "focus position". This setting is needed for a truth overlay on MSX mode and PIP too.
Just freeze the camera view.


 Measurement 1

Measurement 1

Tab: Measurement
Set Measure by Mouseclick
The blue buttons here are all checkboxes. The fore color shows the activity of the Measurement (green=ON, red=OFF, black=unknown). If you click on the live screen, the activated (down pressed) measurement functions will be set. Measurement boxes will be set like draw a rectangle in paint. Points was set to were you release the left mouse button.
If the function "Check Settings (takes time, is safer)" is active, every parameter is read after setting to control if the setting is really set in the camera. If not, the set will be repeated maximal 3 times. This make the Setup longer, but also safer. It is possible, that the camera not recognizes a command while the camera is too much busy (NUC... many measurements active....).
With "turn all off" all measurements will be turns off.
Difference (Value A - Value B)
You could let you show a difference between a point and the highest temperature of the screen or the difference to a reference value. It's just a simple subtraction. The second Value (B) was subtracted from the first Value (A) and the answer will be displayed. The Values A and B could be a active measurement or a adjustable reference value. The Difference could be readout to a Graph like all other. But as more measurements you have active, as longer the camera needs to respond. Because that the diff value can't read so fast like single measurement point.
Additional there is something to note about the Difference measurement:

  • The diff measurement disable himself if you deactivate a selected measurement or set a non active measurement.
  • The diff measurement answer view field is also dependent from the "advancedMeasureMenu". If this is active, all was shown fine. But if you deactivate the "advancedMeasureMenu" the Delta symbol disappears and the description don't will be refreshed. The calculation and value is right, but the description not.
    (On the image down left the description was "Pu1" for point 1 but the value is used and set from point 4)

Read Batt
Shows the Battery power in mV and the remaining in %.


 Measurement 2

Measurement 2

Tab: Measurement

Here you can see how set the measurement. First check the measurement function you want in the Tab, then set it on live screen.
All values known this time was transferred to the table on the left side. To grab all information of the measurement, you have to read them with the mouse context menu (right mouse on the table). There you also easily deactivate a measurement of your choice.
If you change settings in the table, this will be send to camera.

The measurements in the mbox was set by a calculation mask. If you change them without reading fist, all other measurements was overwritten.
For example: you enable mbox 3 manually and this shown min and max only. If you now set measurement max, the program calculate the mask for max only an send it to camera... so you have max, but no min.




With this function the normal menu was replaced with a manual adjustable measurement menu.

Warning: while using this functions I could register some crashes and the camera don't can be controlled. The Menu stuck until the camera was restarted.
But if the camera menu will stuck... the remote control will work normally fine.
You can still set measurements or read them out.

This option will automatically will set, if you use the difference function, because there was issues if this will not be active.


  Setup 1-3

Setup 1-3

Here you can set thinks, that I never found by any thermal camera before.
The most of them don't have to change, but it could be interesting for advanced users.

Setup 1:
Filter bilateral:
Some kind of smoothing filter. (smoothes more if the value was set higher)
Filter apr3x3:
Probably a Median Filter. Not explored deeper.
Filter Row/Colum:
Also not explored deeper.
Noise Gen:
the Noise Generator is the reason, why the E4 has a Thermal Sensitivity <0.15°C. Here the detector was more poor as it is... Turing this of will be revoked after restart the camera.
Filter Temporal:
Is like Average. Makes a clearer image but reduce the image frequency.

Setup 2:
contadj / contadj.autoAdj / contadj.colDistr:
this settings control the automatic level and span adjustment. There you can set the changing speed or other...
Sets the rectangle, that contend will be used for auto level / span. Here you could change that not the whole image was used for adjustment. You could set a smaller rectangle like the PCE TC3.
This settings was for the visual camera image. Also the angle could be changed, but this is not implant.

Setup 3:
By the NUC (Non Uniformity Correction) will be a Shutter moved at the front of the detector to grab a reference picture. With this and the internal temperature value the camera could calculate a offset, what will be remove from the normal camera image.
Here you can set how many frames will be used to make the NUC. If you switch off the Shutter, the camera picture will be "burned in" after NUC. The camera knows that the NUC was not really correct and because that the * symbol was placed before any measurement value.
To change some parameters you normally have to change inside the camera menu.
USB Modus:
Here you could change, which functions the camera will have after connecting to USB.
I generally suggest to use the RNDIS_UVC.
MSD (Volume)
Here you can see the stored images, but the camera could don't save new images while using that.
UVC (Webcam)
To see the live image from camera screen (with 15 FPS).
RNDIS (Network)
The camera has his own IP and can be control over Telnet. If you use the camera IP (normally in your browser, you'll get the web interface. Also a "Webcam" page is shown (
With FTP you can download files (like images or sequence files).




The camera could make a thermal record. This means full radiometric image store of some frames in a single file. If you show this frames fast enough, you have a thermal Video.
The Thermoviewer V006 was improved to read this sequences, but the temperature calculation is at the moment useless. It is only good for viewing the thermal image an interpolate the view.
The FLIR Tools could also read the sequence files and also could analyze this. But the open of frames is slow and far away from a video. I don't know why...

Thermal Record:
Start the record to the RAM. Stops after reaching the frame count. Or if set to Playback, the camera LCD was shown the stored data.
Stops the current record or playback... if somebody wants.
Save the RAM to the File.
To choose the function of "Start"... playback or record.
The name of the record file.
Number of frames to grab until the record ends.
Record speed... max the view frequency.
get Settings:
colures the settings yellow and ask the camera about this settings. Every setting goes white if it was overwritten by values from the camera.

(uses FTP and is only usable with USB: RNDIS, RNDIS_MSD und RNDIS_UVC)
Get Filesize:
Ask the file size of the file named in Thermal Record->Filename.
Tries to download the file. The data was stored in the path and file named below this button.
Open folder:
Open the folder named left from the button. If the folder don't exist, the folder will be make (download also).

Additional notes to the Thermal Record:
It is possible, that the camera shows the visual image after recording.
If a playback will be displayed, the view will stuck on the last frame. The automatic level an span adjustment will go on with the image from the detector. But only the last frame was shown with changing scale values.
Normally the normal camera view is shown by performing a NUC.




Tab: Pictures
Picture folder from the camera (USB:RNDIS)

List folders
List all folders, contained in the DCIM directory.
delete selected
remove the selected folder.
Make a new folder, named with the left standing text.
List all images from Camera
Shows an extra window. More about that later below.
All new images to this folder in Camera
Set the selected folder as the default location for new images.

Picture counter to 0 (next image: FLIR0001)
Reset the internal picture counter to 0.

Interval (time lapse)
(Works not in USB:MSD Mode)
Start the Timer or restart them (reset).
Turn off Timer.
Text input of the time. After each input the text inside was tried to interpreted as time values. If it fails, the background get colored. Only with a white background the timer could be start.
Store next image in:
Shows the time to store the next image. To store the image, the press of store button will be simulated (was found under the objective). Is green if active.

Extra Window: Download imaged from Camera
Download all an delete them from Camera

Every listed file will first be downloaded. The downloading contains a control of the file size. The size of the images was get about the FTP and after the Download the created file size was compared with the FTP communicated. After that, the function goes on with the next image.
After successfully downloading the image this will be deleted from the camera. At the end, no images are on the folder in the camera an all images was in the local folder.
Override if exist
If active, the downloaded file was downloaded again.
If deactivated, existing files will be renamed while downloading (FLIR0003 -> 1_FLIR0003 ... 2_FLIR0003 etc.)
Open folder
Opens the local folder and create if needed.
Close the extra window. The window was also closed by pressing ESCAPE.

The table view has a mouse menu (was shown with right click). Here the selected or all could be downloaded or deleted.

 Tab: Measurement

Tab: Measurement

Here the measurement data from the camera will be collected. The data comes directly from the camera (sometimes just converted from Kelvin), no raw data with a calculation.
How more measurements will be activated, so much the camera will be busy and response later. Because that, the timeout (Tab: Terminal) should be set higher. Otherwise the timeout comes before a Measurement could be received.
Anyway... the values only change if the measurement is active. If only one measurement type is active, this is not labeled (on camera display). Only point 1 looks similar as only point 3. If you set measurements by software, the selectable checkboxes was marked... green is active, red is OFF.
The status can be read with "Grab all Measurement Data".

The data receive runs asynchrony. The program ask about value x and if the answer returns, the elapsed seconds was used to copy in the graph. So the graph don't shows when the program ask for the value, but received the value.

Start the timer, which read the measurements.
Stops the timer if the next possibility reached.
Sets how many seconds will be wait until the next readout starts.
delete all Points:
Deletes all measurement points from all measurements.
Choose Symbol (beside delete all Points):
Here it is possible to select the illustration of measurement points from the graph. Default is symbol (none).

Grab all Measurement Data:
Ask all measurements in a loop and shows the activation state as color. It takes some time, because there was 10 requests to the camera (1x connection test + 5x measurement point + 4x measurement boxes).
Spot x / Box x Max-Min-Avr:
The choose measurement to readout.
The mbox has 2 colors and 2 activation states. the measurements min, max and avr was blue if enabled. But if the mbox of, the enabled measurement has no results. Because that behind the min, max and avr checkboxes are a colored field to show the main state of the mbox (pale green=active, light red=OFF and gray=unknown).

Here the illustration of the measurement could be changed... line color, label...
If you choose the measurement, this settings was refreshed and the actual measurement points was shown above the combo box with (min, max, avr). This is the only way to see the actual collected points. The points could be different on active lines.

Save all measurement data to text file:
Store all used measurements to a text file. Because the requests are asynchrony, each graph line will be written in a single block. It is also possible that not all measurements has the same value count.

To the graph himself.
With the left mouse button the curves could be moved.
With the middle mouse button a rectangle could be draw to zoom in.
With the right mouse was a English context menus shown with some useful functions.

Tab:Analysis A/B
This is for trigger if a monitored value reaches a condition.
Active A/B
Enables the Analysis.
Monitored measurement
Here all selected measurements could be choose. (was refreshed if the Tab was selected and the Analysis was not active)
Condition to perform
Select the parameters when your monitored measurement should be activate an action
Action after trigger
Select what have been done, if the condition was reached.

  • Camera takes picture means a simulated press on the store button of your camera.
  • Run always the selected file. It could be any file you want. Showing a picture or Video, playback a sound file or start a .exe ... whatever.
  • Run single starts the selected file an deactivate himself. So an additional reach of the condition will be ignored (until you check the checkbox again).
  • Turn off either the Analysis or Measurement + Analysis.

 Tab: Terminal

Tab: Terminal

The terminal is the only remaining from the DevTools.
But it there also some modifications.

Store the contend of the both text fields (left ASCII, right Bytes) in separate rtf files.
Clear both text fields.
Print Flirresponse:
Also show the communication outside the terminal. The embedded requests to camera was not shown normally.
Open last:
Open the last selected COM Port. This will be stored in settings.txt and be loaded after next startup.
This would be implant because the Bluetooth COM-Ports needs more time to open (Pairing), so a previous setting was better.
Here could be set the timeouts. Have to set higher after activate more measurements, because the camera goes slower in the responsiveness.
Open the below named COM-Port. If the port open fails, the "Refres ports" will be performed.
Refresh Ports:
Tries to open COM1 to COM99. Every success was stored in the combo box below the "Open" button.
Text field Bytes:
Send the besides named bytes... now practically useless.
Text field Text:
Send the text besides to camera.
Text field Rset:
Send "rset " + text besides to camera. For set settings to Resource Tree.
Text field Rls:
Send "rls " + text besides to camera. For read settings from Resource Tree.

 Tab: Tree

Tab: Tree

Here the Resource Tree could be explored. The Tree is only accessible, if the camera is active (other commands like "ver" or "restart" also work in standby). Inside the Tree you could change very much... much more as in any camera menu.
Mouse button left: select Node and fold/unfold the sub nodes. The selected Node (full path) was Named right beside the button.
Mouse button middle: performs a Readout.
Mouse button right: shows a context menu with more functions:
(the actual selected Node beside Readout is the base for the requests)

  • Grab with level 1 Subnodes
  • Grab with ALL Subnodes
  • Remove all Subnodes
  • Remove tree contend

Ask the camera about the right beside standing Node. The Response from camera will be used to fill the Tree view.
Note: the camera give on parent nodes all possible sub Nodes as response. But reading errors are possible, so you surely sometimes readout two times. While the readout is starting, the program automatically removes all Sub nodes of the actual Node.
Is a value at the right end of the Node name, this is the end of this Tree Node path. The value could be changed with Set. If you readout a node with value, the readout will displayed next to the normal values. To clear up, select the parent Node and readout again.
Send the right standing value to the camera. The new value is also were set by pressing ENTER.
Save Tree:
Save all tree contend in a file.
Load Tree:
Read the text file and convert it to the Tree.
Read with extra Info:
Read the selected Node with the option "-l". So the response contains additional information's like the range of values.

The whole tree from my camera will be provided with the program. So you could read in the tree of my camera and explore the point of your interest. There you can read out again and the contend will be overwritten with the new camera values.
Example: you want to know, how the next stored image will be named. The direct node is called "". So you have to go to "" and readout this. Now the contend of store is overwritten with the actual camera values and you can see the next number right to the Value "nextFile".
If you select "fileCount" and Set the value to "10", then the next image will be named "FLIR0011".

 Tab: Web

Tab: Web

Here is just a very simple web browser build in to view the camera website.
On this Tab you could change the Telnet IP, if your camera use another IP.

With Init:Webcam the Side was opened. On this side the camera screen was shown every 5 Seconds.
With Direct Webcam the image was grabbed in a cycle of 1-3 Seconds.
It works simple:

It is also possible to wrote your own control webpage to control the camera from the browser.

Version 008

zurück zum Index

In this version were some improvements for the live Video.

 Version 008

Version 008

Now it's possible, to record videos (.avi) from the live stream.
Here all video codec's was listed, which found on your system. In my tests the best was "msvc" so this was preset if found.
Video path and file name
Path an name of the new video file. The file ending maybe must changed by hand if you use another codec.
Create a new video file. If exist, you will be ask if you want to overwrite. The video vile has ever 320x240 at 15FPS.
save and close
Saves all written frames in the File and close it. Now the file could be open by another programs.
Open folder
Open the folder (named left in the textboxes) in the explorer.


If active, the background of this button was red and all frames, which was shown on the live view was also send to the video file.
Grab single
Takes the next picture from camera also in the video file. With this you could store a bundle of single pictures in one video.
Position view (below the label "MM:SS (frames)")
Here was the recorded time and the number of frames shown.

Interval (time lapse)
Works like the same named function in Tab:pictures. But after reaching the zero was not take a picture inside the camera but grab a single frame in the video file. This function is a adjustable automatic click on "grab single".

Here could be video filters for the live view set.
Sharpen (low, middle, high)
Will incase the edges and let the picture looks more sharpen.

One frame of the camera was stored in background as reference picture (and shown in preview).
This referents will be subtracted from the current life stream or the difference between both was shown. View the screenshots to see the result of both functions.
With "Grab reference" you could replace the background image with a new from the live screen.

The selected number of frames was merged. Preset is 3, this means that your currently viewed image is a merge of him with the 2 frames before. So you can see changes but have also a lower noise in the screen.

Version 009

zurück zum Index

Now the Programm has a new window style and new functions was implent.

 Version 009

Version 009

3 Min Demo
Without the connection to the camera, the Software could explored without a time limit.
Once the demo mode is active, a connection can be made ​​to the camera and the program can be 3 minutes long use without restriction. The time counts only if the connection is successfully established to the camera. Following the program closes automatically.

IP Scanner
A new feature to find the camera better.

Camera functions and resolution
Thus when the measurement points on the screen set the dimensions fit, a resolution selection was added. Here, the resolution of the camera (or the screen) is selected. Tested were previously the FLIR cameras (E4 ,E8 ,C2 ,I3 ,I7 ).

Time display during measurement Graph
Previously, the last seconds were counted since measurement start. Now 2 time views are available (example 15sec measurement):

  • Time since measuring commenced provides a relative time (00:00:00 bis 00:00:15)
  • System Time provides an absolute time (13:34:11 bis 13:34:26)

Color difference measurement
When initializing the camera is set to a fixed temperature range (currently displayed temperatures).
Then the pallet is converted to grayscale and taken the camera image as a reference image.
Everything from now on is getting warmer, and will be brighter from the switching threshold RED.
The colder and darker from the switching threshold BLUE.
Alternatively, the base of gray are set to black ... then:
The warmer the more intense RED and the colder the more intense BLUE.
If it is expected that the temperatures exceed the upper or lower temperature range, you can take a manual adjustment and override the reference image with "GET".

Download V010/011 (1.5 MB) (false Virus positive, file blocked by google) (1.7 MB)
since now without license restrictions.
To get a English GUI: click on the violet " Language ", choose the language_EN.txt and hit OK. (1.7 MB) <- Aktuell
The Scans from 27.4.17 sadly shows false Malware positives (Scaned with: Virustotal)
Scan: (1/58)

  • False positive: Win32.Trojan.WisdomEyes

Google Drive from here


Zuletzt geändert am: Apr 27 2017 um 8:37 PM