problem in serail communication

I am using a virtual gps to send NMEA data to arduino form one of my serial port of computer to arduino mega serial1 port and try to read watever is send... but not getting the desired output in the serial monitor.. here is my code..

long lat,lon;// variables to store latitude n longitude

void setup() {
Serial.begin(9600);
Serial1.begin(9600);

}

void loop()
{
while(Serial1.available())//check for gps data
{
char val=Serial1.read();
Serial.print(val);
}
}

i have set baud rate of 9600 on both virtual gps and in serial monitor...

Data sent by virtual gps

$GPGGA,000000.000,0000.000000,N,00000.000000,E,1,0,0,0,M,0,M,,*42

Data received in serial monitor

[}ÅÅõ�ŸŸŸŸŸŸ£ŸŸŸ§ŸŸŸŸ£ŸŸŸŸŸŸ§c§ŸŸŸŸŸ£ŸŸŸŸŸŸ§u§�§Ÿ§Ÿ§Ÿ§e§Ÿ§e§§«—›åë

please help...
Thanx in advance..

Aaditya_Gupta:
i have set baud rate of 9600 on both virtual gps and in serial monitor...

Data received in serial monitor

[}ÅÅõ�ŸŸŸŸŸŸ£ŸŸŸ§ŸŸŸŸ£ŸŸŸŸŸŸ§c§ŸŸŸŸŸ£ŸŸŸŸŸŸ§u§�§Ÿ§Ÿ§Ÿ§e§Ÿ§e§§«—›åë

I would check the baud rate again. That stuff looks rather like it is sent at the wrong speed.

If you are using a real serial port on your PC you will probably need to convert the signal from RS232 levels to TTL levels for the Arduino. A Max232 chip is commonly used for this. The high voltages in RS232 may damage your Arduino.

Is your PC using the 8N1 for the data, parity, and stop bits ?

...R

DIY level shifters:

http://www.scienceprog.com/alternatives-of-max232-in-low-budget-projects/