Ich arbeite an Xbee im API-Modus und schreibe ein kleines Programm in C, um API-Frames zu empfangen und zu verarbeiten, aber um damit zu beginnen, wollte ich einfach überprüfen, wie diese Frames aussehen und ob die API-Kommunikation wirklich stattfindet oder nicht.
Ich habe Radio A und Radio B
Radio A - Transmitter
64 bit address - 0013A20040BB1716
Radio B - Receiver
64 bit address - 013A20040BCDE18
Ich habe sie beide über Xbee USB Shield zu KDE hinzugefügt und minicom für beide gestartet. Beide antworten ziemlich gut auf den AT-Befehl. Ich stelle den API-Modus mit ein
ATAP = 1 or ATAP = 2
und dann ATWR
und ATCN
und überprüfte den API-Modus erneut, indem er ATAP
1 oder 2 als Antwort ausgab und erhielt, das bedeutet, dass ich mich jetzt im API-Modus befinde.
Ich habe diesen Link verwendet , um API-Frames zu framen, die von Radio A an Radio B gesendet werden sollen, und dies ist der Frame, den ich erhalten habe
`7E 00 10 10 01 00 13 A2 00 40 BC DE 18 00 00 00 00 AE DA BF`
Wenn ich es von Radio A zu Radio B sende, bekomme ich nichts auf Radio B seriell auf Minicom. Was vermisse ich? Antenne hatte ich schon angeschlossen. Ich habe diesen Link auch in Betracht gezogen , aber anstatt XCTU zu verwenden, hatte ich einfach minicom verwendet.
Beim Senden dieser Pakete müssen sie binär und nicht als Hex-String gesendet werden, und Minicom scheint Binärdaten nicht zu unterstützen. Aus einer Stack Overflow-Antwort enthält die folgende Seite jedoch Details zum Hinzufügen der Möglichkeit, eine Binärdatei zu senden:
Senden von Binärdateien über minicom
Sie könnten Ihr Paket mit einem Befehl wie dem folgenden in eine Binärdatei bringen:
echo -ne '\x7E\x00\x10\x10\x01\x00\x13\xA2\x00\x40\xBC\xDE\x18\x00\x00\x00\x00\xAE\xDA\xBF' > packet.bin
Eine andere Alternative wäre die Verwendung des RealTerm- Programms, das das Senden von Binärdateien ermöglicht und Ihnen auch ermöglicht, die empfangenen Pakete in Hex zu sehen, was mit Minicom schwierig sein kann. Ich benutze es unter Windows, aber laut Support-Seite wurde es erfolgreich unter Wine getestet.
7
ich bekomme ~
. Oder bekomme ich immer Char auf der anderen Seite?binary_to_hex
Auf der AVR-Seite ist es also am besten, alles in einem Frame zu speichern und es mit einem Konvertierungsprogramm
in HEX umzuwandeln und es dann mit dem Frame-Typ zu vergleichen?if (my_rx_byte == 0x40)
enthält .frame[index++] = ch;
um die Binärdatei in einem Puffer zu speichern frame[100];
. Die meisten Bytes sind nicht lesbar, enthalten Leerzeichen usw. Wenn ich Hex bekomme, kann ich im Allgemeinen leicht die Länge des Frames herausfinden, um welchen Typ es sich handelt, was die Zieladresse, die Daten und die Prüfsumme sind, aber wie gehe ich mit Binärdaten um? Bytes, ohne sie zu speichern und in Hex umzuwandeln. Ich muss den Rahmentyp und die Größe des Rahmens überprüfen.
PeterJ
srj0408