2015-11-16 20 views
5

Trên các cửa sổ, có một số lựa chọn thay thế phong nha (chủ yếu là trả tiền) cho phép bạn giám sát truyền thông cổng nối tiếp. Trên OSX có rất nhiều ứng dụng đầu cuối cho phép bạn nói chuyện với các thiết bị nối tiếp nhưng tôi không tìm thấy cơ chế để giám sát giao tiếp cổng nối tiếp.để xem thông tin liên lạc nối tiếp USB trên osx

Các trường hợp sử dụng cụ thể là: Tôi có một thiết bị USB-Serial sống trên /dev/tty.usbmodem99999

Tôi đã viết một bài kiểm tra tích hợp chạy nhiều lệnh (thành công).

Tuy nhiên khi chạy lại lệnh, thiết bị sẽ không phản hồi. Tôi đã xác nhận (cũng như tôi có thể) rằng thiết bị là tốt. Nó hoạt động trên các nền tảng khác như mong đợi. Tuy nhiên trên OSX tôi chỉ có thể chạy lại các thử nghiệm sau khi thiết lập lại thiết bị (chu trình nguồn).

Lý thuyết của tôi là mã của tôi không phát hành thiết bị đúng cách nhưng thật khó để xác nhận khi tôi không thể thấy liên lạc giữa thiết bị và ứng dụng của tôi.

Ứng dụng này: "http://www.aggsoft.com/serial-port-monitor.htm" có tính năng 'gián điệp' mà tôi không thể tìm thấy chức năng tương tự trên OSX. Tôi đã thử nghiệm với 'công cụ nối tiếp' trên osx, nhưng nó không giống như nó hoạt động gián điệp trên một cổng duy nhất, trong trường hợp đó có vẻ như trường hợp sử dụng là một passthrough giữa hai thiết bị hơn là giám sát tại cảng .

Bất kỳ suy nghĩ nào được đánh giá cao.

thư viện nối tiếp được sử dụng là: https://github.com/jacobsa/go-serial

+1

gì về [USB tracer] (http://stackoverflow.com/a/32468703/1643939)? – nemo

+0

@gbulmer Đó là một thực thi. và sử dụng thư viện nối tiếp golang. Nhưng quyền của bạn, nó chắc chắn không rõ ràng, tôi đã chỉnh sửa để hiển thị thư viện nối tiếp mà tôi đang sử dụng. – Gary

+0

@ nemo Tôi đã thử điều đó, tôi không thấy gì từ công cụ đó. Tôi sẽ thử lại, có thể là tôi lạm dụng nó. – Gary

Trả lời

4

Bạn đã sử dụng DTrace?

Tôi đã sử dụng công cụ này để theo dõi các kết nối USB giữa bộ chuyển đổi USB/FTDI nối tiếp và ứng dụng 'Hộp đen' của bên thứ 3. Vì vậy, tôi có thể nhận được tại mọi thứ rằng ứng dụng được gửi đến cổng nối tiếp USB.

Điều đó khá đơn giản vì tôi biết tên của ứng dụng, vì vậy DTrace có thể quan sát điều đó. Tôi đã viết kịch bản DTrace để quan sát các bộ mô tả tệp mà ứng dụng đã mở, (tìm kiếm '/dev/tty.usbmodem ...') sau đó quan sát tương tác với bộ mô tả tệp đó.

Tôi chưa quan sát thấy trình điều khiển thiết bị. Về nguyên tắc, DTrace có thể làm điều đó nếu trình điều khiển hạt nhân hoặc thiết bị được biên dịch để làm việc với DTrace, mặc dù không có sự chắc chắn là nó. Apple cũng có thể xây dựng mã 'vô hình' đối với DTrace (ví dụ tôi tin rằng iTunes bị mờ đục đối với DTrace để bảo vệ cơ chế DRM của nó.)

Vì vậy, có thể bắt đầu quan sát tất cả các cuộc gọi mở/mở OS cho /dev/tty.usbmodemXXX và cố gắng xác định hệ thống con và quan sát điều đó. Bạn có thể thấy rằng các subytem có thể được quan sát, và điều đó sẽ giúp xem những gì trình điều khiển thiết bị OS + đang làm.

Đây không phải là tầm thường. Nếu thời gian của bạn có giá trị, nó có thể rẻ hơn và đáng tin cậy hơn để có được phần cứng USB sniffer và đặt nó vào cáp, đặc biệt nếu nó chỉ 1.2Mbits hoặc 12MBits USB (sniffers đắt hơn nhiều cho tốc độ dữ liệu cao hơn).

Các liên kết này có thể giúp:
About DTrace
DTrace Guide
DTrace book
Brendan Gregg's Top 10 DTrace scripts for Mac OS X
Apple DTrace manual
Hooked on DTrace

+0

Cảm ơn thông tin, tôi sẽ kiểm tra điều này. Tôi đã đề cập đến phần cứng tracer để ông chủ của tôi, người ngạc nhiên lớn của tôi ... Có một ở nhà cho các dự án cá nhân ... Vì vậy, tôi có lẽ sẽ kết thúc lên con đường đó. – Gary

+0

@Gary - nếu bạn có thể kết hợp trình thám thính USB với DTrace, bạn có thể xem 'mọi thứ'. May mắn nhất. – gbulmer

+0

Vì vậy, cập nhật: Tôi đã sử dụng một mô-đun truy tìm phần cứng ... Tuy nhiên bản chất của truy tìm có nghĩa là sử dụng một USB -> Bộ điều hợp nối tiếp Để trình thám thính sau đó rs-232 -> rs-232 vào thiết bị phần cứng. Điều này có nghĩa là tôi đang sử dụng thiết bị nối tiếp USB -> khác và sự cố đã biến mất. Vì vậy, chúng tôi đã hoàn toàn chứng minh rằng đó là một vấn đề ở cấp trình điều khiển hoặc dưới đây. – Gary

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