Reading DDS RTI data generated in Java to Excel

I am looking at the RTI DDS Add-in for Excel and I am trying to rewrite the Hello_simple HelloPublisher.java example that comes with it to post a string and get Excel to pick it up. Everything works except displaying the value of the string I feed it. (It displays the time the message was sent and all other metadata just)

My code looks something like this:

public class Publish {

public static void main(final String[] args){
    // Create the DDS Domain participant on domain ID 123
    final DomainParticipant participant = DomainParticipantFactory.get_instance().create_participant(
        123, //Domain ID
        DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT,
        null, // Listener
        StatusKind.STATUS_MASK_NONE);

    if (participant == null) {
        System.err.println("Unable to create domain participant");
        return;
    }

    // Create the topic "Message" for the String type
    final Topic topic = participant.create_topic(
        "Message",
        StringTypeSupport.get_type_name(),
        DomainParticipant.TOPIC_QOS_DEFAULT,
        null, // listener
        StatusKind.STATUS_MASK_NONE);

    if (topic == null) {
        System.err.println("Unable to create topic.");
        return;
    }

    // Create the data writer using the default publisher
    final StringDataWriter dataWriter =
        (StringDataWriter) participant.create_datawriter(
            topic,
            Publisher.DATAWRITER_QOS_DEFAULT,
            null, // listener
            StatusKind.STATUS_MASK_NONE);

    if (dataWriter == null) {
        System.err.println("Unable to create data writer\n");
        return;
    }


    System.out.println("Ready to write data.");
    System.out.println("When the subscriber is ready, you can start writing.");
    System.out.print("Press CTRL+C to terminate or enter an empty line to do a clean shutdown.\n\n");

    final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    try {
        while (true) {
            System.out.print("Please type a message> ");
            final String value = reader.readLine();
            if (value == null) {break;}
            dataWriter.write(value, InstanceHandle_t.HANDLE_NIL);
            if (value.equals("")) { break; }
        }
    } catch (final IOException e) {e.printStackTrace();
    } catch (final RETCODE_ERROR e) {e.printStackTrace();}

    System.out.println("Exiting...");
    participant.delete_contained_entities();
    DomainParticipantFactory.get_instance().delete_participant(participant);
  }
}

      

The call I am making in Excel to display the value is

=RTD("dds2excel.connect",,"TYPE:DDS::String","TYPENAME:DDS::String","TOPIC:Message","FIELD:value")

      

(automatically generated by the RTI add-in) I'm not very familiar with RTI and DDS, but I have a feeling that Excel doesn't want to collect the actual content of this data because it thinks it doesn't belong there? Hence why it only validates the metadata for the domain it is listening on.

Any pointers would be greatly appreciated.

+3


source to share





All Articles