USB COM
COM
, , , , , " . , . - (serial ports) .
, . , . ֳ Serial Interface Serial Port. , .
(, ) ' ', . : , , . - , ' '. - .
IRQ4 ( COM1 COM3) IRQ3 ( COM2 COM4). , IRQ11 ( IRQ4) IRQ10 ( IRQ3). , ( ) .
, ISA, , , . : RS-232C, RS-423A, RS-422A RS-485. PC RS-232C. RS-485, RS-422A, .
RS-232C , ( ), (). ', , . ֳ DTE Data Terminal Equipment. , D Data Communication Equipment. ʳ ' DTE, ' . 1.1. ' DTE (), ' - (. 1.2).
. 1.1. ' RS-232C
. 1.2. ' RS-232C -
, , '. , OM- .
|
|
- , ' , ' , , Rs-232c. - , 3 - 4 - .
- (, ). . Serial Mouse - . (9-) -. ' ', , ' - - . - (security devices), . ֳ , , .
USB
USB (Universal Serial Bus - . " ") - . USB ( 2.0 ) 4 - 2 2 - .
USB , . USB , . ' , . ( ) USB , ' . USB- USB-. - USB-, . USB- , '. ' USB-, USB- . - ( ), USB- . USB - ' , .
USB - ' ', , Ethernet- .
USB . (endpoint) . . . ʳ , , , 4 - (bulk), (control), (isoch) (interrupt). , , , .
|
|
- . - 0, , , , .
, , /, - N . , ( / / ).
/ , N (1 low full speed, 8 high speed). - .
, ( ), . , , .
, . , , , .
, , ( ). , DMA DMA-, .
( ). ³ , USB.
, -, USB Firewire. -: 1 璺, C2
-, , : , , ( ). -, (. 1.3). - - -, . -, ( 0), . , , . , -. , , . , . , 8 , - , , 5%. ( ) , . ( ), ' , , . , , , . .
|
|
. 1.3.
:
, , - , - . .
, -, , - ( ).
, ( -) . . .
: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 115200 /. ʳ 5, 6, 7 8 (5- 6- ). ʳ - 1, 1,5 2. PC OM- RS-232C.
'. , . , . , , . , , , , .
- (. 1.4). , .
. 1.4 -
, :
1. DTR ' .
2. DSR '.
3. RTS ' .
4. CTS ' .
5. CTS (, ) ' .
6. ³ CTS ' ( ' ).
7. RTS ' ( '), . '.
8. RTS CTS.
9. ' RTS .
10. .
11. ' .
12. .
|
|
13. ' DTR, ' ( ).
14. DSR '.
, (, NRZ), . - ', ( , , ). PC SDLC, . ' (mainframes) IBM ( ). V.35.
USB Intel, Microsoft, Philips, US Robotics. USB ' . :
'. ' (. legacy) (PS/2, , , , SCSI), '.
ϳ ' . , ' , .
. (, (COM) (LPT) ) , Plug and Play. 䳿 ' - , , , .
ϳ USB Windows 95, Windows 98. USB , Useless serial bus - . , USB, 2000 .
Hewlett-Packard, Intel, Lucent ( Alcatel-Lucent), Microsoft, NEC Philips USB. USB 2.0 2000 , 2001 USB Implementers Forum. USB 2.0 USB.
, 2000- Apple FireWire, . iPod FireWire, USB . FireWire USB, FireWire . , , 90- , USB.
2000- BIOS' ' USB ( USB 90-). -, , , PS/2-. 20 USB - . COM LPT , ' ' COM- .
USB - , USB 2.0 - , . , 2008 . 4 , 5 . USB 3.0 2010 . 2012 USB 3.0 , ' . USB- , USB 3.0. , USB 3.0 '.
: -, -, . : , -, -.
: 50, 75, 100, 150, 300, 600, 1200, 2400, 4800, 9600, 19 200, 38 400, 57 600 115 200 /. / (baud), , - . , ( ) ' ( ) () .
|
|
ʳ 5, 6, 7 8 (5- 6- ). ʳ - 1, 1,5 2 ( ).
- (-): , , (). ( -) - , , .
(flow control) RTS/CTS XON/XOFF. . (handshaking) , . .
XON/XOFF (. 1.5) . : , , , , -. , , . , , .
. 1.5 XON/XOFF
, , 3 . , ( - XON), . , , ( ) , .
- Int 14h BIOS, :
1) ( , AL; ). DTR RTS ( );
2) -. DTR RTS;
3) . 2400 /, 7 (even), 1 -.
璺 , Intel, USB Intel 440FX Pentium Pro Pentium II. USB Microsoft Windows 95 Windows NT 4.0. USB . .
USB 1.0 12 / . USB , , , 1998 Universal Serial Bus. 1.1 , , . USB 1.1 . 1,5 / 12 / .
ij USB 2000 High-Speed USB 2.0. 40 - 480 / . USB. 璺 璺 USB 2.0.
, USB 2.0, 2002 , . 480 / , : -, , MP 3-, .
ҳ USB 2.0 . 璺 , 璺 .
/ , USB 2.0, . SuperSpeed USB 3.0, USB .
2008 USB Implementers Forum USB 3.0. . USB 3.0. 5 / 500 /. , .
2.1 Borland C++
Borland C++, . , .
, ++ , , , . . Borland ++ , , , . / * : /* */, / // . ϳ ;.
. ϳ , # include (). h <_> "_" - : #include <windows.h>. main, , . main , main, : int main(). , , , , , , -, . ҳ , , main , . , , : { , }.
++ , return _, _ - ( 䒺 0), , . main int void.
(. stream) , , . Unix , C++, , .
, , ' . . C++ iostream . . , . , ' , , ( , ) . , , - ( ) , . Scheme , . , , . . - , , , . - , , .
, COM-, MS DOS . Win32 . . , Windows , (i8055, 16450, 16550A) .
Win32 . CreateFile. Win32 API. :
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDistribution,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
CreateFile , , , (CONIN $ CONOUT $), , , . , '. CreateFile (CONIN $). , , (CONOUT $). AllocConsole.
COM-:
#include <windows.h>
//...
HANDLE Port;
Port = CreateFile("\\\\.\\COM2", GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, 0, NULL);
if (Port == INVALID_HANDLE_VALUE) {
MessageBox(NULL, " ", "Error", MB_OK);
ExitProcess(1);
}
//...
CloseHandle(Port);
//...
2 , . , . , .
. , , . , :
CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, 0, NULL);
dwFlagsAndAttributes 0. ϳ , ReadFile () WriteFile ().
HANDLE port = CreateFile("COM1", GENERIC_READ |
GENERIC_WRITE, 0, NULL,OPEN_EXISTING, 0, NULL);
unsigned char dst[1024] = {0};
unsigned long size = sizeof(dst);
if(port!= INVALID_HANDLE_VALUE)
if(ReadFile(port,dst,size, &size,0))
printf("\nRead %d bytes",size);
, ReadFile (), . , . . CreateFile () dwFlagsAndAttributes FILE_FLAG_OVERLAPPED.
CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);