Just a few things:
- Get rid of the delay(100). There's no real purpose for it. If it doesn't work without the delay, you should figure out what that is so.
- lcd.clear() should be moved into the else clause -- After all, you only want to clear it when you've received an entire message, not when the first part of the message comes in.
- You need to set bufpos back to 0 in the else clause.
- You should only increment bufpos in the if (inchar != EOPmarker) clause.
- You should set serialbuf[bufpos] to inchar, not Serial.read() (I'll update my previous post to include the last three, sorry)
- I think you need to use lcd.print rather than lcd.write.
Good job for making a proof of concept before trying to glob everything together at once.