อ่านจากอนุกรมจากบรรทัดคำสั่ง linux


51

ฉันมีอุปกรณ์พอร์ตอนุกรมที่ฉันต้องการทดสอบโดยใช้บรรทัดคำสั่ง linux

ฉันสามารถใช้ stty และ echo เพื่อส่งคำสั่งไปยังพอร์ตอนุกรม แต่เมื่ออุปกรณ์ตอบสนองฉันไม่มีวิธีอ่านสิ่งที่มาจากพอร์ตอนุกรม ฉันใช้

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

เพื่อส่งคำสั่งไปยังอุปกรณ์ อุปกรณ์ทำงานและส่งการตอบกลับใน 300 มิลลิวินาที ฉันจะพิมพ์การตอบกลับไปยังคอนโซลโดยใช้บรรทัดคำสั่งได้อย่างไร

คำตอบ:


56

เหมือนกับเอาต์พุต ตัวอย่าง:

cat /dev/ttyS0

หรือ:

cat < /dev/ttyS0

ตัวอย่างแรกคือแอปที่เปิดพอร์ตอนุกรมและถ่ายทอดสิ่งที่อ่านจากมันไปยังstdout(คอนโซลของคุณ) อย่างที่สองคือเชลล์ชี้นำการรับส่งข้อมูลพอร์ตอนุกรมไปยังแอพใด ๆ แอปนี้โดยเฉพาะแล้วเพียงแค่การถ่ายทอดข้อมูลของตนไปของมันstdinstdout

เพื่อให้มองเห็นการจราจรได้ดีขึ้นคุณอาจต้องการฐานสิบหก

od -x < /dev/ttyS0

หรือsocat stdio /dev/ttyS0
pstanton

ฉันส่งคำสั่งไปยังอุปกรณ์ที่ฉันทำงานด้วย คำสั่งคือ: echo "1GAINS" | sudo tee / dev / ttyUSB0 .... และในการตอบสนองฉันได้รับกระแสที่ไม่สิ้นสุดซ้ำข้อความเดียวกัน ความคิดใด ๆ อุปกรณ์ควรสะท้อนกลับคำสั่งที่ฉันส่งครั้งเดียว แต่ที่นี่เหมือนว่าฉันได้รับข้อเสนอแนะแปลก ๆ
user391339

ฉันตรวจสอบแล้วว่าข้อเสนอแนะไม่ใช่ "ของจริง" โดยใช้ตัววิเคราะห์อนุกรม อุปกรณ์เพียงสะท้อนคำสั่งกลับมาหนึ่งครั้ง แต่ใช้คำสั่งข้างต้นฉันได้รับการทำซ้ำไม่มีที่สิ้นสุดบ้าบนเอาท์พุทขั้ว
user391339

ใช้ได้กับข้อมูลไบนารีหรือไม่
ransh

@ransh - ดูส่วนการถ่ายโอนข้อมูล hex ของคำตอบ ในที่สุดคุณจะต้องมีมนุษย์หรือเครื่องมือที่เข้าใจหรือใครสามารถทำวิศวกรรมย้อนกลับได้ว่าข้อมูลไบนารีโดยเฉพาะ
Jirka Hanika
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.