Merge pull request #46 from PAMGuard/main

get V2.02.08 from main
This commit is contained in:
Douglas Gillespie 2023-06-09 12:53:30 +01:00 committed by GitHub
commit 68b2f3bb53
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 283 additions and 207 deletions

View File

@ -463,25 +463,41 @@ name="_Latest_Version_2.02.08"></a><span lang=EN-US>Latest Version 2.02.08 May
which mostly occurred when processing large datasets of many offline files, has which mostly occurred when processing large datasets of many offline files, has
been fixed.</span></p> been fixed.</span></p>
<p class=MsoNormal><span lang=EN-US>Data Map: “Scroll To Data” pop-up menu,
which didnt always scroll to the correct place, is now fixed. </span></p>
<p class=MsoNormal><span lang=EN-US>Bearing Localiser offline: If reprocessing
bearings, the localizer was not correctly loading required raw or FFT data to
input to the cross correlation algorithm. This is now fixed so that you can
reprocess bearings in viewer mode. </span></p>
<p class=MsoNormal><span lang=EN-US>Map files: Added additional exception handlers
to handle corrupt map files. </span></p>
<h2><span lang=EN-US>New Features</span></h2> <h2><span lang=EN-US>New Features</span></h2>
<p class=MsoNormal><span lang=EN-US>Restart Options: When you restart <p class=MsoNormal><span lang=EN-US>Restart Options: When you restart
processing of offline files, if output data already exist (binary data of processing of offline files, if output data already exist (binary data of
within database tables) you will be asked if you want to overwrite the data, cancel, within database tables) you will be asked if you want to overwrite the data,
or try to continue from where to left off. </span></p> cancel, or try to continue from where to left off. </span></p>
<p class=MsoNormal><span lang=EN-US>Updated SoundTrap sud file interface so <p class=MsoNormal><span lang=EN-US>Updated SoundTrap sud file interface so
that PAMGuard now extracts and stores the Click Detector settings from the sud that PAMGuard now extracts and stores the Click Detector settings from the sud
files and stores them within the PAMGuard configuration. This does not affect files and stores them within the PAMGuard configuration. This does not affect
processing, but is important for record keeping. </span></p> processing, but is important for record keeping. </span></p>
<p class=MsoNormal><span lang=EN-US>GPS options to use any valid RMC or GGA
string. Not all GPS receivers output their RMC data as GPRMC e.g. some may
output as GNRMC. A new option allows the GPS module to use any string, whatever
the first two characters of the string name may be. </span></p>
<h1><span lang=EN-US>Version 2.02.07 January 2023</span></h1> <h1><span lang=EN-US>Version 2.02.07 January 2023</span></h1>
<h2><span lang=EN-US>Bug Fixes</span></h2> <h2><span lang=EN-US>Bug Fixes</span></h2>
<p class=MsoNormal><span lang=EN-US>Use of localization sensor and orientation <p class=MsoNormal><span lang=EN-US>Use of localization sensor and orientation
data for static hydrophones had a bug whereby it would continually forget data for static hydrophones had a bug whereby it would continually forget angle
angle offsets applied to static hydrophones in viewer mode. This is now fixed. </span></p> offsets applied to static hydrophones in viewer mode. This is now fixed. </span></p>
<p class=MsoNormal><span lang=EN-US>Click tool bar: Correctly shows event <p class=MsoNormal><span lang=EN-US>Click tool bar: Correctly shows event
selection options even if no species classification options are in place. </span></p> selection options even if no species classification options are in place. </span></p>
@ -491,8 +507,8 @@ selection options even if no species classification options are in place. </span
mode. Now fixed. </span></p> mode. Now fixed. </span></p>
<p class=MsoNormal><span lang=EN-US>ROCCA: Fixed (another) memory leak which <p class=MsoNormal><span lang=EN-US>ROCCA: Fixed (another) memory leak which
caused PAMGuard to crash when processing large data sets with the ROCCA classifier. caused PAMGuard to crash when processing large data sets with the ROCCA
</span></p> classifier. </span></p>
<p class=MsoNormal><span lang=EN-US>Ishmael Modules: Fixed bug which <p class=MsoNormal><span lang=EN-US>Ishmael Modules: Fixed bug which
occasionally caused crashes when processing many files offline. </span></p> occasionally caused crashes when processing many files offline. </span></p>
@ -509,10 +525,10 @@ generates random chirps between around 200 and 800Hz, roughly the frequency
youd expect sound from higher frequency baleen whales, such as humpbacks, to youd expect sound from higher frequency baleen whales, such as humpbacks, to
vocalise at. &nbsp;&nbsp;</span></p> vocalise at. &nbsp;&nbsp;</span></p>
<p class=MsoNormal><span lang=EN-US>Hiding tool tips. A menu item to <p class=MsoNormal><span lang=EN-US>Hiding tool tips. A menu item to permanently
permanently turn off all tool tips, or tap the Esc key to turn them off for 6 turn off all tool tips, or tap the Esc key to turn them off for 6 seconds if
seconds if they are getting in the way, particularly when trying to interact they are getting in the way, particularly when trying to interact with displays
with displays using the mouse. </span></p> using the mouse. </span></p>
<h1><span lang=EN-US>Version 2.02.06 November 2022</span></h1> <h1><span lang=EN-US>Version 2.02.06 November 2022</span></h1>
@ -535,9 +551,9 @@ whistle classification module.</span></p>
SoundTrap autonomous recorders from Ocean Instruments, you no longer need to SoundTrap autonomous recorders from Ocean Instruments, you no longer need to
decompress the SoundTrap files prior to processing. This will save time and a decompress the SoundTrap files prior to processing. This will save time and a
lot of disk space. Extraction of clicks from the inbuilt SoundTrap Click lot of disk space. Extraction of clicks from the inbuilt SoundTrap Click
detector can also happen while processing SUD file data with other detectors, detector can also happen while processing SUD file data with other detectors, thereby
thereby streamlining the whole processing chain. Read the online Help for streamlining the whole processing chain. Read the online Help for details.
details. &nbsp;&nbsp;</span></p> &nbsp;&nbsp;</span></p>
<h1><span lang=EN-US>Version 2.02.05 October 2022</span></h1> <h1><span lang=EN-US>Version 2.02.05 October 2022</span></h1>
@ -670,12 +686,12 @@ understand the notes listed for <a href="#_Latest_Beta_Version_2.00.10">Beta
Version 2.00.10</a> before proceeding with installation and use of this Version 2.00.10</a> before proceeding with installation and use of this
version.</b></p> version.</b></p>
<p class=MsoNormal>This version of PAMGuard has been bundled with Java 16 <p class=MsoNormal>This version of PAMGuard has been bundled with Java 16 (OpenJDK
(OpenJDK release), so you will not need to install a java runtime engine release), so you will not need to install a java runtime engine separately.
separately. PSFX files generated in previous beta releases (2.xx.xx) should be PSFX files generated in previous beta releases (2.xx.xx) should be compatible
compatible with this version, and vice-versa. PSF files generated in core with this version, and vice-versa. PSF files generated in core releases
releases (1.15.xx) can be loaded in this version, but will be converted to PSFX (1.15.xx) can be loaded in this version, but will be converted to PSFX files
files when PAMGuard exits.</p> when PAMGuard exits.</p>
<p class=MsoNormal style='margin-bottom:0cm'><span style='font-size:12.0pt; <p class=MsoNormal style='margin-bottom:0cm'><span style='font-size:12.0pt;
font-family:"Times New Roman",serif'>&nbsp;</span></p> font-family:"Times New Roman",serif'>&nbsp;</span></p>
@ -723,8 +739,8 @@ params </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug
&nbsp; 492. Data Model does not update button//tooltip text when underlying &nbsp; 492. Data Model does not update button//tooltip text when underlying data
data changes </p> changes </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug
@ -800,9 +816,9 @@ Update whistle and moan detector to better handle small stubs or spurs coming
off the side of whistles </p> off the side of whistles </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>13. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>13. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
Extend the Hyperbolic Localiser to handle 2D planar arrays (previously limited lang=EN-US> </span>Extend the Hyperbolic Localiser to handle 2D planar arrays
to 3D volumetric arrays) </p> (previously limited to 3D volumetric arrays) </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>14. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>14. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -816,20 +832,20 @@ decimating/upsampling by a non-integer amount </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>16. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>16. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Noise Level Outputs - as an aid to performance diagnosis, some detectors Noise Level Outputs - as an aid to performance diagnosis, some detectors
(currently the GPL, Click Detector and Whistle and Moan Detector) are outputting (currently the GPL, Click Detector and Whistle and Moan Detector) are
additional noise metrics to their binary output files. These can be read with outputting additional noise metrics to their binary output files. These can be
the <a href="https://sourceforge.net/projects/pamguard/files/Matlab/">PAMGuard read with the <a href="https://sourceforge.net/projects/pamguard/files/Matlab/">PAMGuard
Matlab library</a> and used to diagnose system performance in varying noise Matlab library</a> and used to diagnose system performance in varying noise
conditions. Improved displays within PAMGuard for these noise metrics will be conditions. Improved displays within PAMGuard for these noise metrics will be
included in a future release. </p> included in a future release. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>17. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>17. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
An implementation of the Generalized Power Law Detector, developed by Tyler lang=EN-US> </span>An implementation of the Generalized Power Law Detector,
Helble ([Helble et al., ÃÂA generalized power-law detection algorithm for humpback developed by Tyler Helble ([Helble et al., ÃÂA generalized power-law
whale vocalizationsÃÂ, The Journal of the Acoustical Society of America, vol. detection algorithm for humpback whale vocalizationsÃÂ, The Journal of the
131, no. 4, pp. 2682ÃÂ2699, 2012) is now available. For details, see the Acoustical Society of America, vol. 131, no. 4, pp. 2682ÃÂ2699, 2012) is now
online help </p> available. For details, see the online help </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>18. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>18. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -850,11 +866,11 @@ understand the notes listed for <a href="#_Latest_Beta_Version_2.00.10">Beta
Version 2.00.10</a> before proceeding with installation and use of this Version 2.00.10</a> before proceeding with installation and use of this
version.</b></p> version.</b></p>
<p class=MsoNormal>This version of PAMGuard has been bundled with Java 13 <p class=MsoNormal>This version of PAMGuard has been bundled with Java 13 (release
(release 13.0.1). PSFX files generated in previous beta releases (2.xx.xx) 13.0.1). PSFX files generated in previous beta releases (2.xx.xx) should be
should be compatible with this version, and vice-versa. PSF files generated in compatible with this version, and vice-versa. PSF files generated in core
core releases (1.15.xx) can be loaded in this version, but will be converted to releases (1.15.xx) can be loaded in this version, but will be converted to PSFX
PSFX files when PAMGuard exits.</p> files when PAMGuard exits.</p>
<p class=MsoNormal><b><span lang=EN-US>Bug Fixes</span></b></p> <p class=MsoNormal><b><span lang=EN-US>Bug Fixes</span></b></p>
@ -941,9 +957,9 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
lang=EN-US> </span>Better auto-scaling in Ishmael Detector graphics window. </p> lang=EN-US> </span>Better auto-scaling in Ishmael Detector graphics window. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
Change to Windows temporary folder location, to get around Windows Security lang=EN-US> </span>Change to Windows temporary folder location, to get around Windows
settings that were preventing some modules from working properly. </p> Security settings that were preventing some modules from working properly. </p>
<!-- ************************************************************************************************************************** --><!-- ************************************************************************************************************************** --> <!-- ************************************************************************************************************************** --><!-- ************************************************************************************************************************** -->
@ -999,8 +1015,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>8. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>8. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug
&nbsp; 460. Click Detector BT Display vertical axis shows all zeroes when &nbsp; 460. Click Detector BT Display vertical axis shows all zeroes when zooming
zooming out </p> out </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>9. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>9. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug
@ -1171,8 +1187,8 @@ lang=EN-US> </span>Bug 436. Bug in Serial Port interface was occassionally
causing PAMGuard to crash without error message.</p> causing PAMGuard to crash without error message.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
Bug 437. Right whale detector crashing if no input was set.</p> lang=EN-US> </span>Bug 437. Right whale detector crashing if no input was set.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -1283,8 +1299,8 @@ Added a few new options to the Click Detector Sweep Classifier. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Add option to the Map module's Plot Overlay Options dialog, lang=EN-US> </span>Add option to the Map module's Plot Overlay Options dialog, to
to show events occuring in the future (<em><span style='font-family:"Calibri",sans-serif'>look show events occuring in the future (<em><span style='font-family:"Calibri",sans-serif'>look
ahead</span></em>) instead of the default display of events which have already ahead</span></em>) instead of the default display of events which have already
occurred. Can make it easier to match up the map with clicks seen in the Click occurred. Can make it easier to match up the map with clicks seen in the Click
Detector display. </p> Detector display. </p>
@ -1605,9 +1621,9 @@ from many channels.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bugs 398 and 399. Click Detector, FFT Engine and Filter modules were </span>Bugs 398 and 399. Click Detector, FFT Engine and Filter modules were losing
losing source during startup, if the source selected was not the first raw data source during startup, if the source selected was not the first raw data source
source in the list.</p> in the list.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -1721,10 +1737,10 @@ lang=EN-US> </span>Better way of coupling scrollers in User Display panels -
see new options in main menu.</p> see new options in main menu.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
Added Matched Template Click Classifier. Classifies clicks based on an ideal lang=EN-US> </span>Added Matched Template Click Classifier. Classifies clicks based
template to match and a template to reject. An example of this is to classify on an ideal template to match and a template to reject. An example of this is
beaked whale clicks in an environment with dolphin clicks.</p> to classify beaked whale clicks in an environment with dolphin clicks.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -1988,8 +2004,8 @@ invalid parameters. Have added diagnostics to prevent this.</p>
<p class=MsoNormal><b><span lang=EN-US>Upgrades</span></b></p> <p class=MsoNormal><b><span lang=EN-US>Upgrades</span></b></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
User is now able to specify Soundtrap date/time format</p> lang=EN-US> </span>User is now able to specify Soundtrap date/time format</p>
<!-- ************************************************************************************************************************** --> <!-- ************************************************************************************************************************** -->
@ -2081,9 +2097,9 @@ Added circular movement option to source simulation </p>
<h1><a name="_Latest_Beta_Version_2.00.10"></a><span lang=EN-US>Beta Version <h1><a name="_Latest_Beta_Version_2.00.10"></a><span lang=EN-US>Beta Version
2.00.10 June 2017</span></h1> 2.00.10 June 2017</span></h1>
<p class=MsoNormal><span lang=EN-US>PAMGuard Version 2 contains major updates. <p class=MsoNormal><span lang=EN-US>PAMGuard Version 2 contains major updates. You
You should read and understand these notes before proceeding with installation should read and understand these notes before proceeding with installation and
and use of this version. These changes have been funded under contract to NOAA use of this version. These changes have been funded under contract to NOAA
Fisheries, contract no. WE-133F-16-SE-1126.</span></p> Fisheries, contract no. WE-133F-16-SE-1126.</span></p>
<h3><span lang=EN-US>Binary File Structural Changes</span></h3> <h3><span lang=EN-US>Binary File Structural Changes</span></h3>
@ -2161,10 +2177,10 @@ so they will no longer work with older PAMGuard versions.</span></p>
<p class=MsoListParagraph style='margin-left:54.0pt;text-indent:-36.0pt'><span <p class=MsoListParagraph style='margin-left:54.0pt;text-indent:-36.0pt'><span
lang=EN-US>2.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US>2.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>Display colour options will be lost and most data displayed </span><span lang=EN-US>Display colour options will be lost and most data
on the map may default to black. This is due to the above changes to how displayed on the map may default to black. This is due to the above changes to
colours are managed. Changing back to the colours of your choice is relatively how colours are managed. Changing back to the colours of your choice is
simple through the PAMGuard GUI. </span></p> relatively simple through the PAMGuard GUI. </span></p>
<p class=MsoListParagraph style='margin-left:54.0pt;text-indent:-36.0pt'><span <p class=MsoListParagraph style='margin-left:54.0pt;text-indent:-36.0pt'><span
lang=EN-US>&nbsp;</span></p> lang=EN-US>&nbsp;</span></p>
@ -2220,14 +2236,14 @@ switches/parameters to be included in *.ini files.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.</span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>Bug 308. Map Overlay Control. </span>Storage of data </span><span lang=EN-US>Bug 308. Map Overlay Control. </span>Storage of data saying
saying what get's plotted on each map and for how long became corrupted and the what get's plotted on each map and for how long became corrupted and the list
list grew to a ridiculous size. Code has been put in place to a) stop it grew to a ridiculous size. Code has been put in place to a) stop it happening
happening again and b) to repair any configuration files which are corrupted. again and b) to repair any configuration files which are corrupted. Corrupted
Corrupted files will be slow to load, slow to save and will be &gt; several files will be slow to load, slow to save and will be &gt; several megabytes in
megabytes in size. It may be necessary to delete the PamguardSettings table in size. It may be necessary to delete the PamguardSettings table in any databases
any databases since these too may have become oversized which will slow down since these too may have become oversized which will slow down viewer mode
viewer mode PAMGuard start-up.</p> PAMGuard start-up.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2488,8 +2504,8 @@ detector has been tidied up so that there are a) All Click, b) Tracked Clicks
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>When tracking online, all the click marking information </span><span lang=EN-US>When tracking online, all the click marking information
is written to the same database tables as are used for offline target motion is written to the same database tables as are used for offline target motion
analysis. This means than when reviewing data offline, the tracks created in real analysis. This means than when reviewing data offline, the tracks created in
time are now available for review and further analysis. </span></p> real time are now available for review and further analysis. </span></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4.</span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2517,9 +2533,9 @@ the future. </span></p>
<p class=MsoNormal><i>Logger Form Design</i></p> <p class=MsoNormal><i>Logger Form Design</i></p>
<p class=MsoNormal>A GUI driven system for designing Logger forms has been <p class=MsoNormal>A GUI driven system for designing Logger forms has been released.
released. Currently, this feature has no online help, but is reasonably Currently, this feature has no online help, but is reasonably intuitive
intuitive compared to the old method of typing directly into the database. </p> compared to the old method of typing directly into the database. </p>
<p class=MsoNormal><i><span lang=EN-US>Improved Number handling</span></i></p> <p class=MsoNormal><i><span lang=EN-US>Improved Number handling</span></i></p>
@ -2719,8 +2735,8 @@ same click multiple times</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.</span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>Bug 253. Database import fails when Access database </span><span lang=EN-US>Bug 253. Database import fails when Access database contains
contains queries. Fixed.</span></p> queries. Fixed.</span></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2825,10 +2841,10 @@ displaying in the viewer. This is now fixed. </span></p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span <p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span
lang=EN-US>3.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US>3.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>Bug 248. Crash in hydrophone array manager. Bug in </span><span lang=EN-US>Bug 248. Crash in hydrophone array manager. Bug in array
array manager would crash PAMGuard when the click detector was configured with manager would crash PAMGuard when the click detector was configured with more
more channels than the sound acquisition system (almost impossible to achieve, channels than the sound acquisition system (almost impossible to achieve, but
but someone managed it). </span></p> someone managed it). </span></p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span <p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span
lang=EN-US>4.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US>4.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2897,8 +2913,8 @@ writing results files. Fixed. </p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span <p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span
lang=EN-US>7.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US>7.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug 237. Logger forms not saving data to database after sound </span>Bug 237. Logger forms not saving data to database after sound acquisition
acquisition starts. Fixed. </p> starts. Fixed. </p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'>8.<span <p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'>8.<span
style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2941,15 +2957,15 @@ which is useful when using PAMGuard for demonstration purposes. </p>
lang=EN-US>4.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US>4.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>The sound File and Folder audio input systems now have an optional time </span>The sound File and Folder audio input systems now have an optional time
zone setting. Note that PAMGuard analysis should still all be taking place in zone setting. Note that PAMGuard analysis should still all be taking place in
UTC and that this option is intended to allow the conversion of file times UTC and that this option is intended to allow the conversion of file times which
which were not recorded as UTC into UTC and not the other way around. Use the were not recorded as UTC into UTC and not the other way around. Use the option
option with caution !</p> with caution !</p>
<p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span <p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span
lang=EN-US>5.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US>5.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>The Open Office Database system has been removed from the list of </span>The Open Office Database system has been removed from the list of available
available options since it is not reliable. If you require a free database options since it is not reliable. If you require a free database solution we
solution we recommend you use the MySql Community Server <a recommend you use the MySql Community Server <a
href="http://dev.mysql.com/downloads/mysql/">http://dev.mysql.com/downloads/mysql/</a></p> href="http://dev.mysql.com/downloads/mysql/">http://dev.mysql.com/downloads/mysql/</a></p>
<p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span <p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span
@ -3172,8 +3188,8 @@ correctly calculated in real world coordinates. </p>
<p class=MsoNormal><i>Wild ArcGIS Interface</i> (Maps and Mapping group)</p> <p class=MsoNormal><i>Wild ArcGIS Interface</i> (Maps and Mapping group)</p>
<p class=MsoNormal>This module, developed by Michael Oswald / SWFSC, allows <p class=MsoNormal>This module, developed by Michael Oswald / SWFSC, allows
PAMGuard to output data in a format suitable for display in the WILD ArcGIS marine PAMGuard to output data in a format suitable for display in the WILD ArcGIS
mammal survey package. See online help for details. </p> marine mammal survey package. See online help for details. </p>
<p class=MsoNormal><i>Alarms</i> (Utilities Group)</p> <p class=MsoNormal><i>Alarms</i> (Utilities Group)</p>
@ -3380,9 +3396,9 @@ other data sources for the PAMGuard viewer. </p>
<p class=MsoNormal style='margin-left:36.0pt'><i>Database</i></p> <p class=MsoNormal style='margin-left:36.0pt'><i>Database</i></p>
<p class=MsoNormal style='margin-left:36.0pt'>Can now copy data from binary <p class=MsoNormal style='margin-left:36.0pt'>Can now copy data from binary storage
storage to the database offline for any module having both binary and database to the database offline for any module having both binary and database storage.
storage. </p> </p>
<p class=MsoNormal style='margin-left:36.0pt'>Can create a blank MS Access <p class=MsoNormal style='margin-left:36.0pt'>Can create a blank MS Access
database (2007 and later *.accdb formats only).</p> database (2007 and later *.accdb formats only).</p>
@ -3475,9 +3491,9 @@ have implemented database storage for output of these modules. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Radar Display: A bug which stopped the radar display from correctly displaying </span>Radar Display: A bug which stopped the radar display from correctly
bearings to whistles from arrays containing more than two hydrophone elements displaying bearings to whistles from arrays containing more than two hydrophone
has been fixed. </p> elements has been fixed. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -3533,8 +3549,8 @@ start-up.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug in Noise Monitor. Version 1.11.01 would crash if only a subset of </span>Bug in Noise Monitor. Version 1.11.01 would crash if only a subset of
channels were selected, e.g. if you only measured noise on channel 0 of a two channels were selected, e.g. if you only measured noise on channel 0 of a two channel
channel configuration. This bug is now fixed</p> configuration. This bug is now fixed</p>
<h2>Version 1.11.01 Beta April 2012</h2> <h2>Version 1.11.01 Beta April 2012</h2>
@ -3589,8 +3605,8 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bearings can be calculated using the envelope of the waveform rather than </span>Bearings can be calculated using the envelope of the waveform rather
the full waveform. The waveform or envelope can also be filtered prior to than the full waveform. The waveform or envelope can also be filtered prior to
bearing calculation.</p> bearing calculation.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
@ -3746,8 +3762,8 @@ frequency division (i.e. previous versions would convert well from 96kHz to
<p class=MsoNormal><b>Bug fixes</b></p> <p class=MsoNormal><b>Bug fixes</b></p>
<p class=MsoNormal>1. Placement of axes on some displays (array manager and depth <p class=MsoNormal>1. Placement of axes on some displays (array manager and
side panel). Problem in 1.9.01 Beta now fixed. </p> depth side panel). Problem in 1.9.01 Beta now fixed. </p>
<p class=MsoNormal>2. Fixed problems of NMEA read out not restarting after a <p class=MsoNormal>2. Fixed problems of NMEA read out not restarting after a
serial drop out. NMEA now restarts correctly. </p> serial drop out. NMEA now restarts correctly. </p>
@ -3809,8 +3825,8 @@ of channel numbering was only implemented several years into the PAMGUARD
project, it was never fully implemented or well supported by the different project, it was never fully implemented or well supported by the different
modules which resulted in a number of bugs which could cause confusion as to modules which resulted in a number of bugs which could cause confusion as to
which hydrophones were being used during localisation or during calibrated which hydrophones were being used during localisation or during calibrated
measurement. The situation tended to only arise with a small number of ASIO measurement. The situation tended to only arise with a small number of ASIO sound
sound cards such as the RME Fireface 400 on which the most useful inputs, the cards such as the RME Fireface 400 on which the most useful inputs, the
balanced line inputs, are hardware channels 4,5,6 and 7 on the back of the balanced line inputs, are hardware channels 4,5,6 and 7 on the back of the
instrument. (On the Fireface 800, the balanced line inputs are channels 0 to instrument. (On the Fireface 800, the balanced line inputs are channels 0 to
7). When using the National Instruments system, data were always sent into the 7). When using the National Instruments system, data were always sent into the
@ -3833,14 +3849,13 @@ out a better system for handling channel numbering in PAMGUARD and have decided
that the only practical thing to do is to force all software channel numbering that the only practical thing to do is to force all software channel numbering
back to a zero indexed system. i.e. even if you read out hardware channels back to a zero indexed system. i.e. even if you read out hardware channels
3,4,5 and 6, within PAMGUARD, everywhere apart from the Sound acquisition 3,4,5 and 6, within PAMGUARD, everywhere apart from the Sound acquisition
dialog, you will see them listed as channels 0,1,2 and 3. &nbsp;The dialog, you will see them listed as channels 0,1,2 and 3. &nbsp;The consequences
consequences of doing this are mainly very good. Most users will not notice any of doing this are mainly very good. Most users will not notice any changes. For
changes. For those who need for some reason to read channel numbers not those who need for some reason to read channel numbers not starting at zero
starting at zero things will be more stable. However, when you go to a new things will be more stable. However, when you go to a new version with this new
version with this new feature, it will be necessary to reconfigure all the feature, it will be necessary to reconfigure all the modules in any existing
modules in any existing configurations. To do this, open the configuration configurations. To do this, open the configuration dialog for each module in
dialog for each module in turn and select the correct, zero indexed, channel turn and select the correct, zero indexed, channel number. </p>
number. </p>
<p class=MsoNormal><b>Other Changes / new features</b></p> <p class=MsoNormal><b>Other Changes / new features</b></p>
@ -3897,8 +3912,8 @@ existing configurations. </p>
<p class=MsoNormal>Sound acquisition</p> <p class=MsoNormal>Sound acquisition</p>
<p class=MsoNormal>Changes made for a previous Mac build now incorporated into <p class=MsoNormal>Changes made for a previous Mac build now incorporated into main
main Beta branch. This should allow for basic 2 channel sound acquisition using Beta branch. This should allow for basic 2 channel sound acquisition using
Macs. </p> Macs. </p>
<p class=MsoNormal>Bug Fixes</p> <p class=MsoNormal>Bug Fixes</p>
@ -4022,10 +4037,10 @@ synchronisation.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Wigner time-frequency plot for the click detector. Clicks are NOT automatically </span>Wigner time-frequency plot for the click detector. Clicks are NOT
displayed in the Winger window as they are for the waveform and spectrum automatically displayed in the Winger window as they are for the waveform and
windows since the Wigner transformation is very time consuming. Clicks will be spectrum windows since the Wigner transformation is very time consuming. Clicks
displayed if you select them with the mouse.</p> will be displayed if you select them with the mouse.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -4091,9 +4106,8 @@ methods used in PAMGUARD</p>
<p class=MsoNormal><b>New Modules</b></p> <p class=MsoNormal><b>New Modules</b></p>
<p class=MsoNormal>Two new modules are packaged. These are still in the final <p class=MsoNormal>Two new modules are packaged. These are still in the final stages
stages of development. Feedback is most welcome. See online help for further of development. Feedback is most welcome. See online help for further details. </p>
details. </p>
<p class=MsoNormal>Whistle and Moan Detector</p> <p class=MsoNormal>Whistle and Moan Detector</p>
@ -4120,9 +4134,9 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Channel lists in output data streams of Decimator and other modules fixed, </span>Channel lists in output data streams of Decimator and other modules
so that when channel numbers change, downstream modules configurations get the fixed, so that when channel numbers change, downstream modules configurations
correct list of available channels. </p> get the correct list of available channels. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -4334,8 +4348,8 @@ acquisition.&nbsp; </p>
<p class=MsoNormal><b>Bug fixes</b></p> <p class=MsoNormal><b>Bug fixes</b></p>
<p class=MsoNormal>Speed up of graphics, particularly regarding large <p class=MsoNormal>Speed up of graphics, particularly regarding large quantities
quantities of gps track &nbsp;data</p> of gps track &nbsp;data</p>
<p class=MsoNormal>National Instruments cards with names &gt; 20 characters <p class=MsoNormal>National Instruments cards with names &gt; 20 characters
long are now correctly &nbsp;recognised. </p> long are now correctly &nbsp;recognised. </p>
@ -4763,8 +4777,8 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Multi animal click tracking with least squares fit calculation of position </span>Multi animal click tracking with least squares fit calculation of
on map</p> position on map</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

View File

@ -104,9 +104,13 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings, D
boolean ans = super.prepareInputFile(); boolean ans = super.prepareInputFile();
if (ans == false && ++currentFile < allFiles.size()) { if (ans == false && ++currentFile < allFiles.size()) {
System.out.println("Failed to open sound file. Try again with file " + allFiles.get(currentFile).getName()); System.out.println("Failed to open sound file. Try again with file " + allFiles.get(currentFile).getName());
/*
* jumping striaght to the next file messes it up if it thinks the files
* are continuous, so we HAVE to stop and restart.
*/
// return prepareInputFile();
PamController.getInstance().pamStop(); PamController.getInstance().pamStop();
PamController.getInstance().startLater(); PamController.getInstance().startLater(false);
} }
return ans; return ans;
} }
@ -648,7 +652,17 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings, D
} }
setFolderProgress(); setFolderProgress();
// sayEta(); // sayEta();
ans = prepareInputFile(); /*
* I think that here, we just need a check of the file. the prepareInputFile in
* this class will (on failure) move straight to the next file and also issue a
* stop/start, which is not good if it's trying a continuous file, where this is
* being called, if false is returned it should manage moving onto the next file by
* itself if we use the super.prep ....
*/
ans = super.prepareInputFile();
if (ans == false) {
return false;
}
currentFileStart = System.currentTimeMillis(); currentFileStart = System.currentTimeMillis();
// if (ans && audioFormat.getSampleRate() != currentSampleRate && currentFile > 0) { // if (ans && audioFormat.getSampleRate() != currentSampleRate && currentFile > 0) {
// acquisitionControl.getDaqProcess().setSampleRate(currentSampleRate = audioFormat.getSampleRate(), true); // acquisitionControl.getDaqProcess().setSampleRate(currentSampleRate = audioFormat.getSampleRate(), true);

