2009-07-10 4 views
0

나사로/델파이에서 액세스해야하는 USB 카드 리더기가 있습니다.USB 포트의 시리얼 포트 용으로 작성된 코드 사용

SDK는 VB6로 작성되었으며 시리얼 포트와 통신하므로 Windows에서 USB 포트를 직렬 포트에 매핑하는 드라이버를 설치합니다.

나는 그 단계를 건너 뛰고 싶다. (예를 들어, 리눅스에서 같은 코드가 작동하도록), 나는 USB 프로토콜에 익숙하지 않다. 그래서 직렬 데이터와 어떻게 매핑되는지 모른다.

VB6 코드는 각 문자를 개별적으로 (직렬이라고도 함) 전송하지만 USB 인터페이스는 데이터 스트림을 보낼 수 있습니다.

여전히 바이트 단위로 보내야합니까, 아니면 명령을 연결하여 한 번에 보내야합니까? 어쨌든 개념이 완전히 다른가요?

답변

1

USB 장치가 CDC이면 Linux는이를 자동으로 직렬 통신 장치로 감지합니다.

이 경우/dev/ttyACM0 (또는 무엇이든)을 열어 읽고 쓸 수 있습니다.

어떤 방법으로 : USB 장치가 Linux에서 직렬 통신 장치로 감지되면/dev /을 통해 열어서 직렬 장치처럼 처리하십시오 (단, 구성에 대해 걱정할 필요는 없음). 전송 속도).

그리고 Delphi 코드가 "한 번에 하나의 문자"로 데이터를 직렬 장치에 보내야하는 이유가 없습니다. 전체 패킷도 Delphi에서 작성할 수 있어야합니다. 그게 제가 시리얼 포트를 통해 PTZ (Pan-tilt-zoom) dome cameras을 제어했을 때했던 것입니다.

Linux에서 장치가 직렬 포트로 감지되지 않으면 설치된/dev/장치를 열고 표준 파일 I/O (read()/write()를 사용하여 장치에 액세스 할 수 있습니다.). 다시 한 번 전체 명령을 작성하십시오.

1

USB 프로토콜은 직렬 포트와 완전히 다릅니다. Linux에 적합한 USB 직렬 드라이버를 설치하고 동일한 직렬 프로토콜을 사용하는 것이 가장 쉬운 방법이라고 생각됩니다. 장치와 함께 작동하는 드라이버가 이미있을 가능성이 있습니다.

+0

나는 프로토콜이 완전히 다를 것이라고 추측했지만, 하드웨어 어댑터가 있기 때문에 결국 너무 다른 것은 아닐 것이라고 생각했다. Linux 드라이버를 찾겠지 만 Windows에 다른 드라이버를 작성해야하므로 최적의 솔루션이 아닙니다. 어쨌든, 이미 답장을 보내 주셔서 감사합니다. 아직 내가 원하는 답변은 아니지만. :) – lyle