3

I'm looking at the RTI DDS add-in for Excel, and I'm trying to rewrite the Hello_simple HelloPublisher.java example that comes with it to publish a string, and get Excel to pick it up. Everything works, apart from displaying the value of the string I feed it. (It picks up the time the message was sent, and all the other meta-data just fine)

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 make in Excel to display the value is

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

(Auto-generated by the RTI add-in) I'm not very familiar with RTI and DDS yet, but I have a feeling Excel doesn't want to pick up the actual contents of this data because it thinks it doesn't belong to it? Hence why it only acknowledges the meta-data for the domain that it's listening to.

Any pointers would be greatly appreciated.

kinbiko
  • 2,066
  • 1
  • 28
  • 40
  • A better place to ask this is the RTI Community Forum at http://community.rti.com/ – Johnny Willemsen Sep 19 '14 at 18:40
  • Did you try what the command line tool [`rtiddsspy`](http://community.rti.com/rti-doc/510/ndds/doc/html/api_cpp/group__DDSNddsspyModule.html) gives you? It should print out the contents of your updates when you run it with the parameter `-printSample`. Don't forget to use the correct domain id via `-domainId 123`. – Reinier Torenbeek Sep 20 '14 at 00:48

0 Answers0