2012-01-17 3 views
1

소프트웨어 및 USB 하드웨어를 어떻게 만들 수 있는지 파악하려고합니다.0과 1을 USB 데이터 핀에 보냅니 까?

이제 하드웨어를 정리해 보겠습니다. 소프트웨어의 경우 USB 포트로 데이터를 보내려면 어떻게해야합니까?

C++/Java 또는 다른 언어 (Linux에서 작업하는 것을 선호 함).

+0

[libusb] (http://www.libusb.org/)를 사용하는 것이 좋습니다. –

+0

하드웨어를 먼저 생각해야한다고 생각합니다. 데이터를 전송하는 방법에 따라 하드웨어가 달라지기 때문입니다. 예를 들어, 하드웨어가 직렬 포트를 에뮬레이션하면 하드웨어는 OS에 의해 직렬 포트로 인식되어 PC에서 표준 직렬 통신을 사용할 수 있습니다. 하드웨어가 단지 '보통'USB이면 libusb를 사용할 수 있습니다. – rve

답변

3

USB 포트는 "멍청한"RS-232 직렬 포트와 같지 않습니다. 이 버스는 호스트 (컴퓨터)에 의해 구동되는 매우 복잡한 처리가 필요합니다. "1과 0"을 데이터 핀에 보내는 것과 같은 매우 낮은 수준의 연산은 다소 불가능합니다.

리눅스의 사용자 공간에서 USB를 프로그래밍하는 가장 쉬운 방법은 libusb을 사용하는 것입니다.

클라이언트 (사용자 정의 USB 하드웨어)가 끝나면 내장 USB 컨트롤러가있는 시스템이나 소프트웨어 스택을 찾습니다. 필자는 자신의 소프트웨어 스택을 작성하는 것이 실현 가능하다고 생각하지 않습니다. 그 이유는 당신이 (공격적이지 않은) USB에 대한 당신의 지식과 관련하여 그 수준에있는 것처럼 보이지 않기 때문입니다.

V-USB은 Atmel의 AVR 마이크로 컨트롤러 용 소프트웨어 USB 스택입니다.

-1

USB 포트는 단지 직렬 포트입니다. 따라서 가장 먼저보고 싶은 곳은 직렬 포트 통신을 처리 할 수있는 소프트웨어를 작성하는 것입니다.

OS는 연결될 때마다 다른 포트 번호를 장치에 할당 할 수 있습니다.

+0

리눅스에서는 고정 장치 이름, 포트 번호 등을 지정하는 두 개의'udev' 규칙을 통해 처리 할 수 ​​있습니다. – arne

+1

"USB 포트는 단지 직렬 포트입니다." 오류 없습니다. 이름에 일련 번호가있을 수 있지만 USB를 통해 데이터를 전송하는 데 관련된 프로토콜은 RS-232 포트를 통해 원시 비트를 보내는 것보다 훨씬 복잡합니다. – adelphus

+0

아 - 직렬 변환기에 USB를 사용했던 시대를 혼란스럽게 만들었습니다. 나는 프로토콜 처리가 USB 장치를위한 드라이버에 의해 수행되었다고 추측한다. – ChrisBD

1

다른 사람들은 USB 장치 용 드라이버를 작성해야한다고 지적한 바 있습니다.

또 다른 옵션은 USB를 통한 직렬 프로토콜을 사용하여 장치와 통신하는 것입니다. 그러면 하드웨어에 USB 대 직렬 칩이 필요합니다. 시리얼 이상의 USB에 관한 가장 좋은 대답은 How to get C++ to perform I/O from a USB Port like a Serial Port Mike DeSimone 필자 소개

1

USB를 사용하여 I/O를 bitbang하려면 FT232와 같은 FTDI 칩을 연결할 수 있습니다 (많은 USB- 직렬 케이블에 사용됨).)를 USB 포트에 연결하십시오. PC에서는 libFTDI을 사용하여 FTDI 칩의 I/O 핀을 비트 밴딩 할 수 있습니다.

이것이 USB를 사용하여 I/O 핀을 제어하는 ​​가장 쉬운 방법이라고 생각합니다.

+0

FT232R 칩 비트 뱅킹 모드는 Windows 또는 Linux에서 8 IO를 제어하는 ​​가장 쉽고 실용적인 방법입니다. FT232R 브레이크 아웃 보드를 10 달러에 구입할 수 있습니다. 이베이 (ebay)에서 7 달러 미만의 가짜 제품을 구입하지 마십시오. Nusbio 라이브러리는 .C# 및 VB.NET을 지원합니다. https://github.com/madeintheusb/Nusbio.Samples –

1

직렬 포트 에뮬레이션의 대안은 USB HID (휴먼 입력 장치)이며, Linux에서 즉시 지원됩니다. "HIDAPI"를 사용하여 장치와 통신하십시오.

관련 문제