Thank you very much for the reply zentara, I think you're exactly right.
Unfortunately my reader/writer need to know what each other are doing :) because I write a value and the device hanging off the port is then expected to send me data. Currently my reading portion only expects data when it "knows" that the writing has happened. After your advice I tackled the problem from the outside. I made a named pipe, and then just ran a simple background process
cat /dev/mydevice > /dir/my_named_pipe
My writing portion opens /dev/mydevice and writes there, but the reader portion then reads from /dir/my_named_pipe. Seems to work pretty well as the pipe hangs onto the data until someone actually comes along to read it. I tried opening /dev/mydevice with pipes in the open call, but it just didn't work, this does though.
Thanks again for the help.