How to send bytes from PC software to Arduino

I am making an embedded controller for a custom miniature gaming PC. It will perform a variety of tasks. I am relatively new to the Arduino microcontrollers (have had experience with BASIC in PICAXE etc). I will be using an Arduino Mini 328P. For prototyping I am using an Uno R3.

My current goal is to have the Arduino control an RGB LED based on received serial commands from the PC.
The PC will be able to send 3 sets of commands for the various tasks the EC will perform. I will use the first byte of each serial 'packet' to tell what task it is for. 252 = End of packet

255 = RGB LED control
254 = Fan control
253 = LCD control

I currently have the following code but it does not react to the serial commands and I am unsure how to debug it:

//MonoCase v1.0 Embedded Controller
//---------------------------------

//pin definitions
#define ledon 4
#define red 3
#define grn 5
#define blu 6

//define variables
char packet[5];

void setup(){
  Serial.begin(9600);
  
  //set pin modes
  pinMode(ledon,OUTPUT);
  pinMode(red,OUTPUT);
  pinMode(grn,OUTPUT);
  pinMode(blu,OUTPUT);
  
  //turn off RGB LED segments
  digitalWrite(red,HIGH);
  digitalWrite(grn,HIGH);
  digitalWrite(blu,HIGH);
  //enable common-anode RGB LED
  digitalWrite(ledon,HIGH);
  
}

void loop(){
  if (Serial.available() >= 5 ){
    Serial.readBytes(packet,5);
    if ((packet[0] == 255) && (packet[4] == 252)){
      analogWrite(red,packet[1]);
      analogWrite(grn,packet[2]);
      analogWrite(blu,packet[3]);
    }
  }
}

Should I be somehow clearing the serial buffer after each Serial.readBytes?
Is the packet method correct?
I am using Processing to send (255,128,128,128,252). Which should make medium-brightness white.

This demo shows how to talk to an Arduino using Python. The principles are the same in any PC language.
The examples in serial input basics may also be useful.

...R