Sim900 + передача и прием данных в бинарном виде

KorPaEv
Offline
Зарегистрирован: 24.11.2014

Доброго времени суток!

В целом сам вопрос в теме!

Каким образом отправить данные и принять их именно в бинарном виде

Следующий код я использую для отправки смс с модуля и прием на него именно в виде строк

//Инициализация и старт GSM модуля
void InitGprs()
{
  gprsSerial.begin(9600);
  gprsSerial.print("AT+CMGF=1\r");
  delay(300);
  gprsSerial.print("AT+IFC=1, 1\r");
  delay(300);
  gprsSerial.print("AT+CPBS=\"SM\"\r");
  delay(300);
  gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
  delay(500);
 }

// Функция отправки смс
void SendSms(String number, String text)
{
  Serial.println("SEND SMS FUNC RETURN: ");
  Serial.println("NUMBER: " + number + "\nTEXT:\n" + text);
  delay(1500);
  gprsSerial.print("AT+CMGS="); // send the SMS the number
  gprsSerial.print((char)34); // передача в порт символа "
  gprsSerial.print(number); // передача номера телефона
  gprsSerial.print((char)34); // передача в порт символа "
  gprsSerial.print((char)13);
  delay(1500);
  gprsSerial.println(text); // передача текста сообщения
  delay(500);
  gprsSerial.print((char)26); // передача ^Z
  gprsSerial.print((char)13); // передача Enter
}

Соответственно, когда я вызываю функцию и передаю туда в виде строк номер и сообщение, то приходят сообщения у меня на номер именно в текстовом виде, как я и отправлял

Но например у меня есть строка вида

str = "SH";

Соответсвенно переведя в бинарный вид получаем массив

byte array[2];

str.getBytes(&array, 2);

получаем в массиве байтовом следующие значения

'S' = 53 в бинарном виде

'H' = 48

получается 5348 ровно 2 байта...

теперь эти 2 байта я хочу соответственно переслать через SIM900 именно в этом формате, чтобы получить на другой стороне в бинарном виде данные как и уходили они

Каким образом можно это сделать? + еще вопрос - умеет ли модем отсылать данные на указанный порт?

KorPaEv
Offline
Зарегистрирован: 24.11.2014

поковырялся и нашел что можно установить настройки именно на прием вот так

AT+CMGR=3
+CMGR: "REC READ","+79012345678","","13/09/21,12:58:31+24"
005400650073007400200073006D007300200032
002E0020042204350441044200200441043C0441

OK

выходит что заголовок придет в текстовом формате - номер и иная системная информация, а вот сообщение придет в бинарном виде, а вот с передачей куда то не пойму, есть команда

AT+CMGF=1 OK

Текстовый режим
1 – включить
0 – выключить
см. примечание

получается что при выключенно режиме можем всегда будет отправлять и принимать данные в установленном режиме или же только принимать?

+ как раз вопрос еще возник - есть 2 варианта как я хочу отправлять и принимать данные..

1 - отправлять и принимать в бинарном виде

2 - в текстовом

причем как определить в каком мне сейчас виде пришли данные на модуль?

допустим я отправляю с устройства 1 в виде бинарном, а потом с устройства 2 в виде текстовом, как определить мне в каком виде пришли данные, чтобы дать команду модему в каком виде принять эти данные?