+2  A: 

The API help says,

By default, the ReadLine method will block until a line is received. If this behavior is undesirable, set the ReadTimeout property to any non-zero value to force the ReadLine method to throw a TimeoutException if a line is not available on the port.

... so, do that if you want to avoid it hanging.

Anyway:

  • How do you know that the two devices/ports are connected to each other (via Bluetooth)?
  • Are you setting the SerialPort properties (e.g. BaudRate etc.) before you call the Open method?
  • Does it make any difference which you invoke first, the ReadLine or the WriteLine? Instead of doing open/write/close and open/read/close, how about doing open/open/read/write/close/close instead?
  • What the receivers BytesToRead property return after the sender has invoked WriteLine?
  • Have you looked at the serial port sample code, which exists (according to the Stonestreet One Bluetooth SDK FAQ)

If their SDK does have a sample program, then I suggest you use it (unaltered) to verify your test setup (e.g. to verify that your devices are connecting properly), before you alter the sample program and/or before you test your own software (using the same devices/test setup which you've already tested with their sample software).

ChrisW
1) I guess I don't "KNOW" they are connected. They are close, they have paired. They should be able to connect. 2) I have not set those values in the code (I did not know I needed to). 3) I have tried both of these scenarios. 4) I am not sure what you were asking with this one. 5) I have looked at that example code. It does not actually write to the serial port (kinda lame huh). It just pairs two devices and leaves it at that.I have tried their sample code, but it dosn't actually do anything. Maybe setting the serial port properties will do it.
Vaccano
"I am not sure what you were asking with this one." - After you do a write, and after the written bytes are delivered to the receiving machine, then (befre you read them) the BytesToRead property ought to show that there are bytes waiting to be read. Actually reading those bytes might be more complicated.
ChrisW
"I have not set those values in the code (I did not know I needed to)." If you don't set them they they have default values (of which the default baud rate and flow control are displayed in your screenshots above). If the defaults on the two machines don't match then the bytes will be sent but not received.
ChrisW