ESP8266 – software serial – not receive data

I have my new hardware and put it together. I tested with simple arduino project and get a loopback response so I know hardware is good.

I have a small test project in b4r and spent about 3 hours last night going through the b4r libraries, mainly AsyncStreams and B4RStream.
The issue as far as I can tell is that when the B4RStream library does readBytes with the line

B4X:



Int i = wrappedStream->readBytes(((Byte*)Buffer->data + StartOffset + total), MaxCount);

The returned value ‘i’ is -1.
If you log the action directly with

B4X:



::Serial.println(wrappedStream->readBytes(((Byte*)Buffer->data + StartOffset + total), MaxCount));

the returned value is 4294967295 which is higher than the max value of the Int variable (2147483647) so is possibly why it returns -1 (overflow maybe?)

This in turn returns to the AsyncStream lib the value of read bytes as 0
So then in this code in AsyncStream

B4X:



        if (index > 0 && (!me->prefixMode || index == maxSize)) {            arr->length = index;            sender->wrapPointer(b);            B4R::StackMemory::cp += index;            ::Serial.print("Lib - Data4");            me->NewDataSub(arr);        }

Also, interestingly. When accessing the stream direct in b4r with

B4X:



    If swserial.Stream.BytesAvailable> 1 Then        Dim b(swserial.Stream.BytesAvailable) As Byte        Dim len As Int = swserial.Stream.ReadBytes(b, 0, b.Length)        Log ("b4r - ", b)        Log ("Length = ", len)    Else        Log("No data")    End If

Any thoughts on this

I think I’m about to give up on this.I have my new hardware and put it together. I tested with simple arduino project and get a loopback response so I know hardware is good.I have a small test project in b4r and spent about 3 hours last night going through the b4r libraries, mainly AsyncStreams and B4RStream.The issue as far as I can tell is that when the B4RStream library does readBytes with the lineThe returned value ‘i’ is -1.If you log the action directly withthe returned value is 4294967295 which is higher than the max value of the Int variable (2147483647) so is possibly why it returns -1 (overflow maybe?)This in turn returns to the AsyncStream lib the value of read bytes as 0So then in this code in AsyncStream’i’ is always 0 and so NewDataSub is never called.Also, interestingly. When accessing the stream direct in b4r within the log, Length = 0. Which again uses the B4RStream lib and returns 0 like when using AsyncStream.Any thoughts on this @Erel

Xổ số miền Bắc