MID 프로필

javax.microedition.io
Interface CommConnection

All Superinterfaces:
Connection, InputConnection, OutputConnection, StreamConnection

public interface CommConnection
extends StreamConnection

이 인터페이스는 논리적 직렬 포트 연결을 정의합니다. "논리적" 직렬 포트는 바이트를 연속적으로 전송하는 논리적 연결로 정의됩니다. 논리적 직렬 포트는 기본 운영 체제 내에서 정의되며 물리적 RS-232 직렬 포트에 일치하지 않을 수도 있습니다. 예를 들어, IrDA IRCOMM 포트는 "논리적" 직렬 포트로 작동할 수 있도록 운영 체제 내에서 논리적 직렬 포트로 구성할 수 있습니다.

통신 포트는 명시적 포트 식별자와 내장된 구성 매개 변수가 각각 세미콜론(;)으로 구분된 일반 연결 프레임워크 문자열을 사용하여 액세스합니다.

특정 직렬 포트에 여러 응용 프로그램을 동시에 연결할 수는 없습니다. 연결이 이미 열려 있을 때 Connector.open()을 사용하여 직렬 포트를 열려고 시도하면 java.io.IOException이 발생합니다.

연결을 열 때는 유형과 매개 변수가 있는 URI를 사용합니다. RFC 2396에 정의된 체계는 다음과 같습니다.
comm:<port identifier>[<optional parameters>]

첫 번째 매개 변수는 논리적 장치 이름인 포트 식별자여야 합니다. 이러한 식별자는 장치별로 다른 경우가 많기 때문에 주의해서 사용해야 합니다.

특정 장치와 운영 체제에 유효한 식별자는 "microedition.commports" 키를 사용하여 System.getProperty() 메소드로 쿼리할 수 있습니다. comm: 접두어와 결합되어 직렬 포트 연결을 여는 데 사용할 수 있는 URL 문자열을 만드는 쉼표로 구분된 포트 목록이 반환됩니다(아래의 포트 이름 지정 규약 참조).

추가 매개 변수는 세미콜론(;)으로 구분해야 하며 문자열에 공백은 사용할 수 없습니다. 특정 선택 매개 변수가 특정 포트에 적합하지 않으면 이 매개 변수는 무시될 수도 있습니다. 포트 식별자에 세미콜론(;)을 사용해서는 안 됩니다.

유효한 매개 변수는 아래의 매개 변수 정의에 따라 정의됩니다. 유효하지 않거나 인식되지 않는 매개 변수를 사용하면 IllegalArgumentException이 발생합니다. 매개 변수 값이 장치에서 지원되면 이 값을 사용해야 합니다. 매개 변수 값이 지원되지 않으면 java.io.IOException이 발생합니다. baudrate 매개 변수를 요청하면 setBaudRate 메소드가 보 속도를 처리하는 것과 동일한 방식으로 처리됩니다. 예를 들어, 요청된 보 속도가 지원되지 않으면 시스템이 유효한 보 속도로 대체할 수 있으며 이 값은 getBaudRate 메소드로 검색할 수 있습니다.

선택 매개 변수

매개 변수 기본값 설명
baudrate platform dependent 포트 속도
bitsperchar 8 문자당 숫자 비트(7 또는 8)
stopbits 1 문자당 중지 비트 수(1 또는 2)
parity none 패리티는 odd, even 또는 none이 될 수 있습니다.
blocking on 이 매개 변수가 on이면 읽기 전에 버퍼가 가득찰 때까지 대기합니다.
autocts on 이 매개 변수가 on이면 쓰기 전에 CTS 행이 활성화될 때까지 대기합니다.
autorts on 이 매개 변수가 on이면 입력 버퍼가 가득차지 않은 경우 RTS 행을 활성화합니다. off이면 RTS 행이 항상 활성화됩니다.

Connector.open() 문자열의 BNF 형식

URI는 아래에 지정된 BNF 구문과 일치해야 합니다. URI가 이 구문에 일치하지 않으면 IllegalArgumentException이 발생합니다.

<comm_connection_string> ::= "comm:"<port_id>[<options_list>] ;
<port_id> ::= 영숫자 문자열
<options_list> ::= *(<baud_rate_string>| <bitsperchar>| <stopbits>| <parity>| <blocking>| <autocts>| <autorts>) ;
; 한 옵션이 옵션 목록의 이전 옵션과 중복되는 경우
; 해당 옵션이 이전 옵션을
; 무시합니다.
<baud_rate_string> ::= ";baudrate="<baud_rate> TR_
<baud_rate> ::= 숫자 문자열 TR_
<bitsperchar> ::= ";bitsperchar="<bit_value>
<bit_value> ::= "7" | "8"
<stopbits> ::= ";stopbits="<stop_value>
<stop_value> ::= "1" | "2"
<parity> ::= ";parity="<parity_value>
<parity_value> ::= "even" | "odd" | "none"
<blocking> ::= ";blocking="<on_off>
<autocts> ::= ";autocts="<on_off>
<autorts> ::= ";autorts="<on_off>
<on_off> ::= "on" | "off"

