SeyranG
New member
по моей команде некая железка начинает отправлять в Serial пакеты размером 1544 байт с частотой 4 Гц. Начало пакета это 2 байта 0х5А. Мне надо каждый пакет перенаправить по сети клиенту. Что бы я ни делал, но не попадаю в пакеты, они постоянно плывут. Вот мой код в лупе:
я даже согласен на потерю некоторых пакетов, по хорошему хватит даже 2х пакетов в секунду. Может кто решал подобную задачу, а то я уже не знаю как еще попасть в этот буфер...
C++:
void loop()
{
WiFiClient client = server.available();
bool startBuffer = false;
if (client) {
if(client.connected()){
Serial.println("Client Connected");
}
byte inBuf[1544];
while(client.connected()){
if(!dataStreamStarted){
espSerial.begin(115200);
uint8_t runCmd[] = {0xA5, 0x35, 0x02, 0xDC};
espSerial.write((byte*)&runCmd, sizeof(runCmd));
//тут сразу пытаюсь начать читать буфер, чтобы забрать первые 1544 байт
if(espSerial.readBytes((byte*)&inBuf, sizeof(inBuf))){
Serial.println("Bufer resived .....");
client.write((byte*)&inBuf, sizeof(inBuf));
}
dataStreamStarted = true;
}else{
uint i = 0;
while (espSerial.available()) {
if(!startBuffer){
byte bBuf = espSerial.read();
if(bBuf == 0x5A){ //тут опять пытаюсь поймать начало буфера
startBuffer = true;
}else{
Serial.println(inBuf[0]);
}
}else{
if(espSerial.readBytes((byte*)&inBuf, sizeof(inBuf))){
Serial.println("Bufer resived .....");
client.write((byte*)&inBuf, sizeof(inBuf));
}
}
}
}
}
client.stop();
espSerial.stopListening();
dataStreamStarted = false;
Serial.println("Client disconnected");
}