|
시리얼 통신에..관한 질문 입니다.
시리얼 통신 프로그램을 작성하던 중에 이런 저런 방법을 연구중 인대요
질문있이요 ..
시리얼 통신 하는 방법중에서 프로그램적 관점에서 보면
계속 스켄하는 방법 ( 폴링 )
하고 하드웨어 인터렙트 하는 방법이 있더군요 ..
옵션만..달리해서.. 만들면 되던대요..
알고 싶은것은 2가지 방법중에서..
하드웨어 인터렙트가 더 효율적인 방법일까 ?
많이 사용하는 방법은 뭘까?
그리고 옵션과 구조체을 찼아 보면.. 옵션 많이 있던데..
이런 것에 관하여 자세히 나온 책은 없나요
예)
CreateFile(comm.Port, GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL )
여기 옵션에.. 설정에 관한 자세안 "설명과 원리"
뭐 이런것 걍 사용하는거 말구요 ..
구조체하고
DCB
COMMTIMEOUTS
OVERLAPPED ..
구조체..관한 사세한 설명과 사레..이런때.. 이 옵션에.. 어떻한 값을 넣어한다
왜.. 이러이러 해서..
뭐.. 이런 내용을 다루는 책은 없나요..
아무것도 모르고 카피해서 프로그램하다 보니 마음대로 할수거 없더군요 .
마지막으로요 시리얼통신 하다보면
PCL 하고 0.1 사이에 계속모니터링 하면서
명령을 내려 보내면
즉 모니터링 신호가.. 0.1 계속 나오고 읽어 오는 중간에
다른 명령어를 보내면 가끔 명령어가 사라지는 경우가 있어요
그래서
COMMTIMEOUTS 에서 보내는 타임아웃을 설정할 수 있더라구요 그래서 함해 봤는데
이것 두 별루 소용이 없더라구요 ..
에러가 나면 타임아웃 시간후에 다시 도전한다고 하던데 아마도
plc 하고 통신하는 방법이 전이중이 않이고 반이중 통신이라서
데이터가 오는 중간에 여기서 명령어를 날리면 plc가 처리 하지 못하는것 같습니다.
아마도 ...
반이중 통신을 프로그램에서 스레드 비슷하게 만들어 처리하는 것이 맞는 것인가.?
않이면 api 함수 수준에서 설정을 해결할 수는 없는 것인가 ?
|