Ohh, ja, klar ein byte geht nur von 0 bis 255. Also deklarier die variable temp statt als byte als int und lass bei serialPort1.ReadByte() den cast nach byte weg. Dann sollte die Warnung nicht mehr da sein.

Damit das ganze allerdings halbwegs erfolg haben kann, würde ich dich bitten dir echt noch mal paar Grundlagen anzuschauen. Das Datenverarbeiten vom SerialPort (der in C# ehh etwas zickig ist) gehört nicht wirklich zu den Einstiegsprogrammen. Z.B. schau dir an was eine globale Variable ist und wie man einen typ in einen anderen Castet.

Zum Casten mit der Startbedinung wird dir das hier weiterhelfen:
Angenommen '#' ist die Startbedingung dann kannst du schreiben:

if(temp == (byte)'#')

Das direkte ausgeben auf die richTextBox1 sollte sowie so nicht funktionieren, da du einen Fehler aufgrund eines Threadübergreifendenvorgangs bekommen solltest.