2010-01-23 33 views
21

Tôi đang cố gắng viết một ứng dụng java truy cập các cổng USB để đọc và ghi vào một thiết bị được kết nối qua cổng USB. Vấn đề tôi phải đối mặt là tôi không biết chính xác những gì để sử dụng trong java để làm một điều như vậy. Tôi đã tìm kiếm trực tuyến và tìm thấy thứ có tên là JUSB nhưng tất cả các bài đăng có vẻ khá cũ.Cách truy cập cổng USB trong java

Hiện tại tôi đang sử dụng thư viện RXTX nhưng đôi khi tôi gặp phải một số lỗi đồng bộ hóa. Khi tôi sử dụng C# để làm tương đương nó yêu cầu mã ít hơn và tôi không phải đối mặt với bất kỳ lỗi đồng bộ giống nhau.

Câu hỏi của tôi là, là có bất cứ điều gì được xây dựng vào phiên bản mới nhất của JRE tôi có thể sử dụng để truy cập vào cổng usb (đó chỉ là dễ dàng như mã # tương đương C)?

Trả lời

11

Không có gì tương đương với hỗ trợ USB của C# trong Java. Cả jUSB và Java-USB đều bị lỗi thời và có thể không sử dụng được cho bất kỳ sự phát triển ứng dụng nghiêm túc nào.

Nếu bạn muốn triển khai ứng dụng USB đa nền tảng, thực sự tốt nhất là viết một giao diện trừu tượng JNI nói chuyện với Linux, Mac và Windows thư viện gốc mà bạn sẽ phải tự viết. Tôi muốn xem LibUSB để xử lý Mac và Linux. Windows, như bạn đã thấy, khá đơn giản. Tôi vừa ra mắt một dự án kéo dài một năm đã làm được điều này, và tiếc là đây là giải pháp đa nền tảng nghiêm túc duy nhất. Nếu bạn không phải thực hiện trên Windows và nhu cầu của bạn bị hạn chế, bạn có thể nhận được bằng một trong các thư viện Java cũ hơn (jUSB hoặc Java-USB). Bất cứ điều gì cần triển khai trên Win32/Win64 sẽ cần một thành phần gốc.

2

Java Communications API. Điều này sẽ cung cấp chức năng tương tự cho không gian tên C# System.IO.Ports.

+1

System.IO.Ports dành cho giao tiếp nối tiếp trừ khi OP ngụ ý một giao diện nối tiếp với usb ?! – t0mm13b

+0

Đồng ý - System.IO.Ports không có giao diện USB, chỉ dành cho Cổng Com. –

+0

Nếu bạn đang sử dụng thiết bị USB trên cổng COM thì bạn có thể sử dụng System.IO.Ports. –

4

Xem thư viện jUSB hoặc usb4java.

+5

Java-USB chỉ là Linux.Nếu đó là tất cả những gì bạn cần, nó có thể hoạt động, mặc dù nó dường như không được cập nhật trong một thời gian. –

5

Bạn có thể muốn xem usb4java - http://usb4java.org/index.html dường như hỗ trợ Windows, Linux và Mac OS và có vẻ hợp lý hiện tại tại thời điểm đăng bài. Thật không may theo LGPL vì vậy có thể không phù hợp cho phát triển thương mại.

+2

Việc liên kết với thư viện LGPL không phải là vấn đề, nếu bạn chỉ sử dụng API của họ trong mã của bạn (và bạn có giấy phép không phải LGPL). Thư viện được cấp phép GPL là giấy phép copyleft, buộc giấy phép mã của bạn cũng phải là giấy phép GPL, bất kể bạn đã sử dụng giấy phép nào. – Joseph

18

Được sử dụng usb4java trong một năm trên platfom chéo (Linux và Windows) và nó hoạt động tuyệt vời.

Xem:

http://usb4java.org/

Họ rất năng động và có một rất tốt trước javax USB.

Các vấn đề liên quan