Делаю опрос счетчиков через Arduino и esp8266, неожиданно нарвался на проблему.
Дело в том, что из-за нехватки знаний в программировании не могу понять как принимать-отправлять через esp данные не в формате символов (char, string), а байты. Подскажите пожалуйста, ведь с модулем ардуинка общается at-командами, которые имеют формат char, а после команды +IPD, данные у меня байтовые. как делается преобразование форматов? или я что-то не понимаю?
Вот кусок кода где я получаю данные от esp:
if (mySerial.available())
{
delay(100);
memset (buffer, 0, sizeof buffer);
while ( mySerial.available() && i < 201)
{
buffer[i++] = mySerial.read();
}
//---------------собираем первые 5 символов-----------------
char tempbuf1 = buffer [2];
char tempbuf2 = buffer [3];
char tempbuf3 = buffer [4];
char tempbuf4 = buffer [5];
char tempbuf5 = buffer [6];
char cmd1[] = {tempbuf1, tempbuf2, tempbuf3, tempbuf4, tempbuf5};
//------------------------------------------------------------
//--------------------теперь сравниваем с +IPD----------------
if (strncmp(cmd1, "+IPD,", 5) == 0) // Если пришли данные
{
sscanf(buffer + 7, "%d,%d", &id_soed, &packet_len); // Узнаем id соединения и длинну пакета
//-----------------------------------------------------------
char *pb; //--------
pb = buffer; //--------тут в массив pb собираем данные из пакета
while (*pb != ':') //--------
pb++; //--------
pb++; //--------
//--------------------------------------------------------
// Serial.print("pb=");
digitalWrite(SerialTxControl, HIGH); //--------передача в 485
digitalWrite(ledPin13, SerialTxControl); //--------передача в 485
delay (50);
Serial.write(pb);
Serial.print("pb=");
Serial.println(pb);
delay (50);
у меня все что прилетает от esp складывается в массив buffer, потом он парсится и узнается что пришли данные (есть +IPD) и пришедшие данные складываются в pb. Вот когда я шлю символы, все хорошо, как только шлю байты - ничего не приходит....
Дело в том, что из-за нехватки знаний в программировании не могу понять как принимать-отправлять через esp данные не в формате символов (char, string), а байты. Подскажите пожалуйста, ведь с модулем ардуинка общается at-командами, которые имеют формат char, а после команды +IPD, данные у меня байтовые. как делается преобразование форматов? или я что-то не понимаю?
Вот кусок кода где я получаю данные от esp:
if (mySerial.available())
{
delay(100);
memset (buffer, 0, sizeof buffer);
while ( mySerial.available() && i < 201)
{
buffer[i++] = mySerial.read();
}
//---------------собираем первые 5 символов-----------------
char tempbuf1 = buffer [2];
char tempbuf2 = buffer [3];
char tempbuf3 = buffer [4];
char tempbuf4 = buffer [5];
char tempbuf5 = buffer [6];
char cmd1[] = {tempbuf1, tempbuf2, tempbuf3, tempbuf4, tempbuf5};
//------------------------------------------------------------
//--------------------теперь сравниваем с +IPD----------------
if (strncmp(cmd1, "+IPD,", 5) == 0) // Если пришли данные
{
sscanf(buffer + 7, "%d,%d", &id_soed, &packet_len); // Узнаем id соединения и длинну пакета
//-----------------------------------------------------------
char *pb; //--------
pb = buffer; //--------тут в массив pb собираем данные из пакета
while (*pb != ':') //--------
pb++; //--------
pb++; //--------
//--------------------------------------------------------
// Serial.print("pb=");
digitalWrite(SerialTxControl, HIGH); //--------передача в 485
digitalWrite(ledPin13, SerialTxControl); //--------передача в 485
delay (50);
Serial.write(pb);
Serial.print("pb=");
Serial.println(pb);
delay (50);
у меня все что прилетает от esp складывается в массив buffer, потом он парсится и узнается что пришли данные (есть +IPD) и пришедшие данные складываются в pb. Вот когда я шлю символы, все хорошо, как только шлю байты - ничего не приходит....