Skip to content

HammingStream not working #7

Open

Description

@5tefanP

Hi,

does the ArduinoStreamUtils-lib work with the ARM® Cortex®-M4 XMC4700 ?

Thank you

King regards

Stefan

Activity

  1. bblanchon commented on Nov 25, 2020

    @bblanchon
    Owner

    Hi Stefan,

    Is this the core in question?
    https://github.com/Infineon/XMC-for-Arduino

    It compiles without any error so it should work fine.
    Please confirm so I can add it to the list.

    Best regards,
    Benoit

  2. 5tefanP commented on Nov 25, 2020

    @5tefanP
    Author

    Hi Benoit,

    Thank you for the quick response.

    Yes it is.

    It compiles fine, but does not work like expected. I didn't know if the compatibility could be the issue.

    I want to use the hammingStream on the Serial1 between two of the same boards.

    The Serial1 works without the hammingStream but is quite noisy.

    With the hemming. I receive random characters in the buffer. The rest works.

    For the stream
    -HammingStream<7, 4> eccSerial(Serial1);
    -Serial1.begin(115200); also tested (9600, SERIAL_7N1)

    -"eccSerial.println(int)"
    -"eccSerial.readBytesUntil('\n',buffer, size)" to receive

    Is it even possible that this is caused by the core?

    Right now i use it in a bigger project. Otherwise i would have provided the full code.
    I hope this helps though.

    Thank you

    Best regards
    Stefan

  3. bblanchon commented on Nov 26, 2020

    @bblanchon
    Owner

    Hi Stefan,

    Thank you very much for reporting this issue.
    This is a new feature, so it's likely to have bugs, but I doubletriple-checked today, and it works fine as far as I can tell.

    Of course, the encoded data looks like random characters; for example, DEFGHIJKL becomes TTT%T6TGT8TITZT+Tl.
    However, if you use HammingStream on both sides, which seems to be the case, the encoding/decoding should be transparent.

    Also, make sure you don't send any non-encoded byte (for instance, an accidental Serial1.println()) because it could insert an odd number of bytes and ruin the decoding of the following bytes.
    In other words, only use eccSerial; don't use Serial1 directly.

    I don't own this board, so I cannot verify, but I don't think this is related to the core, especially if it works fine without HammingStream.
    Can you try to reproduce the issue with a minimal setup, as in the example?

    Best regards,
    Benoit

  4. 5tefanP commented on Nov 26, 2020

    @5tefanP
    Author

    Hi Benoit,

    Thank you for helping.

    i tried your example separtely, just with Serial1. I also did the same code but with print() instead of write(), like in the README.md. So i encode with one controller and decode with another. Both times the decoded message is not the same as the original before encoding.

    I had no Serial1.prints.

    Thank you.

    Best regards,

    Stefan

  5. bblanchon commented on Nov 26, 2020

    @bblanchon
    Owner

    Hi Stefan,

    Starting from the example, can you check that DEFGHIJKL is transmitted as TTT%T6TGT8TITZT+Tl, and vice-versa.
    This would help me understand if the problem is on the encoding or decoding side.

    Could there be some initial (garbage?) data in the serial buffer when the microcontroller boot?
    If so, please try to add a flushing loop: while(Serial1.available()) Serial1.read() before using the HammingStream.

    I don't understand your last question, but when I say "decorates", I'm referring to the Decorator pattern.

    Best regards,
    Benoit

  6. added
    bugSomething isn't working
    and removed
    questionFurther information is requested
    on Nov 26, 2020
  7. changed the title [-]ARM core?[/-] [+]HammingStream not working[/+] on Nov 26, 2020
  8. bblanchon commented on Nov 28, 2020

    @bblanchon
    Owner

    I tested with other hardware and it still works as expected.
    However, I did get garbage when the decoder got out of sync after receiving an odd number of bytes.
    This problem was solved by the flushing loop I mentioned in my previous message.
    To make things clear, I added a new example to show how to use HammingStream with HardwareSerial.

  9. 5tefanP commented on Dec 1, 2020

    @5tefanP
    Author

    Hi Benoit,

    excuse the delay.

    I tested the new example.
    With eccSerial.print DEFGHIJKL in the loop, i receive TTT%T6TGT8TITZT+Tl, not decoded, on the other controller.
    If i send DEFGHIJKL normal and encoded via .print() and read it with ecc.Serial1.read(), i get ���↑ ����������� � ( "?" should be squares) followed by a new line.

    Flushing does not help.

    Best Regards

    Stefan

  10. bblanchon commented on Dec 1, 2020

    @bblanchon
    Owner

    Hi Stefan,

    Thank you for taking the time to run this experiment.

    With the example, you don't have to call print() explicitly; you just need to send the clear text via the Serial Monitor.
    If you run the program on both boards, the receiver should print back the clear text to the Serial Monitor.

    It seems that the encoding is working fine, and I cannot see any reason why the decoding would fail.
    If only I had the hardware with me...
    Do you think to can reproduce the issue with cheaper boards?

    Best regards,
    Benoit

  11. 5tefanP commented on Dec 8, 2020

    @5tefanP
    Author

    Hi Benoit,

    the cheaper board have no hardware serial that can be used in parallel. I could try it with software serial, but i dont have any experience with it.

    Maybe i can manage to send you a board.
    If you want to, you could use it to verify the library for the XMC in the fullest.

    Best regards
    Stefan

  12. bblanchon commented on Feb 5, 2021

    @bblanchon
    Owner

    Hi @5tefanP,

    I purchased an XMC4700 Relax Kit.
    I'll get back to you as soon as I find the time to run the experiment.

    Best regards,
    Benoit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions