I am connecting a radio control transmitter that Notifies telemetry in BLE and when I decide to analyze and represent all the data on the screen it gives a run time error. like the one attached.
If I work with only one piece of data I have no problems.
The transmitter notifies up to 16 pieces of data with a frequency of 250msg and some reach 125msg. Which means a lot of data to manage.
. But now I would like to manage them all and I think that is what is causing an overload error.
The data arrive via notification in 22 byte packets and I take them as Bytes (ReregisterforBytes that arrive as decimal values) and then you have to separate two bytes on one side to describe the data and another four for the value. As you can see it is a lot of work for Android and I think that is the problem.
I have even managed to represent the location of the plane on a map by selecting only 5 pieces of data and here it does not give problems.
What can you recommend me?
(Canned Reply: ABG - Download those blocks and post them here)
Please download and post each of those event block(s)/procedures here ...
P.S. These blocks can be dragged directly into your Blocks Editor workspace.
See Download Block Images for a demo.
Thank you for your quick response .
I think these would be the ones involved since the rest have nothing to do with anything other than list processing etc.
I had to make the last one smaller, it was big.
The problem only appears when the last module is activated. There are no problems with the previous one.
What's this numberConverter procedure?
Also, you have empty sockets.
Use the Do It facility to show what has arrived, (copy the incoming data into global variables for persistence.)
Non-English blocks will require non-English eyes, a longer wait.
The function corresponds to an extension to change the base of numbers. The open connector corresponds to tests but I think it does not affect this case.
I have changed the images for others in English and I have placed comments but I do not see them, I do not know if you can see them.
With English it happens to me the same that is why I work in Spanish. But I hope to remember it for the next time.
That shouldn't be needed, with AI2 math block capabilities.
No, at the beginning of my work I saw that with the capabilities of AI2 Math when changing from decimal to binary or Hex I did have to put additional zeros to maintain the 8 bits or the two digits of the byte, I tried with this extension and indeed it did not change but I kept the extension. Can it be done with the normal AI2 Math. Does this reduce the execution time?
The problem starts when you take bytes from BLE and it returns them in decimal. You have to change them to binary to create the 32-bit number and then back to decimal. It would make some progress if you could collect the data in binary bytes. It would save conversions.
I think the problem is that the data is represented almost 100 times per second and that saturates the system. I'm going to see if I can change this so that the screen is updated only two or three times per second. I can't set timers because I've read that this affects the BLE reading.
I'll let you know the result.
Nota:
I have managed to modify the number of times the screen is updated and if I do it every second the alarm stops coming out. I have tried generating the apk and installing it and it seems to be correct.