NemaStudio Version 1.7

Optimized thread handling

A lot of work has gone into optimizing the thread handling of the serial IO handlers. This optimization solves the apparent freezing of the User Interface in situations where too much data was multiplexed over a port with too little bandwidth, mostly this occurs with 4800 bps connections.

I have also introduced a cache that is buffering the sentences before they are transmitted to the selected ports. This is made visible on the status bar on the bottom of the main Window.

Status bar

You can easily follow port buffer overruns captured in the cache since from now on the status bar shows the number of sentences in the cache still to be sent. When you see this number increase you know that you have a situation as described before.

Balance the output!

There are a number of options available in NemaStudio to avoid this situation and to balance the output:

Increase the baud rate of some or all transmitting instruments

Use different serial ports for some instruments

Lower the frequency the sentences are sent (interval timer)

Limit the number of instruments transmitting simultaneously

Limit the number of different sentences per instrument

Set the output of some or all instruments to UDP instead of a serial port

Use the ‘Stop All’ button to temporarily suspend the output until the buffers are emptied

A smart combination of some or all of these

New Start All, Stop All and Close All toolbar buttons

3 New buttons are introduced on the toolbar to facilitate simultaneous starting, stopping and closing of all tabbed objects (see image above).

Other updates

A few bugs were corrected, with the most important the Special Manoeuvre Indicator not showing in the AIS message type 1.

Work to do

I still need to upgrade the help file to the current version. I am also considering an ‘Automatic Check For Updates’ function in NemaStudio, but that would require a ‘Call Home’ over the internet each time NemaStudio is started and I am aware that some users are not in favor of that. I have asked all NemaStudio users for an opinion, and will base my decision on the result.

The difference between the NGW-1 and the NGT-1 is that the latter requires specific PC software to talk to the NMEA2000 network through a DLL provided by Actisense, while the NGW-1 can be seen as a converter between NMEA0183 and NMEA2000.

For the time being Sailsoft decided to not implement the NGT-1 in the current architecture of NemaStudio. The reason for this is that the specific power of NemaStudio is focused on simulating NMEA0183 sentences. Simulating NMEA2000 PGN’s requires a different approach, even when using the Actisense DLL library functions.

This is because a NMEA0183 sentence seldom can be translated 1:1 to a NMEA2000 PGN. Take for example the NMEA0183 RMB (Recommended Minimum Navigation) sentence. Parts of the contents of this sentence would go to PGN 129283 (XTE error) and other parts need to go into PGN 129284 (Navigation Data). But that is not all: the PGN 129284 also requires a parameter of the NMEA0183 BOD (Bearing Origin to Destination) sentence to make it complete. See image below, borrowed from the NMEA2000/NMEA0183 gateway users manual from Maretron.

Of course it would be possible to introduce something like this in the current architecture of NemaStudio, but it definitely would also result in a fairly messy solution as you can imagine.

By adapting the NGW-1 into NemaStudio we achieve a much cleaner solution. All the conversion is neatly done by the NGW-1 and is hidden to the user who just sees occur a nice stream of valid PGN’s on the NMEA2000 bus when sending the appropriate NMEA0183 sentences from NemaStudio.

During tests with the NGW-1 and NemaStudio it was discovered that the default baud rate of the NGW-1 – by factory set to 4800 baud – in many cases turned out to be a severe threshold when used with NemaStudio.

As the NGW-1 is designed to act as a gateway between NMEA0183 devices and the NMEA2000 bus it is expected that there is a limited number of NMEA devices to be handled simultaneously. In normal situations on board a ship this will be the case indeed.

But with NemaStudio you can set up and run a theoretically unlimited number of NMEA0183 devices and multiplex the output of these over one and the same serial port. It is very tempting and easy to initiate a large number of NMEA devices and feed the output to the NGW-1 port.

With a baud rate of 4800 you will very soon run into the situation that the NGW-1 can’t handle all those messages. Very understandable because 4800 baud means about 450 characters per second. Suppose an average length of 45 characters per NMEA0183 sentence and you can see the problem immediately when you try to transmit more than 10 sentences per second.

NemaStudio offers a few solutions to such a situation. Firstly, you can of course decrease the number of sentences to be send by either reduce the number of simultaneous devices running or by unchecking the sentences you’re not absolutely interested in.

Secondly, you can downgrade the interval time the messages are sent in NemaStudio. Instead of once per second you could set the interval to say 3 seconds for every device, or for devices that require a high update frequency set it to 2 seconds and all others to 10 seconds. Just a few examples, you can experiment with it to achieve an optimum.

