This still does not compile.
void loop()
{
void start(void);
you can not define a function within another one.
Groundfungus's point is valid, if you are going to read a byte, you need to make sure it is available.
By re-declaring the variable (a, b, c etc.) you make the global variable with the same name unavailable. I don't think there is something that will change when you don't do that, actually the global variables are never used, but it is rarely what one wants to do.
'e' is the variable that is actually used for comparing.
const int ledPin = LED_BUILTIN; // pin the LED is connected to
no need for that either so far, you never use 'ledPin'
anyway if you are going to read 4 bytes, you should wait to makes sure these are there
if ( Serial.available() >= 4) { // and don't forget about the opening brace for the condition execution
if(a == '@' & b == '~' & c == 'u') // Has start sequence been received?
what if there was 1 stray character and b=='@' etc.
check out Robin2's
Could you post your code using code tags by selecting the code in the IDE, right-click and select "Copy for forum" and paste it here.
hitting the </> code-tags button here on the forum is also starting to work properly,
but omitting them here makes the forum respond to the indentation in your sketch.