보안

직렬 포트에 대한 액세스는 권한 없는 데이터 전송이나 수신을 방지하기 위해 제한됩니다. 직렬 포트 연결에 적용되는 보안 모델은 구현 프로필에서 정의합니다. 보안 모델은 유효한 직렬 포트 연결 문자열을 사용한 Connector.open() 메소드 호출 시 적용될 수 있습니다. 프로필 권한 부여 체계를 통해 응용 프로그램에 직렬 포트에 대한 액세스 권한을 부여하지 않으면 Connector.open() 메소드에서 java.lang.SecurityException이 발생합니다. 보안 모델은 실행 중에, 특히 openInputStream(), openDataInputStream(), openOutputStream()openDataOutputStream() 메소드 호출 시 적용될 수도 있습니다.

아래 예에서는 CommConnection을 사용하여 샘플 루프백 프로그램에 액세스하는 방법을 보여 줍니다.

 CommConnection cc = (CommConnection)
            Connector.open("comm:com0;baudrate=19200");
 int baudrate = cc.getBaudRate();
 InputStream is  = cc.openInputStream();
 OutputStream os = cc.openOutputStream();
 int ch = 0;
 while(ch != 'Z') {
     os.write(ch);
     ch = is.read();
     ch++;
 }
 is.close();
 os.close();
 cc.close();

아래 예에서는 CommConnection을 사용하여 이용 가능한 통신 포트를 검색하는 방법을 보여 줍니다.

 String port1;
 String ports = System.getProperty("microedition.commports");
 int comma = ports.indexOf(',');
 if (comma > 0) {
     // Parse the first port from the available ports list.
     port1 = ports.substring(0, comma);
 } else {
     // Only one serial port available.
     port1 =ports;
 }

권장되는 포트 이름 지정 규약

논리적 포트 이름은 영숫자 문자의 조합을 사용하여 플랫폼 이름 지정 규약과 일치하도록 정의할 수 있습니다. 하지만 제안된 규약에 따라 이 클래스의 각 구현에서 일관성 있게 포트 이름을 지정하는 것이 좋습니다. 가상 머신 구현 시 다음 규약을 따라야 합니다.
포트 이름에는 포트 기능을 나타내는 텍스트 약어가 포함되며 그 뒤에는 포트의 일련 번호가 옵니다. 다음과 같은 장치 이름 유형을 사용해야 합니다.

이 이름 지정 체계에서는 API 사용자가 원하는 포트 유형을 결정할 수 있습니다. 예를 들어, 응용 프로그램이 데이터 조각을 "빔"하려는 경우에는 연결을 열 "IR#" 포트를 찾을 수 있습니다. 또는 사용 가능한 모든 포트를 시도해 볼 수도 있습니다.

Since:
MIDP 2.0

Method Summary
 int getBaudRate()
          직렬 포트 연결의 보 속도를 가져옵니다.
 int setBaudRate(int baudrate)
          직렬 포트 연결의 보 속도를 설정합니다.
 
Methods inherited from interface javax.microedition.io.InputConnection
openDataInputStream, openInputStream
 
Methods inherited from interface javax.microedition.io.Connection
close
 
Methods inherited from interface javax.microedition.io.OutputConnection
openDataOutputStream, openOutputStream
 

Method Detail

getBaudRate

public int getBaudRate()
직렬 포트 연결의 보 속도를 가져옵니다.

Returns:
연결의 보 속도
See Also:
setBaudRate(int)

setBaudRate

public int setBaudRate(int baudrate)
직렬 포트 연결의 보 속도를 설정합니다. 요청한 baudrate가 플랫폼에 지원되지 않으면 시스템이 유효한 설정으로 대체할 수도 있습니다. 대체 값은 getBaudRate 메소드로 액세스할 수 있습니다.

Parameters:
baudrate - 연결의 보 속도
Returns:
연결의 이전 보 속도
See Also:
getBaudRate()

MID 프로필

의견이나 제안 사항 보내기 MID 프로필 사양 버전 2.0
Java는 미국 및 다른 국가에서 Sun Microsystems, Inc.의 상표 또는 등록 상표입니다. Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. 모든 권리는 저작권자의 소유입니다.