Asked
Resolved Resolved by ptp!

Sendserial Doesn'T Work Correctly

I'm doing some experimentation sending  a serial message ( 115200 baud rate) to ezbv4. The project sends  a packet of 10 bytes every 100 mS.  The packet is not always being sent every 100 mS, but  very often it is not sent, as you can see in this oscillogram. (each pulse you see is the 10 byte packet) . The're correctly spaced by 100 mS , but many are missing.

User-inserted image

 C

Can somebody explain what's going on ??


Related Hardware EZ-B v4

ARC Pro

Upgrade to ARC Pro

Synthiam ARC Pro is a new tool that will help unleash your creativity with programming robots in just seconds!

PRO
USA
#1  

Please share the script, how many you sent ? The pic shows 11.

#2   — Edited

The script  was like this (send for ever) :  :a sendserial(d0,115200,0x KK, .......) sleep(100) sendserial (d0,115200,0xYY.......) sleep(100) goto (a)

the scope shows only a few seconds

#4   — Edited
:a
sendserial(d0,115200,0x KK, .......)
sleep(100)
sendserial (d0,115200,0xYY.......)
sleep(100)
goto (a)

Is this your exact script? The second sendserial command has a space between sendserial and the open parentheses....

PRO
Synthiam
#5   — Edited

That’s not code that would work. I also can’t correct the code because there’s not enough to understand. Please post the code you’re using.

get a logic analyzer or use an arduino to better understand what transmitting you’re sending, and what’s not transmitting. Mainly cause ezscript doesn’t handle binary data in strings very well. So that’s why the hardware uart or JavaScript version of sendserial should be used. Ezscript is really only included in ARC for backward compatibility

found this arduino logic analyzer if you have one lying around: https://create.arduino.cc/projecthub/vincenzo-g/diy-logic-analyzer-f61ee5

also, the software sendserial is a bit bang. Some client serial devices may require higher timing accuracy. In that case, use the hardware uart on the ezb v4

lastly, because you’re sending binary data, the hardware uart commands are best. If you wish to continue using sendserial, then use JavaScript because it will send binary data better. Ezscript isn’t great for that stuff...

#6  

Sorry,guys, i was outside, and now i see  many posts.  i'm replying to all. I had the script in another PC, so i wrote it . here is the actual  code: alfa.EZB

@PTP . The script should send  short pulses , each lasting about 800 uS ( 10 bytes at 155200 bauds ) . This should happen every 100 mS, but the scope shows that many of them are skipped. You also refer to a post of mine in 2016 when i, a newbie of ezb,  tried to use ezb's analog ports to make a feedback system, that couldn't work, because of the delay caused by ezb itself. You and others explained that ezb isn't a real time system. So, for that purpose i used a local  PIC MCU . @DJ. sorry, Dj. I couldn't send the code before. it's up here. I'haven't arduino or a logic analyzer. But my 100 Mhz Tektronix digital sampling oscilloscope shows with no doubt that many pulses are missing. Note that the  software uart at pin D0 outputs a perfect sequence of 10 bytes  corresponding exactly to the script , but simply they aren't always sent every  100 mS as required by the script.

PRO
USA
#7   — Edited

@leonardo46: You can't expect 10 bytes each 100 ms !

What I wrote in 2016 is still true today. Please read again, the thread and the multiple posts, and let me know why you think this problem is not related.

#8   — Edited

Quote:

Note that the software uart at pin D0 outputs a perfect sequence of 10 bytes corresponding exactly to the script , but simply they aren't always sent every 100 mS as required by the script.
@PTP.  I have read previous posts. Here the problem is different. The 10 bytes sent at pin D0, at 115200 bauds, are perfect. The problem is the repetition every 100 mS. I could accept some error such as 70 or 130 mS  or more, instead of 100 mS,, but it often doesn't send anything  !...   why ?