As a third option you can of course set a higher baud rate if that is accepted by the receiver.

Now back to the NGW-1. As said, the factory baud rate is set to 4800 and can normally only be changed – either permanent or temporarily – by using a special utility program supplied by Actisense.

But tada! Here is the NemaStudio hack!

In the ports grid on the Communications Settings tab I have introduced a new column: N2000Device. In that column, for each serial port, you can set whether there is a NGW-1 connected to it or not. If you set it to NGW-1 (in the future we are prepared to support other gateways too) the default baud rate changes automatically to 115200 for that port. After that you can eventually change the baud rate to any rate accepted by the NGW-1, but in most situations 115200 will be OK and you can leave it as it is.

NemaStudio will now automatically instruct the NGW-1 to use the set baud rate for the period the port is used. At closing time the NGW-1 is set back to the 4800 default rate.

Introducing this solution will give NemaStudio users the option of connecting to a NMEA2000 network without hassle. Of course one must acquire a NGW-1 from an Actisense dealer for around $150, but licensed users of NemaStudio will find that Sailsoft charges no extra for the latest version of this great software supporting the NGW-1!

Today I share the Sailsoft website statistics of January 2010 with you. The data presented below was collected by Advanced Web Statistics running on the web server.

I was really anxious to see the stats of Jan since I introduced a new web site and also released the first version of NemaStudio by the end of last year. I also expected much of the results of a mini advertisement that I published on Ben Ellisons Panbo blog during the whole of January to promoting Sailsoft.

I was particularly interested in the amount of downloads of NemaStudio of course, and also in how many Panbo readers clicked the link on the ad in order to land on the Sailsoft home page.

Observe that the Panbo advertisement brought me just a very disappointing 13 clicks! Given the fact that I spent $180 on the advertisement the result is an expensive $13.85 per click. Not really an experiment worth repeating!

Until today people downloading my software were confronted with the standard security warning as shown in the image at the left. To be classified as an “Unknown Publisher” has always annoyed me because it looks so very unprofessional. Besides, it could scare potential customers off and that is the last thing I want of course.

The release of Vista made things even worse by introducing the UAC (User Account Control) by popping up the scary warning shown in the image at the right. I really understand the necessity of being trusted by your customers when they download your software – I do also! -but that comes with a price.

Code signing is widely used to protect software that is distributed over the Internet. Code signing does not alter the software; it simply appends a digital signature to the executable code itself.

The size of the Sailsoft business however did not allow for the recurring costs of a code signing certificate. VeriSign for example charges $499 USD for a one year certificate. With the introduction of NemaStudio I felt I could no longer ignore the need for signing the code. Hence I purchased a 3-year digital code signing certificate from Comodo for a reasonable price.

In order to go successfully through the verification process to obtain a code signing certificate the verification organization extensively checks out your credentials. You need to send in various documents to prove who you are and if you are a registered business before you are allowed to buy a certificate from them.

But now customers that download my software can be assured that the software really comes from me (Sailsoft) and that the software was not altered or corrupted since it was signed.

The “Unknown Publisher” download pop-up has been replaced by the pop-up as shown above. From now on downloaders can click on the link to check out the certificate. Even the UAC pop-up shows a more decent warning!

Microsoft .Net Framework

NemaStudio is written on top of the Microsoft .Net Framework. As you may know the .Net Framework includes many libraries with pre-coded solutions including GUI access, data access, database connectivity, algorithms, networking etc. The .Net Framework comes with all versions of Windows: XP, Vista and Windows 7.

The class libraries in the .Net Framework are used by Windows programmers to produce applications by calling the methods exposed by the Framework.

The code thus produced is called MSIL (Microsoft Intermediate Language). At runtime, the MSIL code is interpreted and executed by the CLR, the Common Language Runtime.

.Net Programming Languages

.Net programmers have different programming languages at their disposal to produce .Net applications. Most used languages are C# and VB.Net but there are also compilers available for other languages like Java and even COBOL.

The language compilers share one common element: they all produce MSIL, Microsoft Intermediate Language. MSIL is not machine code but as the name already suggests, it is intermediate code that is translated to machine code and executed at runtime.

Benefits of the .Net architecture

The architecture offers may benefits: one code base, many languages, portability and is also very easy to reverse engineer.

The latter feature is both a blessing and a curse. A blessing because the source code can be easily reconstructed, and a curse because the source code can be easily reconstructed.

Code obfuscation

To prevent undesired reconstruction of his source code the programmer can apply obfuscation techniques like using crippled method names, cryptic strings etc.

