2012-11-05 2 views
0

최근에 USB 바코드 스캐너를 구입했습니다. 요건이와 RS-232C 인터페이스를 이용하여 스캔 한 바코드를 수신 아니라자바를 사용하는 RS-232C 장치의 데이터 수신

  1. RS-232C
  2. USB
  3. 완드 에뮬레이션

: 그것은 3 가지 인터페이스 선택 옵션을 자바 (Rxtx API)의 도움. 내가 아는 한 RXTX에서 장치와의 상호 작용을 시작하기 위해 COM 포트가 필요합니다.

그러나 RS-232C 인터페이스에서 사용하는 동안 COM 포트를 찾을 수없는 문제가 있습니다. .

RS-232C 포트를 통신하는 동안 누락 된 것이 있습니까? 어떻게 포트 번호를 찾을 수 있습니까?

도와주세요.

업데이트 : 거기, 내 바코드 스캐너를 연결할 때 스캐너를 제거 : 나는 아래의 코드를 사용하여 모든 시리얼 포트 내 시스템을 스캔 제안으로 주목

import jssc.SerialPortList; 

public class Main { 

public static void main(String[] args) { 
    String[] portNames = SerialPortList.getPortNames(); 
    for(int i = 0; i < portNames.length; i++){ 
     System.out.println(portNames[i]); 
    } 
} 
} 

한 가지 (JSSC 사용) 위의 코드에서 얻은 포트 목록에는 아무런 변화가 없습니다.

출력 : COM3 COM11 COM18 COM32 COM33 COM34 COM35 COM36 COM37 COM38 COM39 COM40 COM42 COM45 COM52 COM53 COM59 COM60 COM61 ​​ COM62 COM63

출력 후 위의 각 포트를 하나씩 다음 코드를 사용하여 수신하려고 시도했습니다.

import jssc.SerialPort; import jssc.SerialPortException;

공용 클래스 홈페이지 {

public static void main(String[] args) { 
    SerialPort serialPort = new SerialPort("COM63"); //manually setting all the ports above one by one 
    try { 
     serialPort.openPort();//Open serial port 
     byte[] buffer = serialPort.readBytes(10); 
     System.out.println(buffer.toString()); 
     serialPort.closePort();//Close serial port 
    } 
    catch (SerialPortException ex) { 
     System.out.println(ex); 
    } 
} 
} 

내가 가지고 두 포트가 사용 중이거나 더 출력에 StackOverflow에 다른 곳에 게시

답변

0

Here's a solution (한편으로는 내 바코드 스캐너를 사용하여 스캔에 보관하지 않음). 기본적으로 OS에서 사용 가능한 콤보를 순환시키고 원하는 것을 선택/표시/선택해야합니다. 문제가있는 경우 검토 할 코드를 게시하십시오.

+0

질문을 업데이트했습니다. – Deepak

+0

잘 보니 코드가 jSSC 문서를 검토하는 것이 좋습니다. 거꾸로 조금 노력합시다. 바코드 스캐너를 PC에 연결하면 장치 관리자에서 사용중인 COM 포트를 감지 할 수 있습니까? Windows/Linux/Mac에 있습니까? 현재 연결 한 바코드 스캐너는 OS에서 키보드 장치로 인식되며 직렬 장치로 인식되지 않습니다. – Grambot

+0

Windows를 사용하고 있습니다. 그렇습니다. 내 컴퓨터에서 바코드 스캐너가 기본 인터페이스로 인식됩니다. 그러나 RS-232C로 인터페이스를 설정하고 싶습니다. (다행히도 내 장치는이 인터페이스로 전환 할 수 있습니다). 그걸 사용하여 일부 Java 응용 프로그램을 개발할 수 있습니다. 그리고 인터페이스를 전환하면 장치 관리자가 키보드 또는 COM 섹션 아래에 표시하지 않습니다. – Deepak

0

저는이 API에 익숙하지 않지만 COM 포트의 전기적인 끝 부분을 잘 알고 있습니다. USB 포트와 달리 장치가 연결되었는지 여부를 나타내는 자동 "핸드 셰이크"가 없습니다. 그러나 인터페이스에는 몇 가지 상태 표시 줄이 있습니다.

TD/RD 신호 (전송 된 데이터/수신 된 데이터) 외에도 RTS/CTS - 전송 요청 및 전송 지우기가 있습니다. RTS와 CTS는 아무 것도 연결되어 있지 않을 때 "준비가 안되"상태가되는 정도입니다.

일반적인 프로토콜은 장치가 RTS를 설정 한 다음 다른 쪽에서 CTS를 반환하여 모든 준비가 완료되었음을 나타냅니다. 그러나 이것은 컴퓨터가 "장치"또는 "모뎀"(RS-232가 알고있는 유일한 두 가지)으로 나타날 수 있다는 사실 때문에 모두 복잡합니다. 결과적으로 두 부분의 가정 된 모드에 따라 여러 핀 및 신호 구성을 가질 수 있습니다. (운이 좋으면 스캐너 문서에서이 부분을 설명합니다.)

더 복잡한 것은 DSR/DTR 신호 (데이터 세트 (모뎀) 준비 및 데이터 터미널 준비)가 있다는 것입니다. 대부분의 PC 구성에서는 무시되지만 항상 그런 것은 아닙니다.

스캐닝을 곧 할 수없는 경우 pinouts을보고 전압계와 일부 점퍼를 사용하여 스캐너를 찾을 수있는 상태로 물리적 포트를 설정할 수 있습니다. 그런 다음 상태 신호를 설정하여 스캐너가 대화 할 수있는 방법을 결정하기위한 추가 실험이 수행됩니다.

+0

RS 포트가 작동하고 있다는 것을 알고 있기 때문에 사용자는 절대적으로 정확합니다. 내 바코드 스캐너는 실제 RS-232C 플러그가없는 USB 기반 장치입니다. 것은 제조 업체가 소프트웨어 수준에서 인터페이스 스위칭 기능을 제공하여 USB가 RS232로 작동 할 수 있도록합니다. 그러나 문제는 RS232 장치가 특정 포트를 사용하고 있다는 것을 식별 할 수있는 방법입니다. 그 이후에만 해당 장치에 RTS 또는 CTS 명령을 보낼 수 있습니다. (잘못된 경우 수정하십시오.) – Deepak

+0

@Deepak - 네, 낡은 바위/어려운 장소 일 것. 한 가지 생각 : 장치 관리자를 사용하여 연결된 USB 장치를 표시 했습니까? 한 번에 COM 포트가 사용되는 것을 알려주지 만 최신 버전의 Windows에 대해서는 알지 못합니다. –

+0

예. "프로그래밍 방식으로 시스템에있는 모든 직렬 포트를 가지고 있는데 스캐너를 꽂거나 뺄 때 직렬 포트에 아무런 변화가 없습니다"라는 질문을 업데이트했습니다. – Deepak