|
일단 지금 저장된 파일 형식은 byte 단위에 배열을 그냥 바이너리 형태로 저장을 한 것 입니다.
그림 파일이라고 볼수는 없구요. 따라서 그림판 같은 걸로는 볼수 없을 거라 생각이 듭니다.
저장된 데이타는 low data 입니다. VB 에서는 어떻게 그림 파일 형태로 저장이 되었는지는 잘 모르겠습니다만
원래 그림파일을 저장 하기 위해서는 그림 파일 구조체에 맞게 저장을 해야 됩니다. bmp 파일은 API 책에서 BMP 파일
관련 해서 찾아 보시면 될것 같습니다. gif는 제가 해보지 않아서 잘 모르겠습니다.(죄송)
일단 받은 데이타가 정확한지 확인 하시고 싶다면, setpixel 이라는 함수로 low data를
출력해서 볼수 있을 것 같습니다만, 저도 한 번 파일 내용을 확인해 보겠습니다.
그럼 즐프 하시고요. ~~ 좋은 주말 보내세요.
unitas 님이 쓰신 글 :
: 답변 감사합니다.
:
: 첫번째 첨부파일은 VB 소스이구요
: 두번재 올린 파일은 제가 C++ Builder로 바꾸어본 파일입니다. [capture변환.rtf]
: 볼랜드 프로젝트 파일은 올려도 Error 나서 실행하실수 없을겁니다.
: (Agilent Library를 설치하셔야 되거든요.)
: 그래서 볼랜드 소스 그대로 복사해서 올린 파일입니다.
:
: viVQueryf, viScanf 함수는 아래처럼 정의되어 있는데
:
: ViStatus _VI_FUNC viVQueryf (ViSession vi, ViString writeFmt, ViString readFmt,
: ViVAList params);
:
: ViStatus _VI_FUNCC viScanf (ViSession vi, ViString readFmt, ...);
:
:
: 말씀하신대로
:
: status = viPrintf ( m_vi, "MMEM:DATA? 'C:PICTURE.GIF'\n" );
: status = viReadSTB (m_vi, &stb);
: sprintf(ResultsArray,"%s","%%#y");
: // ResultsArray를 디버그로 보면 "%%#y\096GIF87a \x02?
: status = viScanf ( m_vi, "%t", &ResultsArray );
:
: 중략 아래처럼 바꾸어서 실행 했습니다.
: int h_File;
:
: h_File = FileCreate(strTemp);
: FileWrite( h_File, &ResultsArray, sizeof(ResultsArray) );
: FileClose(h_File);
:
: 이렇게 해봤는데요. 그림은 표시 되지 않네요.
: [제가 파일변환부분에 문제가 있었나보네요. 전에는 파일크기가 1k 였는데 말씀하신 내용으로
: 바꾸니 49k 이네요 - 파일 크기상으로는 맞게 수신된것 같은데
: 그림형식으로 어떻게 바꾸어야 할지?]
: 이번에 올리는 첨부파일은gif 파일입니다.
: (gif 파일 첨부하니 에러나서 압축해서 올렸습니다)
:
:
:
: 김동현 님이 쓰신 글 :
: : 안녕 하세요.
: : [계측기라고 하시면 드라이버나 이런것을 설치 하셨다고 한다면 아마 예제 소스가 있을 겁니다.]
: : 종결자는 ' \n' 맞습니다.
: : 보통의 배열의 마지막에 들어 가니깐?
: : C문법상 '\n' 하셔도 되구요.
: : 배열에 마지막 부분에 10라고 넣으셔도 상관은 없습니다.
: : 예를 들어 STX + Data + ETX 을 사용 하는 경우 배열의 길이를 안다고 하면,
: : char ca_Temp[256] = {0};
: : ca_Temp[0] = 2;
: : ca_Temp[마지막 번호] = 10; 넣으셔도 되구요.
: : 일단 이부분을 말씀 드리려고 한 것은 아니고요.
: :
: : viVQueryf(vi, "MMEM:DATA? 'C:PICTURE.GIF'\n", "%c%%#y", ArrayPtr(0) );
: : 이 함수에 인자가 4개 인가요?
: :
: : vi => 장비 핸들이겠져.
: :
: : "MMEM:DATA? 'C:PICTURE.GIF'\n" => 이것이 command 이겠네요.
: :
: : "%c%%#y" => '%c" 이것은 필요가 없겠네요. 적으신 문장은 비베 문장이여서
: : 문장에 시작과 끝이 명확하지 않아서 한 문장으로 보아서 이부분을 적은 거구요.
: : spritnf 함수에서 %c 이것은 문자를 찍기 위해서 사용 하는 것입니다.
: : 인자가 "%#y" 라면 "%%#y" 적으시면 됩니다. (%을 표현 하기 위해서 c에선는 문자열 안에서는 두 번써 줍니다. "%%" 이런식으로요.)
: :
: : ArrayPtr(0) : 비베에서는 포인터가 없어서 포인터 처럼 사용 하는 방법인데요.
: : c++에서는 포인터에 주소이니 그냥 변수이름을 넣으시면 되겠는데요.(아니면 &변수명)
: : 지금 적으신 소스는 비베 소스인가요? 아님 c++ 소스인가요.
: : 배열을 ArrayPtr(0) () 형태는 비베에서만 사용 하는 것인데요.
: :
: : 볼랜드 소스를 올려 주시는것이 대답해드리기 편할 것 같습니다.
: :
: : 그리고 파일 저장 부분은 비베에서 바이너리 파일을 그냥 저장을 하고 있는데요.
: :
: : int h_File;
: :
: : h_File = FileCreate("INI\\Spec.ini");
: : FileWrite( h_File, &gS_Spec, sizeof(gS_Spec) );
: : FileClose(h_File);
: :
: : 이런식으로 저장을 하심 될것 같은데요 gS_Spec 구조체 입니다.
: : 파일 저장 부분은 API 책을 보시면 잘 나와 있을 것 같습니다.
: :
: : 일단 죄송합니다만 님에 소스는 비베 소스인지 c++ 소스인지 잘 구별이 안갑니다.
: : c++ 소스를 올려 주시면 더 좋겠네요 에러가 나면 어떤 에러가 나는지 제가 도움을 드릴수 있을지는
: : 모르겠습니다만.
: :
: :
|