GPS does not give serial reply

Hello, i'm new in arduino
i'm making kind of smart stick which get gps with NEO6m and announce user by vibrate or sound(user can select which one to use by switch) when it comes near the flag.
I put 2 flags as traffic light.

The problem is that gps not work properly.
putting tutorial code it works very well.
but when i put mine, switch works, vibration work, speaker works , but not gps.

it's not available (i checked it by put some println after the while(uart_gps.available())
and it sometime shows weird values like reversed question mark or some , , , things

and when i put delay inside while(uart_gps.available()) , it sometime does not loop and
keep reading weird values

this is my code

#include <SoftwareSerial.h>
#include <TinyGPS.h>
#include <math.h>
#include <DFPlayer_Mini_Mp3.h>

#define RXPIN 10
#define TXPIN 9
#define RXPINII 11
#define TXPINII 12
#define GPSBAUD 9600

float final1; // distance between flag1 and me(m)
float final2; // distance between flag2 and me(m)
int swi = 8;
float s1 = 15; // flag1 light change
float s2 = 30; // flag2 light change
int sig; // sig output

TinyGPS gps;
SoftwareSerial uart_gps(RXPIN, TXPIN);
SoftwareSerial mySerial(RXPINII, TXPINII);

void getgps(TinyGPS &gps);

void setup() {
Serial.begin (9600);
mySerial.begin(9600);
uart_gps.begin(GPSBAUD);

mp3_set_serial (mySerial); //set Serial for DFPlayer-mini mp3 module
delay(1); //wait 1ms for mp3 module to set volume
mp3_set_volume (5); // volume(0~30)
pinMode(swi, INPUT); //swith

pinMode( 6 , OUTPUT); // 6pin buzz
pinMode( 7 , OUTPUT); // 7pin buzz

Serial.println("");
Serial.println("GPS start");
Serial.println("");

}

void getgps(TinyGPS &gps) //gps
{
float latitude, longitude;

gps.f_get_position(&latitude, &longitude); //get latitude and longtiude
Serial.print("Lat/Long: ");
Serial.print(latitude);
Serial.print(", ");
Serial.println(longitude);
Serial.println();

float degla, minla, secla; //latitude degree min sec of me
float deglo, minlo, seclo; //longitiude degree min sec of me

//-------------------------calculating gps---------------//
degla = (int)latitude;
deglo = (int)longitude;

minla = (latitude -(int)latitude)*60;
minlo = (longitude - (int)longitude)*60;

secla = (minla - (int)minla)*60;
seclo = (minlo - (int)minlo)*60;

minla = (int)minla;
minlo = (int)minlo;

//-----------------------where flag places------------------------------//
float sig1_degla = 37 , sig1_minla =37, sig1_secla=10.176;
float sig1_deglo = 127, sig1_minlo = 3, sig1_seclo = 33.083;

float sig2_degla=37, sig2_minla=37, sig2_secla=8.8;
float sig2_deglo=127, sig2_minlo=3, sig2_seclo=34.3;

float degla_differ1, minla_differ1, secla_differ1;
float deglo_differ1, minlo_differ1, seclo_differ1;

float degla_differ2, minla_differ2, secla_differ2;
float deglo_differ2, minlo_differ2, seclo_differ2;

//------------------calculate the distance between flags and me--------------------//
degla_differ1 = degla - sig1_degla;
minla_differ1 = minla - sig1_minla;
secla_differ1 = secla - sig1_secla;

degla_differ1= degla_differ1109958;
minla_differ1= minla_differ1
1833;
secla_differ1= secla_differ1*30.5;

float totala_differ1 = deglo_differ1+minlo_differ1+seclo_differ1;

degla_differ2 = degla - sig2_degla;
minla_differ2 = minla - sig2_minla;
secla_differ2 = secla - sig2_secla;

degla_differ2= degla_differ2109958;
minla_differ2= minla_differ2
1853;
secla_differ2= secla_differ2*30.8;

float totala_differ2 = degla_differ2 + minla_differ2 + secla_differ2;

deglo_differ1 = deglo - sig1_deglo;
minlo_differ1 = minlo - sig1_minlo;
seclo_differ1 = seclo - sig1_seclo;

deglo_differ1= deglo_differ188900;
minlo_differ1= minlo_differ1
1480;
seclo_differ1= seclo_differ1*24.69;

float totalo_differ1 = deglo_differ1+minlo_differ1+seclo_differ1;

deglo_differ2 = deglo - sig2_deglo;
minlo_differ2 = minlo - sig2_minlo;
seclo_differ2 = seclo - sig2_seclo;

deglo_differ2= deglo_differ288900;
minlo_differ2= minlo_differ2
1480;
seclo_differ2= seclo_differ2*24.69;

float totalo_differ2 = deglo_differ2+minlo_differ2+seclo_differ2;

final1 = (totala_differ1totala_differ1) + (totalo_differ1totalo_differ1);
final2 = (totala_differ2totala_differ2) + (totalo_differ2totalo_differ2);
Serial.println(final1,5); //print the distance of me and flag1 to serial
Serial.println(final2,5); //print the distance of me and flag2 to serial
delay(1000);
}

