diff --git a/docs/_static/ea440_1.png b/docs/_static/ea440_1.png new file mode 100644 index 0000000..a884523 Binary files /dev/null and b/docs/_static/ea440_1.png differ diff --git a/docs/_static/ea440_2.png b/docs/_static/ea440_2.png new file mode 100644 index 0000000..f7c880a Binary files /dev/null and b/docs/_static/ea440_2.png differ diff --git a/docs/_static/ea440_3.png b/docs/_static/ea440_3.png new file mode 100644 index 0000000..4bb8935 Binary files /dev/null and b/docs/_static/ea440_3.png differ diff --git a/docs/_static/ea440_4.png b/docs/_static/ea440_4.png new file mode 100644 index 0000000..feab9d4 Binary files /dev/null and b/docs/_static/ea440_4.png differ diff --git a/docs/_static/ea440_5.png b/docs/_static/ea440_5.png new file mode 100644 index 0000000..d699458 Binary files /dev/null and b/docs/_static/ea440_5.png differ diff --git a/docs/app_b_connection_settings.rst b/docs/app_b_connection_settings.rst index 7906a64..3395a51 100644 --- a/docs/app_b_connection_settings.rst +++ b/docs/app_b_connection_settings.rst @@ -444,3 +444,68 @@ not currently known thus the user must confirm reception in the acquisition syst :figclass: align-center While running PDS2000 in acquisition mode, you can verify reception in the Status displays and the “Raw Data” displays. Check the date, time, latitude, longitude against what you sent from SSP package. + +Kongsberg EA440 +--------------- + +The Konsgsberg EA440/EA640 single-beam echo sounder data acquisition system accepts SVP transmissions from the *Sound Speed* package. A method to verify reception of the cast is not currently known thus the user should confirm reception in the acquisition system. + +In the *Setup* tab of the EA440 software, open the *Installation* window and under *I/O Setup*, configure the IP address and port number where the casts transmitted from the *Sound Speed* package (:numref:`ea440_1_fig`). + +.. _ea440_1_fig: + +.. figure:: ./_static/ea440_1.png + :width: 600px + :align: center + :alt: alternate text + :figclass: align-center + + Add a new LAN Port to receive casts from SSP package. + +Under *Sensor Installation*, Add a new sensor with type *Sound Velocity Profile AML CALC*. Select the newly created LAN Port as the port associated with this sensor. Enable both the speed and temperature profiles (:numref:`ea440_2_fig`). + +.. _ea440_2_fig: + +.. figure:: ./_static/ea440_2.png + :width: 600px + :align: center + :alt: alternate text + :figclass: align-center + + Add a new sensor in the AML CALC format to decode casts from SSP package. + +Open the *Monitor* window to verify successfull reception of a cast from the *Sound Speed* package (:numref:`ea440_3_fig`). Make sure that the *Sound Speed* package is properly configured with an Output client using the EA440 protocol to accomplish this test. + + .. _ea440_3_fig: + +.. figure:: ./_static/ea440_3.png + :width: 600px + :align: center + :alt: alternate text + :figclass: align-center + + Verify successfull reception of a cast from the *Sound Speed* package using the *Monitor* window + +In the *Setup* tab of the EA440 software, open the *Environment* window and under *Water Column*, make sure that the sound speed and temperature sources are set to *Profile* (:numref:`ea440_4_fig`). + + .. _ea440_4_fig: + +.. figure:: ./_static/ea440_4.png + :width: 600px + :align: center + :alt: alternate text + :figclass: align-center + + Source selection for sound speed and temperature + +Under *Sound Velocity Profile*, select *Profile From Network* as source. Reception of a new cast from the *Sound Speed* package should immediately update in the sound speed plot (:numref:`ea440_5_fig`). + + .. _ea440_5_fig: + +.. figure:: ./_static/ea440_5.png + :width: 600px + :align: center + :alt: alternate text + :figclass: align-center + + Sound speed profile received from the *Sound Speed* package and displayed in the EA440 software diff --git a/hyo2/ssm2/app/gui/soundspeedsettings/widgets/output.py b/hyo2/ssm2/app/gui/soundspeedsettings/widgets/output.py index fa586e9..5cacdf4 100644 --- a/hyo2/ssm2/app/gui/soundspeedsettings/widgets/output.py +++ b/hyo2/ssm2/app/gui/soundspeedsettings/widgets/output.py @@ -245,7 +245,7 @@ def new_client(self): while True: # noinspection PyCallByClass protocol, ok = QtWidgets.QInputDialog.getText(self, "New client", - "Input the protocol (SIS, KCTRL, HYPACK, PDS2000, or QINSY)", + "Input the protocol (SIS, KCTRL, HYPACK, PDS2000, QINSY, or EA440)", QtWidgets.QLineEdit.Normal, "SIS") if not ok: diff --git a/hyo2/ssm2/lib/client/client.py b/hyo2/ssm2/lib/client/client.py index dfabb6f..e5cbaa5 100644 --- a/hyo2/ssm2/lib/client/client.py +++ b/hyo2/ssm2/lib/client/client.py @@ -33,8 +33,8 @@ def send_cast(self, prj: 'SoundSpeedLibrary', server_mode: bool = False) -> bool logger.info("transmitting to %s: [%s:%s:%s]" % (self.name, self.ip, self.port, self.protocol)) - if self.protocol == "HYPACK": - success = self.send_hyp_format(prj=prj) + if (self.protocol == "HYPACK") or (self.protocol == "EA440"): + success = self.send_aml_format(prj=prj) else: success = self.send_kng_format(prj=prj, server_mode=server_mode) @@ -90,10 +90,13 @@ def send_kng_format(self, prj: 'SoundSpeedLibrary', server_mode: bool = False) - return self._transmit(tx_data) - def send_hyp_format(self, prj: 'SoundSpeedLibrary') -> bool: - logger.info("using hyp format") + def send_aml_format(self, prj: 'SoundSpeedLibrary') -> bool: + logger.info("using aml format") calc = Calc() - tx_data = calc.convert(prj.ssp) + if self.protocol == "HYPACK": + tx_data = calc.convert(prj.ssp) + elif self.protocol == "EA440": + tx_data = calc.convert(prj.ssp).replace("\n", "\r\n") return self._transmit(tx_data) def _transmit(self, tx_data: Union[bytes, str]) -> bool: diff --git a/hyo2/ssm2/lib/profile/dicts.py b/hyo2/ssm2/lib/profile/dicts.py index f37a62c..ddad192 100644 --- a/hyo2/ssm2/lib/profile/dicts.py +++ b/hyo2/ssm2/lib/profile/dicts.py @@ -167,6 +167,7 @@ def first_match(cls, dct, val): ("PDS2000", 2), ("QINSY", 3), ("KCTRL", 4), + ("EA440", 5), ])