-
Notifications
You must be signed in to change notification settings - Fork 5
Server Data Storing
ka-yeon edited this page Jul 4, 2021
·
7 revisions
💾데이터 저장
connection C("dbname = 데이터베이스명 user = 데이터베이스 사용자
password = 비밀번호 \hostaddr = host 주소 port = 포트번호");
데이터베이스명, 데이터베이스 사용자, 비밀번호, host 주소, 포트번호를 수정해준다.
string path = "json 파일이 저장되어있는 위치"
json parsing 하기 위해, json 파일들이 저장되어 있는 위치를 수정해준다.
💾데이터 저장
main문에서 각각의 thread가 돌면서 PostgreSQL DB에 저장된다.
int main(int argc, char *argv[]){
// LOG
LogStoringThread mLogStoringThread;
thread logThread(&LogStoringThread::run, &mLogStoringThread);
logThread.join();
// FRAME
FrameStoringThread mFrameRawStoringThread;
thread frameThread(&FrameStoringThread::run, &mFrameRawStoringThread);
frameThread.join();
// SCENE
SceneStoringThread mSceneStoringThread;
thread SceneThread(&SceneStoringThread::run, &mSceneStoringThread);
SceneThread.join();
// Lidar
LidarStoringThread mLidarStoringThread;
thread lidarThread(&LidarStoringThread::run, &mLidarStoringThread);
lidarThread.join();
// CAM
CamStoringThread mCamStoringThread;
thread camThread(&CamStoringThread::run, &mCamStoringThread);
camThread.join();
// GPS
GpsStoringThread mGpsStoringThread;
thread gpsThread(&GpsStoringThread::run, &mGpsStoringThread);
gpsThread.join();
// IMU
ImuStoringThread mImuStoringThread;
thread imuThread(&ImuStoringThread::run, &mImuStoringThread);
imuThread.join();
// CAN
CanStoringThread mCanStoringThread;
thread canThread(&CanStoringThread::run, &mCanStoringThread);
canThread.join();
}
thread 코드 구성
예시 : CamStoringThread.cpp
나머지 Thread도 같은 방식으로 코드가 구성되어 있다.
1. DB connect & create table
connection C("dbname = diva2db user = diva2 password = 1234 \
hostaddr = 127.0.0.1 port = 5432");
저장하고 싶은 Database에 연결한다.
sql = "create table CAM_DATA(token text primary key references frame (frame_token), fileformat text, filename text);";
// foreign key (token) references frame (frame_token)
/* Create a transactional object. */
work W(C);
/* Execute SQL query */
W.exec( sql );
W.commit();
json 파일 이름에 해당하는 테이블을 생성한다.
2. json file parsing
Server/DIVA2_DATA/YYYYMDD_0/JSON에 있는 json 파일들을 parsing한다.
3. insert data in table
parsing한 데이터들을 테이블에 삽입한다.
for(int i=0; i<Cam_datas.size(); i++){
cout<<"for start"<<endl;
temp1=std::string((Cam_datas[i]["token"].asString()).c_str());
temp2=std::string((Cam_datas[i]["fileformat"].asString()).c_str());
temp3=std::string((Cam_datas[i]["filename"].asString()).c_str());
/* Create a transactional object. */
work W(C);
std::string query_string;
query_string.append("insert into CAM_DATA values('");
// *****Set table*****
query_string.append(temp1);
query_string.append("','");
query_string.append(temp2);
query_string.append("','");
query_string.append(temp3);
query_string.append("');");
/* Execute SQL query */
W.exec(query_string);
W.commit();
cout<<"for end"<<endl;
}
2, 3 과정이 함께 구성되어 있다.
4. Database 연결 해제
cout << "[DBStoring] cam successfully" << endl;
C.disconnect ();
database의 연결을 해제시켜준다.
If you have any questions, please email below.
- dazory: 12181851@inha.edu
- yuntreee: lewis45626@gmail.com
- airpod2: 12181774@inha.edu
- ka-yeon: 12181736@inha.edu
-
🚘 Mobile Platform
-
📊 Ground Station