Serial Read PWM

first, use code tags around your code.

Second, give this a try:

while( digitalRead(buttonPin)==HIGH );
buttonState=pulseIn(buttonPin,HIGH);

What may be happening is that you may be starting a pulseIn while the signal is already HIGH, so you're not getting the full pulse. The extra line I posted will block until the signal is LOW, and then run pulseIn, letting you get the full pulse time.