Without obfuscation, MSIL code is like Open Source code but then without any protection, not even by public licenses like the GNU license. It is like leaving your front door wide open and go for holidays. Anybody can take your property and do with it what she wants.

The easiest way to obfuscate your code is by applying a third party obfuscation program. There are several obfuscators for MSIL code on the market. NemaStudio is also protected by a third party obfuscator.

Reason to obfuscate

I obfuscated the code of NemaStudio to protect all the long hours of work I’ve been putting in the development of in the program. Remember, those hours were mostly nightly hours and weekends I rather had spent with my family and grand kids. I would hate to see some rogue abusing my work.

If you believe all this sounds a bit paranoia then read the story of what happened to the small software company called Rebex.

But not without risk!

But obfuscation with third party software is not without any risk as I found. Before the release of NemaStudio I had been successfully testing the obfuscated version on Windows XP and all versions of Vista, but I lacked to do so on Windows 7. I expected – Microsoft claiming Win7 completely compatible with Vista – no problems whatsoever. WRONG!

NemaStudio issues with Windows 7

Right after the release I got many responses from customers complaining NemaStudio did not run correctly on Windows 7. It turned out that the obfuscator unintentionally had corrupted some parts of the code. Luckily the developer of the obfuscator provided great support and the problem was solved in a couple of days.

Loyal customers

How many prospective customers I did loose because of this accident I probably will never know. Fortunately I do have many loyal customers and most of them re-installed the corrected version of NemaStudio without complains.

Lessons learned

Lesson learned: always extensively test your software on all versions of the OS it is supposed to run on!

At last! After months of hard work and with the much appreciated help of quite a number of beta testers it is now time to announce the first production version of NemaStudio.

To celebrate this I also decided to introduce a complete new design for the Sailsoft web site. The old one was out there on the internet for over 12 years so it really became time!

Not being a web designer it took a lot more time than anticipated. And yes, I know, I should have left the work to a professional, but then I would never have learned what I’ve learned now…

I have also introduced new pricing for NemaTalker and GPSSimul to bring them a bit more in line with the license price of NemaStudio. A single license of NemaStudio is currently priced at EUR 249, and that is what I believe a fair compensation for all the benefits and features it comes with. And remember: competition is priced in the 4-digit price range for a lot less versatility NemaStudio offers!

At the same time I offer a 50% (yes, fifty percent!) discount for registered NemaTalker customers when they purchase a NemaStudio license before February 1, 2010. They earn a EUR 125 value just by ordering fast!

So far the commercial message……Now back to NemaStudio. The following improvements have been implemented since the last beta version.

NemaStudio now remembers the objects that were open at exiting and re-opens them again at next program start

Optionally you can give an AIS base station a name tag

GPS, Radar and AIS objects now open with a random Lat/Lon position within a preset range from a base position when created new. In the general settings you can set up this base position and range

Plus many minor improvements and reported bug corrections.

Up to the next production version now! Lots of new features on the list!

The origin of beta testing

“The term beta test comes from an IBM hardware product test convention, dating back to punched card tabulating and sorting machines. Hardware first went through an alpha test for preliminary functionality and small scale manufacturing feasibility. Then came a beta test, by people or groups other than the developers, to verify that the hardware correctly performed the functions it was supposed to, and could be manufactured at scales necessary for the market. With the advent of programmable computers and the first shareable software programs, IBM used the same terminology for testing software. As other companies began developing software for their own use, and for distribution to others, the terminology stuck—and now is part of our common vocabulary.”(Source: Wikipedia, the image shows an IBM548 punch card interpreter).

NemaStudio Beta 5

This week Beta 5 of NemaStudio was released. This will be the last beta, the next will be the RTM (release to market) version.

Here is a list of the updates:

According to a setting in the general settings the objects (instruments, targets) will either be saved always, never or on request

The control center reflects the settings for either kilometres or miles now

Sentences can now optionally be logged in an external log file

A licensing mechanism has been included

A splash screen has been added giving the option of entering license data

An ‘about’ form has been added, showing licensing terms

Better ‘Single Shot’ functionality in GPS

Position update interval can now be set in GPS (was fixed at 1 second)

Trace panel renamed to “I/O monitor”

Help functionality with help file introduced (help file still to be completed)

Installer shows license terms you have to agree with

Heading instrument includes functionality to copy the course from a selected GPS

Custom Instrument now saves the control center settings

Velocity instrument gives now the possibility to set each data validator

Heading instrument now copies ROT from rudder setting also

Many more minor improvements

Most issues that you reported are solved in this version

