Well yes. It will hang there, unless the buffer already contains 256 bytes.
SerialPort.Read is a blocking call: it does not return until it has acquired the specified number of bytes.
If it recieves 255 bytes, then it will wait for the last one. And wait, and wait, and wait...
Try using the
SerialPort.DataRecieved event[
^] instead - assemble the bytes and process them there rather than expecting a fixed number of bytes each time.