Hi to all,
I am using fcm to read gps data from SirF-Star III antena. It is working fine. But I cant set any value (ex. baud rate, choose gps data format, etc.,) through FCM (send_data) functions.

My doubt is, I want to send this data “$PSRF103,04,00,01,01*21” to UART2 (which one is gps antena connected), here I dont know how can I indicate and .

Could you help me on this?

Regards - Senthil.

Doesn’t the title of your post contain the answer?

This is standard ‘C’ string stuff - nothing specifically to do with Open-AT!
So, check-out your ‘C’ textbook for ways to include non-printing codes into ‘C’ strings…


Hi Awneil,
I have faced an issue of this sort in Q2501. It wont accept special characters via TCP connections. It was like special characters will not be accepted in wip_read(). Im not sure if issue is still persisting in Q2686 also.

S. Vanee

no problem using /r (and/or) /n in wip_read write here (using Q2686). and i seriously doubt that the same wip-version on the Q2501 would behave differently?

What, exactly, “won’t accept” special characters?

And in what way, exactly, does it “not accept” them?

the special characters will not be accepted via UART1. Sorry i typed in as WIP. Whenever special characters were sent to UART, it would igonre the rest of the string. When we had asked our distributor they were actually surprised.

S. Vanee

Oh Yes they will!

UART1 (and UART2) are certainly perfectly capable of working with pure binary data - otherwise, how could binary protocols like XMODEM ever work?!

The “problem” must lie somewhere in your application - eg, You haven’t got software flow control enabled, have you?

Again, you haven’t said what “it” is; it certainly isn’t the UART itself - so, again, it must be some other part of your application.

Quite right too - see above.

i have a similar Problem like yours. I wanted to send PUBX data like $PUBX,41,1,0007,0002,9600,0*11 to GPS to opened over UART2.
Have you any idea to solve this Problem.

dont worked
char GpsMessage[]="$PUBX,41,1,0007,0002,9600,0*11\x0D\x0A";
adl_fcmSendData(FCMHANDLE, GpsMessage,sizeof(GpsMessage));


You need strlen - not sizeof!

thank you,
I change to strlen but it not works. If i send the GpsMessage to another destination like a PC i can see at uart2 interface this message “$PUBX,41,1,0007,0002,9600,0*11”.
On My Q2687 Starterkit there are to UART interfaces. UART1 is connected wiht serial cabel to PC to download the Application Code. UART2 is connected wiht Null Modem cabel to GPS.
I wont to release the GPS to send NMEA datas.

That’s the string you want, isn’t it?
So, In other words, it is working - isn’t it?!

If the GPS isn’t responding correctly, then the problem must be elsewhere - the FCM/UART2 part is working correctly!

Are you sure that your connections to the GPS are correct (including handshaking signals)?
Are you sure that all your settings - baud rate, etc - are correct for the GPS?
Are you sure that the command is correct for your GPS?

i can read the NMEA datas, also i can read from GPS but i can not send to GPS

char GpsMessage[]="$PUBX,41,1,0007,0002,9600,0*11\x0D\x0A";

What you mean with??:


If I understanded correctly you want to type $PUBX,41,1,0007,0002,9600,0*11… In C that is written in the following way:

char GpsMessage[]="$PUBX,41,1,0007,0002,9600\n\r";

0x0D is the ASCII code for CR;
0x0A is the ASCII code for LF.

No - that is wrong!

\n is the ‘C’ escape sequence for newline; ie, LF
\r is the ‘C’ escape sequence for CR

So “$PUBX,41,1,0007,0002,9600\n\r” is equivalent to “$PUBX,41,1,0007,0002,9600” - which may or may not be what the GPS actually wants or likes…

As previously noted, that proves that you can actually transmit the string!

Yes, you can - you proved it above!

So, there is nothing fundamentally wrong with your code or your wavecom module - therefore, the fault must lie in the connection to the GPS.

Or maybe the command is received by the GPS - but just ignored?

When you checked to the PC, did you use exactly the same connection - including handshaking lines?

Are you sure that the voltage levels are compatible?


I am also trying the sirf module but I cannot receive nothing yet from UART2, should I send any special command before?

Is it sending anything?


I can send command but I don’t get reply.

I can comunicate with UART2 without problems.

Those two statements don’t add up!

“Communicate” means you can both send and receive with UART2 - is that right?

If you are certain that you can both send and receive with UART2, then the problem must lie elsewhere.

Have you verified independently that the “sirf module” is operating correctly?

if I do for instance:

adl_atCmdCreate(“AT+IPR=9600”, ADL_AT_PORT_TYPE(ADL_PORT_UART2, FALSE), (adl_atRspHandler_t)Init_ResponseHandler, “*”, NULL);

I get OK as response, also if I send a “$PSRF105,1*3E” I get ADL_FCM_EVENT_MEM_RELEASE.

What I don’t get is the NMEA output that I waiting for on UART2 as stated for the sirf module, who should send data on UART2.

I am wondering if I have to switch the sirf module on, or if I have to send any init command?