제가 만든 프로그램이 아니었고, 또 기본이 많이 부족해서 어떻게 처리할 지 몰라 처음부터 만들 요령으로 질문하였던 겁니다.
아래 VC++ 소스 수정에 관련한 것이었구요.......
포트 등록이 기존 소스에 있었는데, 아직 이해하지 못해서 적지를 못했습니다.
다만, 아래 VC++ 소스 변화질문과 이번 것의 주요요지에 대해서만 얘기하겠습니다.
특정포트로 들어오는 데이터는 프린터모니터(?)를 등록하고, 거기에 링크(?)된 Console Application 에서만 받아들일 수 있는 것 같았습니다.
그리고, C++ 에서의 stdin, stdout 에 해당하는 델파이 키워드는 input, ouput 으로 봐야 할 것 같습니다. (오브젝트 파스칼 랭귀지 안내서(한글 번역본)의 8장 표준루틴 및 I/O 의 8-3 페이지의 "텍스트 파일" 을 참조)
하지만, 말그대로 텍스트형태로 데이터가 들어오고 있는 것 같았습니다.
ch : char;
read(input, ch);
while ch > #0 do begin
...
end;
형태로 데이터를 읽을 수 있었고, 실질적인 데이터가 종료된 후에도 $4 (이스케이프 문자)의 쓰레기 값이 계속 들어오고 있었습니다.(저의 경우만요) 이것 때문에 하드디스크의 남은 용량 전체를 다 소진하여야만 멈추더군요.
바이너리 파일형태로 저장 하기 위해선 파일의 핸들(?) 값을 구해야 하는데 그걸 구하는 방법이 쉽지 않더군요.
우연히 API 에서 GetStdHandle 이라는 함수를 찾았지만, 사용해 보지는 않았습니다. 이미 텍스트 방식으로 구현했기 때문에요......
혹, 다른 분들에게 도움이 될까해서 올립니다.
류종택 님이 쓰신 글 :
: 새로운 포트를 지정하는 것은 해본적이 없어서 잘 모르겠습니다.
:
: 포트에서 데이터를 읽는 것은 간단합니다.
: 특히 프린터 포트는 OS 래밸에서는 파일로 인식합니다.
: 따라서, 파일을 오픈하셔서 읽거나 쓸수가 있습니다.
:
: 직렬포트는 다른 방법을 사용하셔야하는 것은 아실테고.
:
: 프린트포트 이름을 파일이름으로 해서 파일 핸들링을 하세요.
:
: 그런데!! 저도 읽는 부분은 해본적이 없네요 -.-
:
:
: Voice of Delphi, 류..
:
: 이상탁 님이 쓰신 글 :
: : 새로운 포트를 정의하고 거기로 들어오는 데이터를 받아서 파일로 저장하는 방법을 알고 싶습니다.
: :
: : FinePrint 라는 프로그램의 경우 FRP4: 라는 포트를 정의하여 거기로 들어오는 데이터를 받아들여서 저장하고, 인쇄하는 프로그램이잖습니까?
: :
: : 비슷하게 특정 포트를 정의하고, 그쪽으로 기록되어지는 데이터를 캡쳐해서 파일(바이너리)로 저장하고 싶거든요....
: :
: : 아시는 분은 답변 부탁드립니다.
|