타이머에서 cnt를 증가 시킨 이유가 있나요?
말씀하신대로
채널별로 값을 무조건 3개씩 일정하게 출력되게 할려면
타이머에서 cnt 를 증가 시키지 말고
3으로 고정하세요.
반복문을 아래와 같이 수정하면
고정으로 채널당 3개씩 출력할 겁니다.
for(int i=0; i<3; ++i){
ocv = "CH" + IntToStr(i+1);
ir2 = "CH" + IntToStr(i+1);
for(int j = 0; j<3; j++){ // 수정부분
try{
ocv = ocv + "," + "~" + volt[j];
ir2 = ir2 + "," + "-" + curr[j];
}catch(...){}
ir2 = ir2 + "\n";
ocv = ocv + "\n";
WriteDataFile(file_reward, ir2);
WriteDataFile(file_ocv, ocv);
}
}
백지상태 님이 쓰신 글 :
: .csv파일로 데이터를 저장합니다.
: 그리고 .csv파일에 저장되는 값이
: CH1 값 값 값
: CH2 값 값 값
: CH3 값 값 값
: 이런식으로 저장이 되어야하는데 현재 제 소스에서는
: CH1 값
: CH2 값
: CH3 값
: CH1 값
: CH2 값
: CH3 값
: 이런식으로 저장이 되는 상황입니다.
: 데이터는 타이머가 실행될때마다 저장이되구요.
: 해결방법이 있을까요?
: 아래는 제 소스입니다.
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: if(cnt != 0) cnt = 0;
: Timer1->Enabled = true;
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
: Timer1->Enabled = false;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Timer1Timer(TObject *Sender)
: {
:
: cnt += 1;
: Edit1->Text = cnt;
: DataResult();
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::DataResult()
: {
: AnsiString ir, ocv, ir2;
: AnsiString file_ir, file_reward, file_ocv, name, dir;
:
: //0 -> date -> trayid
:
: name = "C:\\TEST\\";
: if(!DirectoryExists(name))MkDir(name);
: name = name + "1" + "\\";
: if(!DirectoryExists(name))MkDir(name);
: name = name + Now().FormatString("yymmdd") + "//";
: if(!DirectoryExists(name))MkDir(name);
:
: file_ocv = name + Now().FormatString("mmdd_hhnn") + "curr.csv";
: file_reward = name + Now().FormatString("mmdd_hhnn") + "volt.csv";
:
: for(int i=0; i<3; ++i){
: ocv = "CH" + IntToStr(i+1);
: ir2 = "CH" + IntToStr(i+1);
: for(int j = 0; j<=cnt; j++){
: try{
: ocv = ocv + "," + "~" + volt[j];
: ir2 = ir2 + "," + "-" + curr[j];
: }catch(...){}
:
: ir2 = ir2 + "\n";
: ocv = ocv + "\n";
: WriteDataFile(file_reward, ir2);
: WriteDataFile(file_ocv, ocv);
: }
: }
: }
:
: void __fastcall TForm1::WriteDataFile(AnsiString FileName, AnsiString Data)
: {
:
: AnsiString str;
: int file_handle;
:
: if(FileExists(FileName) == false){
: file_handle = FileCreate(FileName);
: }
: else{
: file_handle = FileOpen(FileName, fmOpenWrite);
: }
: FileSeek(file_handle, 0, 2);
:
: FileWrite(file_handle, Data.c_str(), Data.Length());
: FileClose(file_handle);
: }
:
:
|