A Synop decoder Active/X


Software

  • Synop Decoder Active/X V1.4.1.3
  • ChangeLog  Changes made in the last version
  • Details

    This Active/X package has been written in C language to deliver a very high processing speed. It has been designed to decode the Synop FM12, FM13 and FM14 messages in the form used to send the RTTY weather reports. It can be extended to process any other codes provided they follow the teletype message standard format.

    It contains two Active/X components:
    - The 'WeatherDll.dll' Active/X contains the decoding core functions.
    - The 'WeatherCtl.dll' Active/X acts as a wrapper for the former component adding it a user interface.

    The 'wmoids.dat' contains the weather stations identifiers in a raw text format. The index file 'wmoids.idx' is dynamically created or updated so the data file can be edited whenever you want. Both files must be located in the application directory.

    Both components have to be registered before use. This can be done by using the following commands 'regsvr32 WeatherDll.dll' and 'regsvr32 WeatherCtl.dll'.

    The distribution package contains a VB6 sample that may help to understand the 'WeatherCtl.dll' properties and methods as I have not wrote any programming documentation at the time being.

    Programming Interface

    WheatherCtl Active/X Interface

    Properties:

    - Show (Boolean):
    Show/Hide the decoder's window. - Caption (String):
    Set/Get decoder's window caption. - BackColor (OleColor):
    Set/Get decoder's window backcolor.
    - Top (Long):
    Get/Set decoder's window top position. - Left (Long):
    Get/Set decoder's window left position. - Width (Long):
    Get/Set decoder's window width. - Height (Long):
    Get/Set decoder's window height. - FontSize (Long):
    Get/Set decoder's window fontsize. - Font (String):
    Get/Set decoder's window font name.
    - NodeName (String):
    Get/Set the instance nodename. This name must be an unique identifier that will be used as a key for the log files but also in the registry input under which all the instance parameters will be stored. Log files name will be constructed by using the following naming schema:
    NodeNameYYMMDD-HHMM with YY= Year, MM= Month, DD=Day, HH=Hour, MM=Minutes
    - LogPathName Get/Set the path name to the directory under which log files will be stored. In fact, two file extensions will be used:
    - .wmo: the weather raw data log files (unrelated data messages are discarded),
    - .syn: the decoded synop log file.
    - LogFileName Get/Set the basename to be used to construct the log files name. - LogStart (Boolean):
    Get/Set the log file processing running state
    - MessageLock (Boolean):
    When set, the start message indicator ("ZCZC") must be found at the beginning of the line to be found valid. When unset, any data that match the start message indicator will be interpreted as new message. - DecoderLock (Boolean):
    When set, wheater messages are not decoded until a valid start message indicator has been found. When unset, the input data stream is always processed in order to find any valid weather code indicator. - DecoderRelax (Boolean):
    When set, any error that occured will lead to a full message resynchronization waiting for the next record indicator ("="). When unset, if an error occured the related block is skipped and the decoding process continues on next block. - DecoderResyn (Boolean):
    When set, a resynchronization is forced and the decoder will have to wait for the next valid weather code indicator or a known record pattern that will help it to guess the weather code. - DecoderQuiet (Boolean):
    When set, Synop '555' section blocs are not printed nor the '333' section 5jjjj/jjjjj blocs.

    Methods:

    - Create(ByVal Show As Boolean) as Boolean:
    Create the decoder windows and show it if the 'Show' parameter is set. - Destroy(ByVal Info As Long):
    Destroy the decoder windows. The 'Info' parameter is not used in the current version.

    WheatherDll Active/X Interface

    Properties:

    - NodeName (String):
    Get/Set the instance nodename. This name must be an unique identifier that will be used as a key for the log files but also in the registry input under which all the instance parameters will be stored. Log files name will be constructed by using the following naming schema:
    NodeNameYYMMDD-HHMM with YY= Year, MM= Month, DD=Day, HH=Hour, MM=Minutes
    Get/Set the path name to the directory under which log files will be stored. In fact, two file extensions will be used:
    - .wmo: the weather raw data log files (unrelated data messages are discarded),
    - .syn: the decoded synop log file.
    - LogFileName Get/Set the basename to be used to construct the log files name. - LogRaw (Boolean):
    Get/Set the raw data log file processing running state - LogText (Boolean):
    Get/Set the decoded data log file processing running state
    - MessageLock (Boolean):
    When set, the start message indicator ("ZCZC") must be found at the beginning of the line to be found valid. When unset, any data that match the start message indicator will be interpreted as new message. - DecoderLock (Boolean):
    When set, wheater messages are not decoded until a valid start message indicator has been found. When unset, the input data stream is always processed in order to find any valid weather code indicator. - DecoderRelax (Boolean):
    When set, any error that occured will lead to a full message resynchronization waiting for the next record indicator ("="). When unset, if an error occured the related block is skipped and the decoding process continues on next block. - DecoderResyn (Boolean):
    When set, a resynchronization is forced and the decoder will have to wait for the next valid weather code indicator or a known record pattern that will help it to guess the weather code. - DecoderQuiet (Boolean):
    When set, Synop '555' section blocs are not printed nor the '333' section 5jjjj/jjjjj blocs.

    Methods:

    - Parse(ByVal Data As String):
    Parse the 'Data' input line which must comply with the followinbg rules
    -End of Line (EOL) is flagged by the 'CR'/'CR'/'LF' sequence,
    -End Of Message (EOM) is flagged by the 'CR'/'CR'/'LF'/'LF' sequence.

    Events:

    - Message(ByVal Start As Boolean,ByVal Reference As String):
    Send when a start, or an end, of message indicator as been found.
    'Reference' contains the message number or identifier when a start as been detected.
    - Bloc(ByVal State As Boolean):
    Send when a double 'LF' has been found which can implie that a new bloc will follows. - Indicator(ByVal Indicator As String):
    Send when a weather code indicator has been found. In the current version, only the FM12,13 and 14 indicators are processed: "AAXX", "BBXX" and "OOXX". - Guess(ByVal Indicator As String):
    Send when the previous record contains a pattern that allow the decoder to guess the used weather code without having received the real indicator.
    'Indicator' contains the related weather code indicator.
    - Error(ByVal Data As String):
    Send when a decoding error has been found.
    'Data' contains the raw data block which has throw the error.
    - Separator(ByVal Level As Long):
    Send to inform that a line separator can be printed. The following levels are returned in the 'Level' variable:
    - 0 : Start of transmitting station identity section,
    - 1 : Start of reporting station identity section,
    - 2 : Start of a new section.
    - Result(ByVal Data As String, ByVal Level As Long,ByVal SLevel As Long):
    Send for each succesfully decoded block.
    'Data' contains the decoded information,
    'Level' contains a section identifier that can be used to highligth the overall information,
    'SLevel' contains a color identifier that can be used to highligth this part of information.
    - Position(ByVal Lat As Single, ByVal Lng As Single, ByVal Ident As String, ByVal Name As String, ByVal Country As String):
    Send after a full position has been acquired.
    'Lat' and 'Lng' contain position information,
    'Ident', 'Name' and 'Country' contain identification information.
    - Temperature(ByVal Tmp As Single):
    Send after a temperature has been received.
    'Tmp' contains temperature information.
    - Pressure(ByVal Prs As Single):
    Send after a pressure has been received.
    'Prs' contains pressure information.

    Pictures

    Screen shot of the WheatherCtl stand-alone main Window
    Screen shot of the WheatherCtl stand-alone map Window


    Last revision: 2009/02/04


    Donations are welcome ...