Writing 13 (0xd) actually writes 10 (0xa)
I have been having problems for many months now...over a year with communication between the Industruino and a host machine over USB using the `SerialUSB`. Today, perhaps I have come to the bottom of it. I wrote a script
for (uint8_t i{0}; i < 255; ++i)
SerialUSB.write(&i, 1);
And I'm reading it similarly on the host. The output I get on the host is this:
[000769] t:main INFO real_machine:274 -- Good 0x0
[000821] t:main INFO real_machine:274 -- Good 0x1
[000872] t:main INFO real_machine:274 -- Good 0x2
[000873] t:main INFO real_machine:274 -- Good 0x3
[000924] t:main INFO real_machine:274 -- Good 0x4
[000975] t:main INFO real_machine:274 -- Good 0x5
[001027] t:main INFO real_machine:274 -- Good 0x6
[001078] t:main INFO real_machine:274 -- Good 0x7
[001130] t:main INFO real_machine:274 -- Good 0x8
[001181] t:main INFO real_machine:274 -- Good 0x9
[001232] t:main INFO real_machine:274 -- Good 0xa
[001284] t:main INFO real_machine:274 -- Good 0xb
[001336] t:main INFO real_machine:274 -- Good 0xc
[001387] t:main ERROR real_machine:272 -- Expected 0xd (13) got 0xa.
[001439] t:main INFO real_machine:274 -- Good 0xe
[001490] t:main INFO real_machine:274 -- Good 0xf
[001542] t:main INFO real_machine:274 -- Good 0x10
[001644] t:main ERROR real_machine:272 -- Expected 0x11 (17) got 0x12.
[001747] t:main ERROR real_machine:272 -- Expected 0x12 (18) got 0x14.
[001799] t:main ERROR real_machine:272 -- Expected 0x13 (19) got 0x15.
[001850] t:main ERROR real_machine:272 -- Expected 0x14 (20) got 0x16.
[001902] t:main ERROR real_machine:272 -- Expected 0x15 (21) got 0x17.
[001953] t:main ERROR real_machine:272 -- Expected 0x16 (22) got 0x18.
[002005] t:main ERROR real_machine:272 -- Expected 0x17 (23) got 0x19.
[002056] t:main ERROR real_machine:272 -- Expected 0x18 (24) got 0x1a.
[002108] t:main ERROR real_machine:272 -- Expected 0x19 (25) got 0x1b.
[002160] t:main ERROR real_machine:272 -- Expected 0x1a (26) got 0x1c.
[002211] t:main ERROR real_machine:272 -- Expected 0x1b (27) got 0x1d.
[002263] t:main ERROR real_machine:272 -- Expected 0x1c (28) got 0x1e.
[002314] t:main ERROR real_machine:272 -- Expected 0x1d (29) got 0x1f.
[002365] t:main ERROR real_machine:272 -- Expected 0x1e (30) got 0x20.
[002417] t:main ERROR real_machine:272 -- Expected 0x1f (31) got 0x21.
The `SerialUSB.write` overload taking a buffer (pointer) and a length should write binary data: https://www.arduino.cc/reference/en/language/functions/communication/serial/write/, however, it appears that byte 13 (0xd) is being translated to 10 (0xa). This might be natural for text-based transmissions (changing carriage return to line feed), but is very troublesome when attempting to submit binary data!! It looks like this also happens WITHIN submissions. Using something like `uint32_t num{0x100d00}; SerialUSB.write(&num, 4);`, I get:
[000670] t:main ERROR real_machine:282 -- Expected 0x10d00 (68864) got 0x10a00.
[000722] t:main ERROR real_machine:282 -- Expected 0x10d01 (68865) got 0x10a01.
[000773] t:main ERROR real_machine:282 -- Expected 0x10d02 (68866) got 0x10a02.
[000773] t:main ERROR real_machine:282 -- Expected 0x10d03 (68867) got 0x10a03.
[000825] t:main ERROR real_machine:282 -- Expected 0x10d04 (68868) got 0x10a04.
You can see that the INNER `0x0d`s are being converted to `0x0a`s.
I assume the other alignment issues are related. It looks like `0x11` and `0x13` simply aren't submitted?
Anyway, how do I get industruino to submit a byte 0x0d? How do I submit binary data using the SerialUSB interface?
Thank you for your time!
Your answer
Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!
Keep Informed
About This Forum
This community is for professionals and enthusiasts of our products and services.
Read GuidelinesQuestion tools
Stats
Asked: 3/23/22, 9:08 PM |
Seen: 999 times |
Last updated: 3/24/22, 1:40 PM |
I'm going to double-check the host settings to make sure there's no text processing there.