View File

@ -22,7 +22,7 @@ public class SUDFileType extends SoundFileType {
if (isShown) { if (isShown) {
return; return;
} }
WarnOnce.showWarning("SoundTrap SUD Files", sudInfoText, WarnOnce.OK_OPTION); // WarnOnce.showWarning("SoundTrap SUD Files", sudInfoText, WarnOnce.OK_OPTION);
isShown = true; isShown = true;
} }

View File

@ -48,9 +48,9 @@ public class SudAudioFile extends WavAudioFile {
} }
// don't do anything and it will try the built in Audiosystem // don't do anything and it will try the built in Audiosystem
catch (UnsupportedAudioFileException e) { catch (UnsupportedAudioFileException e) {
System.err.println("Could not open sud file: not a supported file " + soundFile.getName()); System.err.println("UnsupportedAudioFileException: Could not open sud file: not a supported file " + soundFile.getName());
System.err.println(e.getMessage());
e.printStackTrace(); // e.printStackTrace();
} catch (IOException e) { } catch (IOException e) {
System.err.println("Could not open sud file: IO Exception: " + soundFile.getName()); System.err.println("Could not open sud file: IO Exception: " + soundFile.getName());

View File

@ -46,7 +46,8 @@ public class SudAudioFileReader {
try { try {
sudAudioInputStream = SudAudioInputStream.openInputStream(file, sudParams, false); sudAudioInputStream = SudAudioInputStream.openInputStream(file, sudParams, false);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); String msg = String.format("Corrupt sud file %s: %s", file.getName(), e.getMessage());
throw new UnsupportedAudioFileException(msg);
} }
return sudAudioInputStream; return sudAudioInputStream;
} }

