Communication between Raspberry pi and Arduino via GPIO

I don't understand your latest code. This

PiState = digitalRead(PiState);

is nonsense since will read into PiState from pin 0 or pin 1 since PiState is always 0 or 1! It needs to read from the pin that is connected to the PI.

This

 if (PiState == HIGH) {
  digitalRead(piPin1);
  digitalRead(piPin2);
 }

is nonsense since it checks for PiState being HIGH, reads piPin1 and discards the value read then reads piPin2 and discards the value read. Similarly the other block of code.