COM
, , , , , " . , . - (serial ports) .
, . , . ֳ Serial Interface Serial Port. , .
(, ) ' ', . : , , . - , ' '. - .
IRQ4 ( COM1 COM3) IRQ3 ( COM2 COM4). , IRQ11 ( IRQ4) IRQ10 ( IRQ3). , ( ) .
, ISA, , , .
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
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
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
USB , . USB , . ' , . ( ) USB , ' . USB- USB-. - USB-, . USB- , '. ' USB-, USB- . - ( ), USB- . USB - ' , .
USB - ' ', , Ethernet- .
USB . (endpoint) . . . ʳ , , , 4 - (bulk), (control), (isoch) (interrupt). , , , .
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
|
|
- . - 0, , , , .
, , /, - N . , ( / / ).
/ , N (1 low full speed, 8 high speed). - .
, ( ), . , , .
, . , , , .
, , ( ). , DMA DMA-, .
( ). ³ , U
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
, -, USB Firewire. -: 1 璺, C2
-, , : , , ( ). -, (. 1.3). - - -, . -, ( 0), . , , . , -. , , . , . , 8 , - , , 5%. ( ) , . ( ), ' , ,
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
|
|
. 1.3.
:
, , - , - . .
, -, , - ( ).
, ( -) . . .
: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800,
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
'. , . , . , , . , , , , .
- (. 1.4). , .
. 1.4 -
, :
1. DTR ' .
2. DSR '.
3. RTS ' .
4. CTS
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
|
|
5. CTS (, ) ' .
6. ³ CTS ' ( ' ).
7. RTS ' ( '), . '.
8. RTS CTS.
9. ' RTS .
10. .
11. ' .
12. .
13. ' DTR, ' ( ).
14. DSR '.
, (, NRZ), . - ', ( , , ). PC SDLC,
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
USB Intel, Microsoft, Philips, US Robotics. USB ' . :
'. ' (. legacy) (PS/2, , , , SCSI), '.
ϳ ' . , ' , .
. (, (COM) (LPT) ) , Plug and Play. 䳿 ' - , , , .
ϳ USB Windows 95, Windows 98. USB , Useless s
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
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- ,
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
: -, -, . : , -, -.
: 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) , . .
X
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
. 1.5 XON/XOFF
, , 3 . , ( - XON), . , , ( ) , .
- Int 14h BIOS, :
1) ( , AL; ). DTR RTS ( );
2) -. DTR RTS;
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
3) . 2400 /, 7 (even), 1 -.
璺
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
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 /. , .
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
2
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
/, - (. I/O, input/output) (, ') , , - . , , , ( ). ( ) 䳿: / . - ( ) 䳿 '. , ' , ' . 䳿 ', , .
, . , - ( , 䳿 ), , '. '. , , '. , . - .
' ' ' ( ', ) ', , - ', , , -. - ', .
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
, -. , . C++, Unix, , , . .
- . , .
(, , ), - .
, () .
( ).
', - ', ', , ' '.
- , , , , .
.
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
, .
- . , . , . , . -, , , . , .
- () () . - - , . , - - READ , . - , .
, , - . - , . - , , . .
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
- (. 2.1):
,
,
,
.
. 2.1. - -
- , , ' . , -, . , , count = write (fd, buffer, nbytes), write ' . -. , . printf , , , , ASCII write
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
- (spooling). - . , - . , ' , , . - , . , . , , . - , .
8- / . , ' /, :
' , , '. RS-232C RS-485;
' , . I2C, SPI, ;
' . ' I2C, RS-232C RS-485 . CAN.
' ( ), ( ) ( ).
ʳ , , (I2C, RS-232C, RS-485) (SPI, ). , . ( ) ,
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
, 8- , "-" - UART (Universal Asynchronous Receiver and Transmitter). UART - . UART, , .
UART . , Motorola , , UART, SCI (Serial Communication Interface). , SCI , UART. : ' SCI 6870516 - .
UART RS-232C, RS-422, RS-485, - , - SPI. Motorola : SCI RS-232C, RS-422A, RS-485 SPI.
(I2C CAN) . CAN . I2C , , ( 8952 Philips). I2C, PIC16 Microchip SPI: .
' CAN USB (Universal Serial Bus).
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
3 ++. .
3.1 Borland C++
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
, ++ , , , . . Borland ++ , , , . / * : /* */, / // . ϳ ;.
. ϳ , # include (). h <_> "_" - : #include <windows.h>. main, , . main , main, : int main(). , , , , , , -
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
++ , return _, _ - ( 䒺 0), , . main int void.
(. stream) , , . Unix , C++, , .
, , ' . . C++ iostream . . , . , ' , , ( , ) . , , - ( ) , . Scheme , . , , . . - , ,
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
, 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 $). , ,
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
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 ().
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
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);
- .
. , . : , . , .
, 3.1.
. |
. |
. |
ϳ |
. |
08-23-.010.00.000 |
. 3.1 ³
1) __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) { }.
2) 2,3,4,5,6,7 void __fastcall TForm1::Button N Click(TObject *Sender) N .
COM-. 4, . ϳ 5. ϳ , . 3.1.
. 3.1 COM-
-. 1, (. 3.1 2, . 3.2, 3.6) . , (. 3.5) .
. 3.2 -
, -. , (. 3.1 3, . 3.7), . , (. 3.5) . (. 3.3, 3._).
. 3.3 -
. |
. |
. |
ϳ |