for循环中的数组

时间:2014-01-11 18:27:41

标签: c tcp winsock

我通过TCP从LabVIEW向这个C程序每秒发送一些8位灰度帧(160x120)。我设法将字节转换为uint8_t像素值。这里的目标是我将每个19203字节定义为一个图像数组,其中第一个字节是定义数组ID的头,第二个和第三个字节定义分辨率(120和160),最后19200个字节是从LabVIEW程序接收的字节数。目的是第一个数组的第一个字节将获得值“1”,第二个数组的第一个字节将获得值“2”,依此类推。

问题在于我认为数组总是一次又一次地重复捕获的第一帧,因为在几秒的传输时间后,LabVIEW的帧速率会有很大的下降。阵列是否重复首次捕获的19000字节?。

#define DEFAULT_BUFLEN 19203 

int main(int argc , char *argv[])
{
    WSADATA wsa;
    SOCKET s , new_socket;
    struct sockaddr_in server , client;
    int c;
    int iResult;
    char recvbuf[DEFAULT_BUFLEN];
    int recvbuflen = DEFAULT_BUFLEN;
    unsigned int i;
    uint8_t picture[19203]; 
    uint8_t* p;
    int x=0;
    int z=0; 


        p = (uint8_t*)recvbuf;

do
{
iResult = recv( new_socket, recvbuf, recvbuflen, 0);

for(z=1; z<11; z++)
    {
    picture[0] = z;

    for(i=0, x=1; i<19202 && x<19203; i++, x++)
        {
        picture[x] = p[i];
        printf("%d\n",picture[x]);
        }
    }   
}
while(iResult > 0 );

closesocket(new_socket);
WSACleanup();

return 0;
}

0 个答案:

没有答案