From a user perspective the most visible change is probably the nag screen reminding to purchase a license. Unregistered use will output a maximum of about 500 sentences. Note that this is considerable more than the unregistered version of NemaTalker (100 sentences). Since NemaStudio is capable of spitting out data of a much larger number of instruments and targets simultaneously, trial users should get a better impression of the usability of the program when a larger number of sentences is output before the trial limit is reached.

Of course current beta testers will receive free license codes for NemaStudio.

This week the Beta 4 version of NemaStudio was released. It includes many improvements compared to Beta 3. The most important is that now all instruments have been implemented, including Weather, Sounder, Velocity, Radar and Heading. Also included is the possibility to configure your own “Custom” instrument. All objects have improved functionality compared to NemaTalker. And of course, you can ´mix and match´ the assignment of serial ports to the different instruments as required.

Rudder control

A new `RUDDER`control was added to the Control Panel. With this control you can steer the GPS, simulating a rudder change of your vessel. I have plans to include this functionality in the AIS Class A and Class B targets also.

New test tool

In the picture above you see a test setting with a large laptop at the left and a mini notebook at the right. They are connected via Bluetooth dongles, set up for serial port communication. (See also my article on serial port connections). On the large laptop runs NemaStudio, on the mini notebook runs a tool I found recently, called NavMonPC, according to the author “A Windows Program for the Display, Capture, and Playback of NMEA data”. I found this a great tool for testing NemaStudio output sentences because NavMonPC dynamically parses many NMEA sentences directly to a nice graphical representation, not only with good looking gauges for Course, Speed and Wind but has also a nice map for showing AIS targets.

Recently I got a question from a NemaTalker user asking why I use the term "Nema" instead of "NMEA" in product naming. I know that many more people have been wondering about this. Here is the explanation. I choose for NEMA because I am not certain whether "NMEA" is a registered brand or not and that in no way I am waiting for problems with the NMEA organization concerning naming/branding issues. Besides, I noticed that the term "nema" is often used as a pronunciation shortcut for N-pause-M-pause-E-pause-A in the professional marine business. So if you were also wondering why I use “Nema” instead of N.M.E.A, now you know the reason. If you have an opinion about this, please let me know!

Many NMEA related PC applications send and/or receive NMEA data over a serial connection according to the NMEA0183 standards.

The official NMEA standard recommends a EIA-422 connection, but that is impractical on a normal PC so in most cases RS232C will be used.

In the image we see a serial cross cable, sometimes also known as null-modem cable. It crosses the transmit and receive lines and is used to interconnect two serial ports, either on the same computer or between two different computers. Of course, this cable can only be used directly if there are serial com ports available.

Unfortunately serial ports are becoming rare species on today’s PC’s and almost all currently available laptops have no serial port at all anymore.

So how do we connect serial devices to a PC or how do we connect two PC applications that require serial port communication if there are no serial ports available on our system? Fortunately there are several options we can choose from.

Option 1, USB-to-Serial adapters

If both, or one of the computers we want to connect lack any serial com port, we can use USB-to-Serial adapters. During the installation of the drivers for such an adapter the setup software will install one or more serial ports on your computer. You can check this with Windows Device Manager. But still you need the cross cable for the connection even if you use a USB-to-Serial adapter on both computers, but now you connect the cable between both adapters.

Option 2, Bluetooth

Another option is using Bluetooth. For less than $20 you can purchase two Bluetooth USB sticks and configure serial ports on them. After pairing you have a wireless serial connection between two computers. Make sure that serial ports are supported when you buy the Bluetooth adapters!

Option 3, Virtual Comports

For two applications to be able to talk to each other over a serial connection on one and the same computer, this is by far the most convenient solution. A commercial product for example comes from Eltima, http://www.virtualserialport.com/, and another one from KernelPro http://www.kernelpro.com/advanced-virtual-com-port.html. There are lots of others of course. A great open source virtual comport product I like very much is com0com. You can create any number of serial port pairs on your system. Each pair you may compare to a cross cable if you like. For example, app A transmits data via COM10, app B receives this data via COM11. I use com0com a lot in the configuration as shown in the screenshot while testing NemaStudio against different software like SeaClear, Y-Tronic, Fugawi, CoastalExplorer and others. Just recently I discovered another virtual serial port emulator from Eterlogic, VSPE. I have not been able to test it out yet, but the specs look very promising, and from the specs it should be able to do a lot more but just virtual serial port emulation.

Other options

If you need to connect an external serial device like a GPS and your desktop PC has no serial ports you can purchase and install extension cards with one or more serial ports. For a laptop with a PCMCIA slot you could also buy a PCMCIA card with one or more serial ports.