Java nổi tiếng với hỗ trợ I/O nối tiếp không ổn định của nó. Tại một công việc trước đó, chúng tôi đã thử cả RXTX và SerialIO cho một ứng dụng truyền dữ liệu ở tốc độ 56kbps từ bộ điều khiển servo Teknic, và tìm thấy chúng để tăng tốc CPU một chút. Có lẽ đối với các ứng dụng không yêu cầu truyền trực tiếp từ một cổng nối tiếp, cả hai thư viện này đều tốt, nhưng chúng tôi không cảm thấy rằng luồng I/O từ cổng nối tiếp nên ăn 15-30% CPU liên tục máy khi cần thiết cho các chủ đề khác trong JVM cần đáp ứng. Thay vào đó, chúng tôi tạo ra một máy chủ trong C++ mà sẽ đọc dòng dữ liệu từ cổng nối tiếp trên servo, chuyển đổi/đóng gói nó và gửi nó đến ứng dụng Java của chúng tôi trong XML qua kết nối socket. Tải CPU trên máy chủ I/O nối tiếp trong C++? Barely leo xuống 1% tại tồi tệ nhất của nó.
Có những điều nhất định Java làm tốt - nối tiếp I/O, theo ý kiến của tôi, không phải là một trong số họ, tùy thuộc vào loại ứng dụng ...
Cuối cùng, bạn nên tham gia thậm chí những gì tôi nói với một hạt muối, và thử cả hai, RXTX và SerialIO (mà là rẻ tiền, như $ 50 hoặc hơn cho phiên bản java) và nếu họ đáp ứng nhu cầu của bạn, đi với nó. Cá nhân, tôi muốn gắn bó với SerialIO vì nó được hỗ trợ và tích cực làm việc. RXTX, không nhiều lắm.
Nguồn
2012-02-10 18:52:07
Cảm ơn Murat, tôi sẽ xem xét nó. – Steve
Chất lượng của mã RXTX khá kém. Hãy chuẩn bị để nhảy qua các vòng khác nhau nếu bạn đi xuống con đường này. – Gili
nó không phải là xấu cho những điều đơn giản nhất.Tôi đang gặp sự cố trên cổng kết nối USB trong các trường hợp bất thường (ví dụ: USB được cắm vào/rút phích cắm khi chạy). –