Не работает ESP32 с EasyTransfer.h (или SoftEasyTransfer.h)

xizix
Offline
Зарегистрирован: 10.11.2017

Приветствую форумчан. Подскажите, кто чем может.

Есть pro mini 3.3v с модулем rs485, которая общалась с такой же pro mini.

Не вижу смысла приводить весь код. Всё это работало через библиотеки SoftEasyTransfer.h SoftwareSerial.h и структуру данных:
 

SoftEasyTransfer ET;
struct SEND_DATA_STRUCTURE{
unsigned long ID;
unsigned long UID;
boolean Check;
};
SEND_DATA_STRUCTURE rxdata;

Но пришло время связать это всё с интернетом и добавить периферии. В ход пошла esp-wroom-32 36gpio на которой SoftEasyTransfer не ловит эти данные на SoftwareSerial для esp. То есть сам канал работает через uart, но не могу прочитать структуру данных на esp32. На ардуине это просто было. Уже долго гуглю, пробую разные варианты, но не могу дойти до сути.

В этом месте не приходят данные:
 

if(ET.receiveData()){
    Serial.print("ID:");
    Serial.print(rxdata.ID);  
    Serial.print("UID:");
    Serial.println(rxdata.UID);
    delay(500);
  }

 

 

rkit
Offline
Зарегистрирован: 23.11.2016

У esp32 три аппаратных сериала. Программный просто не нужен и вряд ли правильно работает.

xizix
Offline
Зарегистрирован: 10.11.2017

Проверял, работает и программный. Просто если отправить в uart что-то, то приходит, а в ET.receiveData() не приходит не из аппаратного, не из софтового.

Serial2.begin(9600);
ET.begin(details(rxdata), &Serial2);

Может есть вариант прикрутить костыль на приёме в esp32? Просто не хватает знаний для понимания принципа работы библиотеки. Её протокол: Header(0x06,0x85),SizeofPayload,Payload,Checksum
Вот как теперь это всё отловить?

rkit
Offline
Зарегистрирован: 23.11.2016

А, ну там сырые двоичные данные передаются, без поддержания совместимости между разными процессорами. Переделывать придется больше половины работы.  Передавай в json, если не хочешь углубляться в технические детали.

xizix
Offline
Зарегистрирован: 10.11.2017

rkit пишет:

А, ну там сырые двоичные данные передаются, без поддержания совместимости между разными процессорами. Переделывать придется больше половины работы.  Передавай в json, если не хочешь углубляться в технические детали.


Придётся углубиться, чтобы не переделывать несколько устройств. Мы же на одной скорости будем принимать\передавать - 9600. Крч, я так понимаю:
ждём 00000110 как начало пакета, затем считываем уже известное количество байт (сумма байт под переменные структуры данных), а следующий уже будет контрольная сумма для перепроверки этих самых байт структуры. Кто знает как это реализовать?

b707
Offline
Зарегистрирован: 26.05.2017

Ну а что там реализовывать? Я для своих целей писал подобную библиотеку сам. Проблема у вас наверняка с разным описанием бинарных данных в атмеге и в есп.