序文として、私は今本当に迷っているので、何を言っているのかわからないので、意味をなさないことを言っているかもしれません. 役立つ限り、私の質問を自由に分析してください。
さて、私が取り組んでいる全体的なプロジェクトは、Python でプログラムを作成して、カスタム ビルドの温度制御ユニット (このチップでビルド) とインターフェイスし、データ ポイントが格納されているメモリ バッファーからデータをコピーすることです。
私はそれをプログラムした人ではなく、Arduinosでの限られた経験から抜け出しました(また、Pythonも初めてです)。これは、それとインターフェースするためのコマンドに関して私が送ったものの一部です:
#define COMMAND_PING 'p'
// -> 'p'
// <- 'p' uuuu
// uuuu - unique number == 0x03645145
#define COMMAND_GET_RECORD_NUMBER 'i'
// -> 'i'
// <- 'i' nnnn
// nnnn - current record number (not written yet)
#define COMMAND_GET_DATA 'd' //Length to 32-bit boundary
// -> 'd' ssss llll
// <- 'd' ddddddd...
// ssss - starting address (should, but probably don't need to be at 32-byte boundary)
// llll - data length - this must be a multiplicity of 32
// ddddddd... - data returned
私は問題なく使用でき、16進数に変換されたものcon.write('p')
を使用すると、7045516403が返されます(送信および返される値はリトルエンディアンであることに注意してください)con.readline()
。\x00\x00pEQd\x03
私の問題は「d」コマンドにあります。「d」を 2 つの 32 ビット バイナリ値とともに文字列として送信する必要があると思いますが、その方法がわかりません。質問するのが正しいかどうかさえほとんどわかりません。皆さんができる助けがあれば大歓迎です。
インターネットリソースを(何時間も)調べていると、構造体またはこのようなものを使用したいと思うかもしれません。シリアル ポートへの接続、書き込み、および読み取りのプロセス全体を示す例が本当に好きです。