I am trying to send a data with extended ASCII characters via R410 AFF and it does not work. I tried with ASCII characters 0-127 range it works fine. I have checked the AT commands pdf, it says the binary extended 0X00-0XFF is supported. Network connection is good. Following is the Arduino terminal results. Could someone help please? Thank you very much.
+CME ERROR: Operation not allowed
I’m using HEX mode to send data, this way you can send any binary data, or specials symbols.
Use this to set the module in HEX mode: AT+UDCONF=1,1
the LteWriteChar and LtePrintf your should implement yourself
static int LteSendDataMessage(unsigned char *p, int length)
unsigned char ch, cl;
int len =0, i;
LtePrintf("AT+USOWR=%d,%d,\"", LteSocket, length);
for(i= 0; i< length; i++ )
ch = (p[i] & 0xF0) >> 4;
cl = p[i] & 0x0F;
if(ch >= 0 && ch <= 9)
ch += 48; // '0'
ch += 55; //'A'-10
if(cl >= 0 && cl <= 9)
cl += 48;
cl += 55;
LteWriteChar('\n'); // this will send \r\n
Thank you. This is not exactly what I need to achieve. One ASCII can be sent with one byte. I think in your code the LSB and MSB get sent in two bytes? Again, if ublox cannot send an extended ASCII, separating LSB and MSB might be the only way.
So my question is now: can ublox send an extended ASCII as it is?
It is not.
In HEX mode your send:
“DEADF00D”, this will be transmitted as 4 bytes: 0xDE 0xAD 0xF0 0x0D.
The function above you can give a pointer to the char array that can hold all possible chars, it will send your data binary… even better when extended ascii.
char NiceString = “I want to send this “and its holds special char 's\n\r” so we use binary”;
LteSendDataMessage((unsigned char*)NiceString, strlen(NiceString));
it will return the actual bytes that are transmitted.