I'm writing a java implementation of some mavlink messages for a college project. I can receive all messages and unpack successfully, now I'm trying to send messages and commands. I'm starting with sending a heartbeat then requesting a data stream but its not working. My code below is hardcoded and crude, but it is just meant for testing at the moment. In the code you can see every individual byte. Please let me know if something in it is wrong. I'm fairly sure the checksum is correct because I use the same method to verify checksum when receiving. I have been trying to figure this out for hours, any help would be extremely appreciated.
You need to be a member of diydrones to add comments!
Replies
Hi Andrew, did you ever solve your problem?
I am also new to Mavlink and got it working with C#, one thing I noticed is that you have a "crc extra" byte. Not sure where it fits as I don't use such a byte.
Here are some of my packet contents that can hopefully help:
Heartbeat: 254 9 0 255 1 0 0 0 0 0 6 3 0 0 3
Request Data Stream (all): 254 6 16 255 1 66 20 0 1 0 0 1 242 240
Is your array packing right? Looks like you are trying to pack a 12 byte payload + 1 byte start marker + 2 bytes crc into 14 bytes?
Watever it is, one approach would be to capture a live heartbeat from an APM, then set your hardcodes to be the same sequence and and payload values etc, and check you get the same binary message on the wire. This will check your CRC and packing is good.