int Signal_1(){ //flag1
int result; // think as 15~29 red light, 30~40 green light, 41~45 blink light
if(s1 < 30){
result = 111; // 111 : red
}
else if (s1 < 40){
result = 222; // 222 : green
}
else{
result = 333; // 333 : blink
}
return result;
}

int Signal_2(){ // flag2
int result;
if(s2 < 30){
result = 111; // 111 : red
}
else if (s2 < 40){
result = 222; // 222 : green
}
else{
result = 333; // 333 : blink
}
return result;
}

void Signal_send(){
int data = digitalRead(swi); // get data of switch
if( s1 > 45){ // flag1 signal period reset
s1 = 15;
}
if( s2 > 45){ // flag2 signal period reset
s2 = 15;
}

Serial.println(s1); //to check
Serial.println(s2); //to check

if(final1 < 10){ // if distance of me and signal1 is under 10(m)
sig = Signal_1(); // get Signal1
}
else if(final2 < 10){ // if distance of me and signal2 is under 10m
sig = Signal_2(); // get signal 2
}
else{ // otherwise nothing
sig = 0;
}

if(data == 1){ //if switch == 1 vibrate
if(sig == 111){ // when red
for(int i=0; i<1; i++){ // vibrate once
analogWrite( 6 , 255 );
analogWrite( 7 , 255 );
delay(1200);
analogWrite( 6 , 0 );
analogWrite( 7 , 0 );
delay(100);
}
delay(1700);
}
else if(sig == 222){ // when green
for(int i=0; i<2; i++){ // vibrate twice
analogWrite( 6 , 255 );
analogWrite( 7 , 255 );
delay(600);
analogWrite( 6 , 0 );
analogWrite( 7 , 0 );
delay(100);
}
delay(1700);
}
else if(sig == 333){ // when blink
for(int i=0; i<3; i++){ // vibrate third time
analogWrite( 6 , 255 );
analogWrite( 7 , 255 );
delay(400);
analogWrite( 6 , 0 );
analogWrite( 7 , 0 );
delay(100);
}
delay(1700);
}
else{ // otherewise nothing
}
}

else if(data == 0){ // when switch is 0
if(sig == 111){ // when red
mp3_play(1);
delay(3000);
}
else if(sig == 222){ // when green
mp3_play(2);
delay(3000);
}
else if(sig == 333){ //when blink
mp3_play(3);
delay(3000);
}
}
else{ //otherswise nothing
}

s1 = s1 + 1;
s2 = s2 + 1; // update the signal
delay(1000);
}

void loop () {

uart_gps.listen(); //work gps first

while (uart_gps.available()) // when gps is available
{
Serial.write(uart_gps.read()); //serial write the data of gps
delay(1);
if(gps.encode(uart_gps.read()))
{
delay(500);
getgps(gps);// calculating the distance base on data it get from gps
Serial.println(final1); //to check the value
Serial.println(final2); //to check the value
Serial.println("hi"); //to check it work
}
}
uart_gps.end(); //end listen
mySerial.listen(); //listen mp3 mini player

Signal_send(); // bring signal_send function
if (mySerial.isListening()) {
Serial.println(" listening!"); //check if it is listening
}

}

thanks you

Apart from the obvious complication of trying to use 2 soft UARTS, which I have never heard anything good about, once you do this

 uart_gps.end(); //end listen

you need to use the begin() function to make the UART active again

See Serial.end()

even though i put uart_gps.begin(GPSBAUD); above the uart_gps.listen(); which is first sentence for loop, it does not show me serial response

As I said, I have never heard good reports of trying to use 2 software UARTS

Which Arduino board are you using ?

i use Arduino Uno

Please edit your post to add code tags, as described in "How to use this forum".

Only one software serial port can listen at a time. You need to switch between ports as shown in this tutorial.

The best solution is to use an Arduino with multiple hardware serial port. As mentioned earlier a Mega is one choice.