View File

@ -245,6 +245,31 @@ public class GPSControl extends PamControlledUnit implements PamSettings, Positi
public GpsDataUnit getShipPosition(long timeMilliseconds) { public GpsDataUnit getShipPosition(long timeMilliseconds) {
return getGpsDataBlock().getClosestUnitMillis(timeMilliseconds); return getGpsDataBlock().getClosestUnitMillis(timeMilliseconds);
} }
/**
* Do we want this string ? It will be either RMC or GGA and may want wildcarding
* @param stringId
* @return
*/
public boolean wantString(String stringId) {
if (stringId == null || stringId.length() < 6) {
return false;
}
if (gpsControl.gpsParameters.allowWildcard) {
String lastBit = stringId.substring(3, 6);
switch (gpsControl.gpsParameters.mainString) {
case GPSParameters.READ_RMC:
return lastBit.equals("RMC");
case GPSParameters.READ_GGA:
return lastBit.equals("GGA");
default:
return false;
}
}
else {
String wantedString = gpsControl.getWantedString();
return stringId.equals(wantedString);
}
}
/** /**
* Get the name of the string we're wanting. * Get the name of the string we're wanting.

View File

@ -59,6 +59,8 @@ public class GPSParameters implements Serializable, Cloneable, ManagedParameters
public String rmcInitials = "GP"; public String rmcInitials = "GP";
public String ggaInitials = "GP"; public String ggaInitials = "GP";
public boolean allowWildcard = true;
/** /**
* Attempt to read true heading information * Attempt to read true heading information
*/ */

