đọc từ nối tiếp từ dòng lệnh linux


51

Tôi có một thiết bị cổng nối tiếp mà tôi muốn kiểm tra bằng dòng lệnh linux.

Tôi có thể sử dụng stty và echo để gửi lệnh đến cổng nối tiếp, nhưng khi thiết bị phản hồi tôi không có cách nào đọc được những gì đến từ cổng nối tiếp. tôi đang dùng

stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb && echo -n ^R^B > /dev/ttyS0

để gửi lệnh đến thiết bị. Thiết bị hoạt động và gửi phản hồi trở lại sau 300 ms. Làm cách nào để in phản hồi đó lên bàn điều khiển bằng dòng lệnh?

Câu trả lời:


56

Tương tự như với đầu ra. Thí dụ:

cat /dev/ttyS0

Hoặc là:

cat < /dev/ttyS0

Ví dụ đầu tiên là một ứng dụng mở cổng nối tiếp và chuyển tiếp những gì nó đọc từ nó sang stdout(bảng điều khiển của bạn). Thứ hai là shell điều hướng lưu lượng cổng nối tiếp đến bất kỳ ứng dụng nào bạn thích; ứng dụng đặc biệt này sau đó chỉ chuyển tiếp stdinstdout.

Để có được tầm nhìn tốt hơn về lưu lượng truy cập, bạn có thể thích kết xuất hex:

od -x < /dev/ttyS0

hoặcsocat stdio /dev/ttyS0
pstanton

Tôi đã gửi một lệnh cho một thiết bị tôi đang làm việc. Lệnh này là: echo "1GAINS" | sudo tee / dev / ttyUSB0 .... và trong phản hồi tôi nhận được một luồng vô hạn lặp lại cùng một thông điệp. Có ý kiến ​​gì không? Bản thân thiết bị sẽ lặp lại lệnh tôi gửi một lần, nhưng ở đây, nó giống như tôi đang nhận được phản hồi kỳ lạ.
dùng391339

Tôi đã xác minh rằng phản hồi không "thực" bằng cách sử dụng máy phân tích nối tiếp. Thiết bị chỉ lặp lại lệnh một lần, nhưng sử dụng các lệnh trên tôi nhận được sự lặp lại vô tận điên rồ trên đầu ra thiết bị đầu cuối.
dùng391339

Nó có hoạt động với dữ liệu nhị phân không?
chuộc

@ransh - Xem phần kết xuất hex của câu trả lời. Cuối cùng bạn sẽ cần một con người hoặc một công cụ hiểu hoặc có thể đảo ngược kỹ sư dữ liệu nhị phân cụ thể đó.
Jirka Hanika
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.