It is typically necessary to use parenthesis between logical comparisons as:

If (Serial[1]=$15) and (Serial[2]=$D3) and (Serial[3]=$7D) AND (Serial[4]=$16) AND (Serial[5]=$00) AND (Serial[6]=$00) then correct1

I believe that it forces a Boolean comparison rather than a mathematical evaluation.

One last - is it necessary to compare ALL bytes, or might you only compare say... the first one. This would seem to yield a unique condition and save the effort and complexity of so long a line:

If (Serial[1]=$15) then Correct1