View File

@ -149,9 +149,9 @@ public class GPSParametersDialog extends PamDialog {
} }
} }
public static GPSParameters showDialog(Frame parentFrame, GPSParameters gpsParameters) { public static GPSParameters showDialog(Frame parentFrame, GPSParameters gpsParameters) {
if (parentFrame != lastFrame || gpsParametersDialog == null) { // if (parentFrame != lastFrame || gpsParametersDialog == null) {
gpsParametersDialog = new GPSParametersDialog(parentFrame); gpsParametersDialog = new GPSParametersDialog(parentFrame);
} // }
gpsParametersDialog.gpsParameters = gpsParameters.clone(); gpsParametersDialog.gpsParameters = gpsParameters.clone();
gpsParametersDialog.setParams(); gpsParametersDialog.setParams();
gpsParametersDialog.setVisible(true); gpsParametersDialog.setVisible(true);
@ -335,6 +335,7 @@ public class GPSParametersDialog extends PamDialog {
JRadioButton ggaString; JRadioButton ggaString;
JTextField rmcInitials; JTextField rmcInitials;
JTextField ggaInitials; JTextField ggaInitials;
JCheckBox allowWildcard;
public MainStringPanel() { public MainStringPanel() {
super(); super();
setBorder(new TitledBorder("Main Nav' data string")); setBorder(new TitledBorder("Main Nav' data string"));
@ -345,6 +346,14 @@ public class GPSParametersDialog extends PamDialog {
ButtonGroup buttonGroup = new ButtonGroup(); ButtonGroup buttonGroup = new ButtonGroup();
c.gridx = 0;
c.gridy++;
c.gridwidth = 5;
this.add(allowWildcard = new JCheckBox("Allow any string initials"), c);
allowWildcard.setToolTipText("Use RMC or GGA data from any source independent of the string initials (e.g. GP, GN, etc.)");
c.gridy ++;
c.gridwidth = 1;
c.gridx=0;
addComponent(this, new JLabel("RMC String"), c); addComponent(this, new JLabel("RMC String"), c);
c.gridx ++; c.gridx ++;
addComponent(this, rmcString = new JRadioButton(""), c); addComponent(this, rmcString = new JRadioButton(""), c);
@ -355,6 +364,7 @@ public class GPSParametersDialog extends PamDialog {
c.gridx = 0; c.gridx = 0;
c.gridy ++; c.gridy ++;
c.gridwidth = 1;
addComponent(this, new JLabel("GGA String"), c); addComponent(this, new JLabel("GGA String"), c);
c.gridx++; c.gridx++;
addComponent(this, ggaString = new JRadioButton(""), c); addComponent(this, ggaString = new JRadioButton(""), c);
@ -363,6 +373,7 @@ public class GPSParametersDialog extends PamDialog {
c.gridx++; c.gridx++;
addComponent(this, new JLabel(" GGA"), c); addComponent(this, new JLabel(" GGA"), c);
allowWildcard.addActionListener(this);
rmcString.addActionListener(this); rmcString.addActionListener(this);
ggaString.addActionListener(this); ggaString.addActionListener(this);
buttonGroup.add(rmcString); buttonGroup.add(rmcString);
@ -374,10 +385,12 @@ public class GPSParametersDialog extends PamDialog {
ggaString.setSelected(gpsParameters.mainString == GPSParameters.READ_GGA); ggaString.setSelected(gpsParameters.mainString == GPSParameters.READ_GGA);
rmcInitials.setText(gpsParameters.rmcInitials); rmcInitials.setText(gpsParameters.rmcInitials);
ggaInitials.setText(gpsParameters.ggaInitials); ggaInitials.setText(gpsParameters.ggaInitials);
allowWildcard.setSelected(gpsParameters.allowWildcard);
enableControls(); enableControls();
} }
public boolean getParams() { public boolean getParams() {
gpsParameters.allowWildcard = allowWildcard.isSelected();
if (ggaString.isSelected()) { if (ggaString.isSelected()) {
gpsParameters.mainString = GPSParameters.READ_GGA; gpsParameters.mainString = GPSParameters.READ_GGA;
} }
@ -385,12 +398,12 @@ public class GPSParametersDialog extends PamDialog {
gpsParameters.mainString = GPSParameters.READ_RMC; gpsParameters.mainString = GPSParameters.READ_RMC;
} }
gpsParameters.rmcInitials = rmcInitials.getText(); gpsParameters.rmcInitials = rmcInitials.getText();
if (gpsParameters.rmcInitials.length() != 2) { if (gpsParameters.rmcInitials.length() != 2 && !gpsParameters.allowWildcard) {
return false; return showWarning("Expecting a two character identifier for RMC strings");
} }
gpsParameters.ggaInitials = ggaInitials.getText(); gpsParameters.ggaInitials = ggaInitials.getText();
if (gpsParameters.ggaInitials.length() != 2) { if (gpsParameters.ggaInitials.length() != 2 && !gpsParameters.allowWildcard) {
return false; return showWarning("Expecting a two character identifier for GGA strings");
} }
return true; return true;
} }
@ -400,8 +413,9 @@ public class GPSParametersDialog extends PamDialog {
} }
private void enableControls() { private void enableControls() {
rmcInitials.setEnabled(rmcString.isSelected()); boolean wild = allowWildcard.isSelected();
ggaInitials.setEnabled(ggaString.isSelected()); rmcInitials.setEnabled(rmcString.isSelected() & !wild);
ggaInitials.setEnabled(ggaString.isSelected() & !wild);
} }

View File

@ -57,7 +57,7 @@ public class ProcessNmeaData extends PamProcess {
private GpsLogger gpsLogger; private GpsLogger gpsLogger;
private String wantedString = "$GPRMC"; // private String wantedString = "$GPRMC";
private GpsDataUnit previousUnit = null; private GpsDataUnit previousUnit = null;
@ -161,7 +161,7 @@ public class ProcessNmeaData extends PamProcess {
@Override @Override
public void noteNewSettings() { public void noteNewSettings() {
findNMEADataBlock(); findNMEADataBlock();
setWantedString(); // setWantedString();
double minRate = Math.max(.2, 1./gpsController.gpsParameters.readInterval); double minRate = Math.max(.2, 1./gpsController.gpsParameters.readInterval);
processCheck.getOutputCounter().setMinRate(minRate); processCheck.getOutputCounter().setMinRate(minRate);
} }
@ -179,7 +179,8 @@ public class ProcessNmeaData extends PamProcess {
StringBuffer nmeaString = nmeaData.getCharData(); StringBuffer nmeaString = nmeaData.getCharData();
String stringId = NMEADataBlock.getSubString(nmeaString, 0); String stringId = NMEADataBlock.getSubString(nmeaString, 0);
if (stringId.equalsIgnoreCase(wantedString)) { // if (stringId.equalsIgnoreCase(wantedString)) {
if (gpsController.wantString(stringId)) {
gpsData = new GpsData(nmeaString, gpsController.gpsParameters.mainString); // GpsData constructor which gpsData = new GpsData(nmeaString, gpsController.gpsParameters.mainString); // GpsData constructor which
// unpacks the string. // unpacks the string.
if (gpsData.isDataOk()) { if (gpsData.isDataOk()) {
@ -316,13 +317,13 @@ public class ProcessNmeaData extends PamProcess {
super.clearOldData(); super.clearOldData();
} }
public String getWantedString() { // public String getWantedString() {
return wantedString; // return wantedString;
} // }
//
public void setWantedString() { // public void setWantedString() {
wantedString = gpsController.getWantedString(); // wantedString = gpsController.getWantedString();
} // }
public GPSControl getGpsController() { public GPSControl getGpsController() {
return gpsController; return gpsController;

View File

@ -221,9 +221,8 @@ public class UpdateClockDialog extends JDialog implements ActionListener, PamObs
// NMEADataBlock nmeaDataBlock = (NMEADataBlock) o; // NMEADataBlock nmeaDataBlock = (NMEADataBlock) o;
NMEADataUnit nmeaDataUnit = (NMEADataUnit) arg; NMEADataUnit nmeaDataUnit = (NMEADataUnit) arg;
StringBuffer nmeaData = nmeaDataUnit.getCharData(); StringBuffer nmeaData = nmeaDataUnit.getCharData();
String wantedString = gpsControl.getWantedString();
String stringId = NMEADataBlock.getSubString(nmeaData, 0); String stringId = NMEADataBlock.getSubString(nmeaData, 0);
if (wantedString.equals(stringId) == false) { if (gpsControl.wantString(stringId) == false) {
return; return;
} }
if (gpsControl.gpsParameters.mainString == GPSParameters.READ_GGA) { if (gpsControl.gpsParameters.mainString == GPSParameters.READ_GGA) {
@ -232,6 +231,8 @@ public class UpdateClockDialog extends JDialog implements ActionListener, PamObs
newRMCData(nmeaData); newRMCData(nmeaData);
} }
} }
@Override @Override
public void updateData(PamObservable observable, PamDataUnit pamDataUnit) { public void updateData(PamObservable observable, PamDataUnit pamDataUnit) {
// TODO Auto-generated method stub // TODO Auto-generated method stub

View File

@ -810,6 +810,9 @@ public class TMGroupLocInfo implements GroupLocInfo {
for (int i = 0; i < nSubDetections; i++) { for (int i = 0; i < nSubDetections; i++) {
localisation = getParentDetection().getSubDetection(i).getLocalisation(); localisation = getParentDetection().getSubDetection(i).getLocalisation();
if (localisation == null) {
continue;
}
angles = localisation.getAngles(); angles = localisation.getAngles();
angleErrors = localisation.getAngleErrors(); angleErrors = localisation.getAngleErrors();
@ -879,6 +882,10 @@ public class TMGroupLocInfo implements GroupLocInfo {
totalVectors += nVectors; totalVectors += nVectors;
} }
if (totalVectors == 0) {
return;
}
//now create the separate arrays for different ambiguities. //now create the separate arrays for different ambiguities.
/** /**
* *

View File

@ -31,12 +31,12 @@ public class PamguardVersionInfo {
* Version number, major version.minorversion.sub-release. * Version number, major version.minorversion.sub-release.
* Note: can't go higher than sub-release 'f' * Note: can't go higher than sub-release 'f'
*/ */
static public final String version = "2.02.08"; static public final String version = "2.02.08a";
/** /**
* Release date * Release date
*/ */
static public final String date = "9 May 2023"; static public final String date = "30 May 2023";
// /** // /**
// * Release type - Beta or Core // * Release type - Beta or Core

View File

@ -1,5 +1,6 @@
package PamController.settings; package PamController.settings;
import java.io.ByteArrayInputStream;
import java.io.EOFException; import java.io.EOFException;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@ -14,6 +15,7 @@ import PamController.PamController;
import PamController.PamSettingManager; import PamController.PamSettingManager;
import PamController.PamSettings; import PamController.PamSettings;
import PamController.PamSettingsGroup; import PamController.PamSettingsGroup;
import PamModel.PamModel;
import PamModel.PamModuleInfo; import PamModel.PamModuleInfo;
import PamModel.SMRUEnable; import PamModel.SMRUEnable;
import PamView.dialog.PamFileBrowser; import PamView.dialog.PamFileBrowser;
@ -226,7 +228,13 @@ public class SettingsImport {
ownerClass = Class.forName(aSet.getOwnerClassName()); ownerClass = Class.forName(aSet.getOwnerClassName());
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); // e.printStackTrace();
// this is happening since the ownerclassname is not set correctly in psfx files
// so we have to deserialise the data to find the class.
// ownerClass = getClassFromData(aSet.getSerialisedByteArray());
// ownerClass = PamModuleInfo.findModuleClass(aSet.getUnitType());
}
if (ownerClass == null) {
continue; continue;
} }
if (PamControlledUnit.class.isAssignableFrom(ownerClass)) { if (PamControlledUnit.class.isAssignableFrom(ownerClass)) {
@ -264,6 +272,17 @@ public class SettingsImport {
return groupedSettings; return groupedSettings;
} }
private Class getClassFromData(byte[] data) {
try {
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));
Object obj = ois.readObject();
return obj.getClass();
} catch (Exception e) {
return null;
}
}
private SettingsImportGroup findGroup(ArrayList<SettingsImportGroup> groupedSettings, String unitName) { private SettingsImportGroup findGroup(ArrayList<SettingsImportGroup> groupedSettings, String unitName) {
for (SettingsImportGroup iG:groupedSettings) { for (SettingsImportGroup iG:groupedSettings) {
if (iG.getMainSettings().getUnitName().equals(unitName)) { if (iG.getMainSettings().getUnitName().equals(unitName)) {

View File

@ -45,14 +45,10 @@ import fftManager.FFTDataUnit;
import fftManager.PamFFTControl; import fftManager.PamFFTControl;
import group3dlocaliser.Group3DLocaliserControl; import group3dlocaliser.Group3DLocaliserControl;
import meygenturbine.MeygenTurbine; import meygenturbine.MeygenTurbine;
import networkTransfer.receive.BuoyStatusDataUnit;
import networkTransfer.receive.NetworkReceiver;
import printscreen.PrintScreenControl; import printscreen.PrintScreenControl;
import rockBlock.RockBlockControl; import rockBlock.RockBlockControl;
import turbineops.TurbineOperationControl; import turbineops.TurbineOperationControl;
import GPS.GpsDataUnit; import GPS.GpsDataUnit;
import Map.MapController;
import Map.gridbaselayer.GridbaseControl;
import NMEA.NMEADataUnit; import NMEA.NMEADataUnit;
import PamController.PamControlledUnitSettings; import PamController.PamControlledUnitSettings;
import PamController.PamController; import PamController.PamController;
@ -66,7 +62,6 @@ import PamguardMVC.PamDataBlock;
import analogarraysensor.ArraySensorControl; import analogarraysensor.ArraySensorControl;
import backupmanager.BackupManager; import backupmanager.BackupManager;
import beamformer.continuous.BeamFormerControl; import beamformer.continuous.BeamFormerControl;
import beamformer.localiser.BeamFormLocaliserControl;
import bearinglocaliser.BearingLocaliserControl; import bearinglocaliser.BearingLocaliserControl;
import binaryFileStorage.SecondaryBinaryStore; import binaryFileStorage.SecondaryBinaryStore;
import cepstrum.CepstrumControl; import cepstrum.CepstrumControl;
@ -1083,7 +1078,6 @@ final public class PamModel implements PamModelInterface, PamSettings {
* PamModel ! * PamModel !
*/ */
// Load up whatever default classloader was used to create this class. Must use the same classloader // Load up whatever default classloader was used to create this class. Must use the same classloader
// for all plugins, or else we will not be able to create proper dependencies between them or be able // for all plugins, or else we will not be able to create proper dependencies between them or be able
// to save properties in the psf file. Found this problem because ipiDemo requires the // to save properties in the psf file. Found this problem because ipiDemo requires the
@ -1150,30 +1144,11 @@ final public class PamModel implements PamModelInterface, PamSettings {
// to add that URL to the default classloader path. // to add that URL to the default classloader path.
URL newURL = jarList.get(i).toURI().toURL(); URL newURL = jarList.get(i).toURI().toURL();
// original method
// Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
// method.setAccessible(true);
// method.invoke(cl, newURL);
// first fix attempt - create a brand new URLClassLoader. As expected, we get a ClassCastException when trying
// to load the parameters so we can't save params using this method
// URL[] newURLArray = new URL[1];
// newURLArray[0] = newURL;
// cl = new URLClassLoader(newURLArray);
// second attempt - custom class loader with the system app loader specified as the parent. Loads controlled unit, but // second attempt - custom class loader with the system app loader specified as the parent. Loads controlled unit, but
// as before it doesn't load the parameters // as before it doesn't load the parameters
classLoader.addURL(newURL); classLoader.addURL(newURL);
// third attempt
// Class<?> genericClass = cl.getClass();
// Method method = genericClass.getSuperclass().getDeclaredMethod("addURL", new Class[] {URL.class});
// method.setAccessible(true);
// method.invoke(cl, new Object[] {newURL});
// Save the name of the class to the global pluginBeingLoaded variable, and load the class. // Save the name of the class to the global pluginBeingLoaded variable, and load the class.
this.setPluginBeingLoaded(className); this.setPluginBeingLoaded(className);
// Class c = cl.loadClass(className); // Class c = cl.loadClass(className);
@ -1254,9 +1229,8 @@ final public class PamModel implements PamModelInterface, PamSettings {
"for help.<p>" + "for help.<p>" +
"This plug-in will not be available for loading"; "This plug-in will not be available for loading";
String help = null; String help = null;
int ans = WarnOnce.showWarning(PamController.getMainFrame(), title, msg, WarnOnce.WARNING_MESSAGE, help, e1); int ans = WarnOnce.showWarning(PamController.getInstance().getGuiFrameManager().getFrame(0), title, msg, WarnOnce.WARNING_MESSAGE, help, e1);
System.err.println("Exception while loading " + className); System.err.println("Exception while loading " + className);
System.err.println(e1.getMessage());
continue; continue;
} }
} }
@ -1269,7 +1243,7 @@ final public class PamModel implements PamModelInterface, PamSettings {
"for help.<p>" + "for help.<p>" +
"This plug-in will not be available for loading"; "This plug-in will not be available for loading";
String help = null; String help = null;
int ans = WarnOnce.showWarning(PamController.getMainFrame(), title, msg, WarnOnce.WARNING_MESSAGE, help, ex); int ans = WarnOnce.showWarning(PamController.getInstance().getGuiFrameManager().getFrame(0), title, msg, WarnOnce.WARNING_MESSAGE, help, ex);
System.err.println("Exception while loading " + jarList.get(i).getName()); System.err.println("Exception while loading " + jarList.get(i).getName());
continue; continue;
} }
@ -1294,7 +1268,7 @@ final public class PamModel implements PamModelInterface, PamSettings {
// instantiate the plugin control class using the custom class loader // instantiate the plugin control class using the custom class loader
try { try {
File classFile = new File(pf.getJarFile()); // File classFile = new File(pf.getJarFile());
//URLClassLoader cl = new URLClassLoader(new URL[]{classFile.toURI().toURL()}); //URLClassLoader cl = new URLClassLoader(new URL[]{classFile.toURI().toURL()});
// mi = PamModuleInfo.registerControlledUnit(pf.getClassName(), pf.getDescription(),cl); // mi = PamModuleInfo.registerControlledUnit(pf.getClassName(), pf.getDescription(),cl);
mi = PamModuleInfo.registerControlledUnit(pf.getClassName(), pf.getDescription(),classLoader); mi = PamModuleInfo.registerControlledUnit(pf.getClassName(), pf.getDescription(),classLoader);
@ -1360,7 +1334,7 @@ final public class PamModel implements PamModelInterface, PamSettings {
"for help.<p>" + "for help.<p>" +
"This plug-in will not be available for loading"; "This plug-in will not be available for loading";
String help = null; String help = null;
int ans = WarnOnce.showWarning(PamController.getMainFrame(), title, msg, WarnOnce.WARNING_MESSAGE, help, e1); int ans = WarnOnce.showWarning(PamController.getInstance().getGuiFrameManager().getFrame(0), title, msg, WarnOnce.WARNING_MESSAGE, help, e1);
System.err.println("Exception while loading " + pf.getDefaultName()); System.err.println("Exception while loading " + pf.getDefaultName());
pluginList.remove(pf); pluginList.remove(pf);
continue; continue;

View File

@ -283,6 +283,7 @@ public class PamModuleInfo implements PamDependent{
} }
public static JMenu getModulesMenu(Frame parentFrame) { public static JMenu getModulesMenu(Frame parentFrame) {
ArrayList<ModulesMenuGroup> moduleGroupsList = new ArrayList<ModulesMenuGroup>(); ArrayList<ModulesMenuGroup> moduleGroupsList = new ArrayList<ModulesMenuGroup>();

View File

@ -173,6 +173,9 @@ public class GroupLocSettingPaneFX extends SettingsPane<Group3DParams>{
algoOptsButton.setDisable(true); algoOptsButton.setDisable(true);
return; return;
} }
// also enable / disable the more options button ...
algoOptsButton.setDisable(localiserAlgorithm.hasParams() == false);
/** /**
* Need to immediately tell the algorithm which input we're using so that it can * Need to immediately tell the algorithm which input we're using so that it can
* show the correct settings... * show the correct settings...
@ -209,9 +212,6 @@ public class GroupLocSettingPaneFX extends SettingsPane<Group3DParams>{
} }
algorithmSourcePane = newPane; algorithmSourcePane = newPane;
// also enable / disable the more options button ...
algoOptsButton.setDisable(localiserAlgorithm.hasParams() == false);
repackDialog(); repackDialog();
} }

View File

@ -36,7 +36,10 @@ From the Detection Menu, select <strong><em>GPS>GPS Options</em></strong>
<p> <p>
On very rare occasions, if the GPS data have been multiplexed through some other instruments, the first On very rare occasions, if the GPS data have been multiplexed through some other instruments, the first
two characters of the string identifier are changed. If this is the case, it may also be necessary to set these two characters of the string identifier are changed. If this is the case, it may also be necessary to set these
so that the GPS module can identify the appropriate data. so that the GPS module can identify the appropriate data. As an alternative, select the "Allow and string initials" option
which will use any valid RMC or GGA string. Note however, that with a complex NMEA system there may be more than one GPS and
it is better to select only strings from the most accurate</p>
<h3>Read Options</h3> <h3>Read Options</h3>
<p>Three options for reading and storing GPS data are available.</p> <p>Three options for reading and storing GPS data are available.</p>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 14 KiB