The root of many problems is trying to show information on a diagram that is not intended to use it this way. This is usually happening when you try to indicate the whole model on just one diagram.
The Components Diagram is a static view of the system. It shows connections and dependencies. The only information about the direction of data flow that can be read from it is who actually initiates the communication but does not depict the direction of the data flow.
To show the data flow, that is a dynamic (behavioural) part of your system you should use some other diagram(s). I would go for a sequence diagram (probably a few of them), however some other behaviour diagrams might do as well.
If you still insist on showing the data flow direction on the same diagram, there are two related possibilities. First of all, you should depict the components with ports (shown as small rectangles, from which the interface lines protrude rather than coming directly from the component itself).
Now you have two options. One is to use stereotypes for ports, marking them as <<in>> or <<out>> respectively. The other option is to use Profiles to extend the UML and, actually still by stereotyping, change its visualisation to have a small arrow inside indicating data flow.

I am not sure if StarUML supports ports and if you can stereotype them there. I have also no idea if there is any tool other than some general diagramming tools like Visio or Dia that supports visual extension of UML, theoretically granted by profiles.
Remotehas an output portCommands, that is connected to the input port of the RobotController.RobotControllerquerying theRemotewith somegetCommand()?RobotControllerlistens for the data wrote by theRemote. In code, looks likecommand = m_commandsInPort.read()inRobotControllerandm_commandsOutPort.write(command)inRemote. I know it's confusing, that's why I aks this question.m_commandsInPortis a reference toRemotethru theCommandsinterface andm_commandsOutPortis a reference toRobotControllerthen this read and write aren't talking to each other. What is sent through one doesn't end up coming out the other. Instead they are two completely different ways to send information fromRemotetoRobotControllerthat have nothing to do with each other.