For two gps devices, you would have to create two copies of the gps parser object, and feed the data from the serial input separately into each object.
I don't think tinygps will read other devices, you would have to modify it to read other devices. It is only designed to read the gps data strings.
If they have the same basic string format, modifying it would not be too difficult if you have the necessary skill.
TinyGPS++ can read any NMEA string - this library have special method for this. you can see it TinyGPS++ | Arduiniana in Custom NMEA Sentence Extraction section.
But i don't understand cleary how i can use four serial channel for four device. Each device on each channel separately....
I have 2 NMEA GPS running on the Mega 2560 and using TinyGPS++. Basically you create seperate serial streams.
Serial monitor on serial, GPS A on serial1 and GPS B on serial2.
Declare for each GPS for example:
TinyGPSCustom pdopA(gpsA, "GPGSA", 15); // $GPGSA sentence, 15th element PDOP from GPS A
TinyGPSCustom pdopB(gpsB, "GPGSA", 15); // $GPGSA sentence, 15th element PDOP from GPS B
.
.
.
Then print the result:
Serial.print(pdopA.value()); Serial.print(F(" ")); //print GPS A pdop
Serial.print(pdopB.value()); Serial.print(F(" ")); //print GPS B pdop
Try following the example "kitchen sink" in the TinyGPS++ library. Replace the software serial SS instances with your hardware UART channel, e.g. serial1.
The block of code for that serial1 routine will be the same for a second UART channel, e.g. serial2, and then serial3. Try keep BAUD rate low.