2017-06-25 4 views
0

私はFLIR Leptonサーマルカメラとインターフェースを取ろうとしているラズベリー-pi 3を持っています。このインターフェイスの仕組みを理解していますが、SPI readコマンドに関する質問があります。以下はコードのスニペットです。 UNIX read呼び出しの2番目のパラメータがバッファvoid *bufあるので、完全なソースはgithubUnix Read Bufferパラメータ

#define PACKET_SIZE 164 
#define PACKET_SIZE_UINT16 (PACKET_SIZE/2) //82 
#define PACKETS_PER_FRAME 60 
#define FRAME_SIZE_UINT16 (PACKET_SIZE_UINT16*PACKETS_PER_FRAME) //4920 

uint8_t result[PACKET_SIZE*PACKETS_PER_FRAME]; //9840 

for(int j=0;j<PACKETS_PER_FRAME;j++) { 
    read(spi_cs0_fd, result+sizeof(uint8_t)*PACKET_SIZE*j, sizeof(uint8_t)*PACKET_SIZE); 
} 

で見つけることができ、私は、パラメータresult+sizeof(uint8_t)*PACKET_SIZE*jがアレイresultにおける位置のポインタに解決する方法を見つけ出すことができません。

これはどのように解決されるのですか?resultの配列位置に解決方法を説明できますか?

答えて

2

result+sizeof(uint8_t)*PACKET_SIZE*jは、インデックス​​のresultアレイのメモリ位置のアドレスと同じです。

読むthis

1

あなたの配列は、以下の

packet 0: 
    [0] 
    .. 
    [163] 
packet 1: 
    [164] 
    .. 
    [227] 
packet 2: 
    [228] 
    ... 

ので、パケット1のアドレスは、(パケットのサイズ(164)* J(1))であるように、メモリに割り当てられていると想像jはパケット番号です。 sizeof unit8は、必要なバイト数(ほとんどの場合、 '1')を解決します。