| ||||
| ||||
*별내용없습니다. 시리얼포트제어를 해야 했는데 카드리더기.. 암것도 몰라서 그쪽 하드웨어 사람이랑 말이 안통했습니다 ㅡ_ㅡ;; 그라운드가 뭔지뭐가뭔지. 그래서 할수없이 조금 공부후 정리했었습니다.. 이런거 모르던 알던 상관없이 짜실땐 그냥 코드구루에서 CSerial같은 Serial Comm 통신 클래스 받아다 쓰는게 와땀다.. ㅡ.ㅡ* 오후 1:02 00-01-28 조경민 bro@shinbiro.com 8255, RS232 , IO 포트 , 시리얼 포트 제어 정리 -------------------------------------------------------------------- I/O 포트 컴퓨터에 붙는 주변장치( 프린터, 모뎀, 등등)의 Input Output을 하는 통로 IO포트에는 직렬 포트 ( Serial Port )가 있으며 병렬포트 (Palleral )가 있다 직렬 포트 - 8개의 비트가 하나씩 송수신된다. 느리며, 전송길이가 짧다.(케이블선) 병렬 포트 - 8개의 비트가 한번에 송수신 된다. 빠르며, 전송길이가 길다. 시리얼 포트는 9핀과 24핀짜리가 있는데 9핀은 1~9번 핀을 사용하며 24핀은 2~9번 핀을 사용한다. 나머지는 n/c 노캐리어로 사용 안하고 방치한다. 결국 같은 것이다. IO 포트 제어에는 어떤 다른 옵션적인 일을 하는것 없이 원초적으로 입력과 출력 함수만 제공된다. _oup, _inp 을 쓴다. 8255 이란? ------------------------------------------------------------------- IBM Intel 칩의 이름으로 이 칩이다. 다음 표는 8255에서 쓸수있는 포트 어드레스와 설명이다. 보아야할것은 포트 주소 3F8이 COM1 이라는 것이다. TABLE 2: EXPANSION SLOT ADDRESSES ADDRESS (HEX/DEC) DESCRIPTION ADDRESS (HEX/DEC) DESCRIPTION 218-21F (536-543) AVAILABLE 390-39F (906-927) AVAILABLE 250-277 (592-631) AVAILABLE 3AA-3AF (938-943) AVAILABLE 280-2EF (640-751) AVAILABLE 3B0-3BF (944-959) AVAILABLE 300-31F (768-799) AVAILABLE 3F8-3FF COM 1 포트 어드레스 값 ---------------------------------------------------------------- port address 3F8h = COM1 2F8h = COM2 3E8h = COM3 2E8h = COM4 For the standard PC ports, the UART registers are based at 3F8h (COM1), 2F8h (COM2), 3E8h (COM3), and 2E8h (COM4). COM1 and COM3 share interrupt request line IRQ4 while COM2 and COM4 share request line IRQ3. This means that COM1 and COM3 can't be used concurrently. Similarly for COM2 and COM4. VC의 경우 short _stdcall Out8255( int PortAddress, int PortData ) { short Dummy; // Need Dummy since _outp officially returns int // short is a 16-bit integer in Win32 C++ // whereas int is 32-bit integer Win32 C++ // use (short) to force returning 16-bit integer // back to VB Dummy = (short)(_outp( PortAddress, PortData )); return(Dummy); }; // end of Out8255 통신 방식상 ( RS232, RS485 이란 ) ----------------------------------------------------------------------- RS232는 편리하나 전송 길이가 3M 이내로 제한이 있다. 따라서 긴 케이블이 필요한 경우에는 485통신(1.5km까지)을 해야 한다. 아파트의 경우에는 485 통신으로 각 가정의 컴퓨터의 케이블을 연결하되, 컴퓨터 포트 접지 할때는 RS232로 컨버터를 붙여서 쓴다. RS485 통신 - Half-Duplex 반이중 통신 RS232 통신 - 전이중 통신 가볼만한 사이트 ----------------------------------------------------------------- IO 직접 제어관련 사이트 http://www.lvr.com/parport.htm#Programming IO 제어 Win9x/WinNT용 라이브러리 ftp://ftp.keithley.com/pub/metrabyte/unsupport/ 제어에 관한 프로그래밍 튜토리얼 http://www.boondog.com/ 8핀의 정보 ------------------------------------------------------------------ pin 정보 ( 9핀짜리라면 각 핀에 있는 선의 기능 ) 1 CD ( Carier Dectect ) 데이타 채널 수신 캐리어 검출 2 TD ( Transmit Data ) 송신 보내기 = TX 3 RD ( Receive Data ) 수신 받기 = RX 4 DTR( Data Terminal Ready ) - 터미날 장치 준비 5 SG ( Signal Group ) - 신호용 접지 = GRD 6 DSR ( Data Set Ready ) - 수신 준비 완료 7 RTS ( Request To Send ) - 송신 요구 8 CTS ( Clear To Send ) - 송신 가능 9 RI ( Ring Indicator ) - 피 호출 표시 1,2,6,8,9 [in]방향 3,4,7 [out] 방향 5 접지( Ground ) 흐름 제어 하드웨어 흐름제어 방식 ( RTS /DTS )를 쓴다. 소프트 웨어 흐름 제어 방식 ( XON/XOFF)를 쓴다. 도스에서는 포트를 직접 어드레싱을 할 수 있어서 그것으로 포트에 값을 넣고, 쓰고 했으나 Win에서는 윈도우 운영체제가 관장하게 된다. 따라서 아래의 포트로 도스처럼 직접 쓰고 싶을때에는 따로 http://www.lvr.com/parport.htm#Programming 에 가서 원하는 라이브러리 를 받아서 직접 포트 제어를 해서 쓸 수 있다. | ||||
|
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
|
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
|
| ||||||||||||||||
| ||||||||||||||||
|
| ||||
| ||||
일반 COM1, COM2, USB2Serial(USB1.1)에서는 잘 되는데... USB2Serial(USB2.0)에서는 잘 안되네요... 하는 문제점을 접하면서 몇년을 묵혀뒀던 시리얼 포트 코드를 다시 꺼내봐야 한다는 고통은 참 남다릅니다. 하이퍼 터미널은 되는데, 내가만든 시리얼 포트 프로그램에선 안되는 현상... 특히, 다 잘되는데 USB2.0지원 케이블 부터 안되는 현상... 이런 일이 닥쳤을 때, "하이퍼 터미널"로 열어본 다음 그 DCB를 확인하면 되겠지... 라고 생각하시겠지만 실제 하이퍼 터미널은 자기가 시리얼 포트를 열때 기존 값을 oldDCB로 백업해 놓구, 사용한 후 닫을 때는 다시 원래 값으로 복원시켜 놓기에 자칫 하이퍼 터미널이 설정한 값이 이 DCB구나 하고 오해하실 수 있습니다. 하이퍼 터미널로 열었을 때의 시리얼 핀의 사용상태를 직접 확인한 후 우리 프로그램에서도 그렇게 시리얼 핀의 사용상태를 만들어 주면 됩니다. 핀은 9핀 콘넥터라고 가정을 하고요... 5번 핀이 그라운드 입니다. 4번 핀과 5번 핀을 계측기로 찍었을 때 High Volt(+8V)인지 Low Volt(-8V)인지 확인하세요! 4번 핀이 +8V이면 dcb.fDtrControl 값을 DTR_CONTROL_ENABLE로 설정하세요! 7번 핀과 5번 핀을 계측기로 찍었을 때 High Volt(+8V)인지 Low Volt(-8V)인지 확인하세요! 7번 핀이 +8V이면 dcb.fRtsControl 값을 RTS_CONTROL_ENABLE로 설정하세요! (지적해주셔서 고맙습니다. 정정합니다. 그라운드 5번핀 ^^;) 그럼 수고들 하세요~! | ||||
|
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
|
| ||
| ||
제가 이번에 COM port 2개에 받은 데이터를 처리해야 되서 이쪽으로 심도 있게 공부하려고 좀 찾아봤는데 역시 MSDN 에서 나온 레퍼런스가 좋더군여.. 그래서 여기에 추천드립니다. 국내에서는 아마 번역본도 나왔을거 같습니다. The information in this article applies to: Microsoft C for MS-DOS, versions 6.0, 6.0a, and 6.0ax Microsoft C/C++ for MS-DOS, version 7.0 Microsoft Visual C++ for Windows, 16-bit edition, versions 1.0, 1.5 -------------------------------------------------------------------------------- The following books may be useful to programmers doing serial communications programming with Microsoft C and C++: TITLE Serial Communications in C and C++ (Includes Disk) AUTHOR Mark Goodwin PUBLISHER MIS Press ISBN 1-55828-203-3 TITLE C Programmer's Guide to Serial Communications AUTHOR Joe Campbell AUTHOR Howard W. Sams & Company ISBN 0-672-22584-0 TITLE Windows Programmer's Guide to Serial Communications (Includes Disk) AUTHOR Timothy S. Monk AUTHOR SAMS Publishing ISBN 0-672-30030-3 TITLE Mastering Serial Communications AUTHOR Peter Gofton AUTHOR Sybex ISBN 0-89588-180-2 TITLE Serial Communication: A C++ Developer's Guide AUTHOR Mark Nelson AUTHOR M & T Books ISBN 1-55851-281-0 |
'- 음악과 나 - > 『 짬 통 』' 카테고리의 다른 글
캐릭터 쩜프 (0) | 2006.05.17 |
---|---|
시리얼시리얼 소프트 (0) | 2006.05.17 |
시리얼 통신.. (0) | 2006.05.16 |
5월 16일 . 수업시간. (0) | 2006.05.16 |
5월 9일 겜 프로그래밍 시간 (0) | 2006.05.09 |