2016-08-06 2 views
2

현재 UDP을 통해 값을 보내려고합니다.하나의 charArray에 값을 많이 보냄

주요 문제는 값이 많다는 것입니다. 모든 값을 자체적으로 보내면 잘 작동합니다.

char imu_x[16]; 
char imu_y[16]; 
char imu_z[16]; 
char mag_x[16]; 
char mag_y[16]; 
char mag_z[16]; 
char g_y[16]; 
char g_p[16]; 
char g_r[16]; 
char tmp[16]; 
char prs[16]; 
char ti[16]; 
char Motor1[16]; 
char Motor2[16]; 
char Motor3[16]; 
char Motor4[16]; 

//Timestamp 
sendto(clientSocket,ti,sizeof(ti),0,(struct sockaddr *)&serverAdress,addressSize); 

//acceleration data 
sendto(clientSocket,imu_x,accx,0,(struct sockaddr *)&serverAdress,addressSize); 
sendto(clientSocket,imu_y,accy,0,(struct sockaddr *)&serverAdress,addressSize); 
sendto(clientSocket,imu_z,accz,0,(struct sockaddr *)&serverAdress,addressSize); 

//Mag data 
sendto(clientSocket,mag_x,magx,0,(struct sockaddr *)&serverAdress,addressSize); 
sendto(clientSocket,mag_y,magy,0,(struct sockaddr *)&serverAdress,addressSize); 
sendto(clientSocket,mag_z,magz,0,(struct sockaddr *)&serverAdress,addressSize); 

//Gyro Data 
sendto(clientSocket,g_y,gy,0,(struct sockaddr *)&serverAdress,addressSize); 
sendto(clientSocket,g_p,gp,0,(struct sockaddr *)&serverAdress,addressSize); 
sendto(clientSocket,g_r,gr,0,(struct sockaddr *)&serverAdress,addressSize); 

//Temperature and Pressure 
sendto(clientSocket,tmp,temp,0,(struct sockaddr *)&serverAdress,addressSize); 
sendto(clientSocket,prs,press,0,(struct sockaddr *)&serverAdress,addressSize); 

// Motor Data 
sendto(clientSocket,Motor1,m1,0,(struct sockaddr *)&serverAdress,addressSize); 
sendto(clientSocket,Motor2,m2,0,(struct sockaddr *)&serverAdress,addressSize); 
sendto(clientSocket,Motor3,m3,0,(struct sockaddr *)&serverAdress,addressSize); 
sendto(clientSocket,Motor4,m4,0,(struct sockaddr *)&serverAdress,addressSize); 

그리고 이들이 발신 통화입니다.

하나의 발신 통화로 '병합'할 수 있습니까?

이미 strcat을 사용했지만 내 char 버퍼가 오버플로되고 루프가 종료됩니다. 누군가가 해결책을 알고있는 경우

난 당신이

가 좋은 주말 되세요 나와 함께 그것을 공유 할 수 있다면

+0

작동하지 않는 코드를 표시하는 것이 좋습니다. 당신은 말하기를, 불완전한 코드를 게시했습니다. –

답변

1

는 16 바이트 각 16 개 배열 모양) = 매우 기뻐, 그래서 크기의 버퍼를 선언 할 것 버퍼에 256 다음 memcpy 배열 :

char buffer[256]; 
char *data[16] = { imu_x, imu_y, imu_z, mag_x, mag_y, mag_z, g_y, g_p, g_r, tmp, prs, ti, Motor1, Motor2, Motor3, Motor4 }; 
for (int i = 0; i < 16; i++) 
    memcpy(buffer + i*16, data[i], 16); 

이 그럼 당신은 하나의 sendto로 버퍼를 전송하고, 버퍼 압축을 풀 수신 측에 유사한 코드를 사용할 수 있습니다.

관련 문제