ฉันใช้เป็นประจำcat
เพื่อดูข้อมูลการแก้ไขข้อบกพร่องในคอนโซลจากบอร์ดพัฒนา FPGA ของฉันผ่านการเชื่อมต่อแบบอนุกรม แต่ฉันไม่เคยบอก linux ว่าอัตรารับส่งข้อมูลเป็นเท่าไหร่ แมวรู้ได้อย่างไรว่าอัตราการรับส่งข้อมูลของการเชื่อมต่อแบบอนุกรมคืออะไร?
ฉันใช้เป็นประจำcat
เพื่อดูข้อมูลการแก้ไขข้อบกพร่องในคอนโซลจากบอร์ดพัฒนา FPGA ของฉันผ่านการเชื่อมต่อแบบอนุกรม แต่ฉันไม่เคยบอก linux ว่าอัตรารับส่งข้อมูลเป็นเท่าไหร่ แมวรู้ได้อย่างไรว่าอัตราการรับส่งข้อมูลของการเชื่อมต่อแบบอนุกรมคืออะไร?
คำตอบ:
stty
ชุดยูทิลิตี้หรือรายงานเกี่ยวกับลักษณะของ I / O ขั้วสำหรับอุปกรณ์ที่เข้ามาตรฐาน คุณลักษณะเหล่านี้จะใช้เมื่อสร้างการเชื่อมต่อผ่านสื่อนั้น ๆ cat
ไม่ทราบอัตราการรับส่งข้อมูล แต่จะพิมพ์ข้อมูลหน้าจอที่ได้รับจากการเชื่อมต่อโดยเฉพาะ
เป็นตัวอย่างstty -F /dev/ttyACM0
ให้อัตรา baud ปัจจุบันสำหรับอุปกรณ์ ttyACM0
stty
)
cat
เพียงใช้การตั้งค่าใด ๆ ก็ตามที่พอร์ตได้รับการกำหนดค่าไว้แล้ว ด้วยตัวอย่างข้อมูล C ขนาดเล็กนี้คุณสามารถดูอัตราการรับส่งข้อมูลในปัจจุบันสำหรับพอร์ตอนุกรมเฉพาะ:
ได้รับบอด rate.c
#include <termios.h>
#include <unistd.h>
#include <stdio.h>
int main() {
struct termios tios;
tcgetattr(0, &tios);
speed_t ispeed = cfgetispeed(&tios);
speed_t ospeed = cfgetospeed(&tios);
printf("baud rate in: 0%o\n", ispeed);
printf("baud rate out: 0%o\n", ospeed);
return 0;
}
เรียกใช้:
./get-baud-rate < /dev/ttyS0 # or whatever your serial port is
หมายเลขที่คุณได้รับสามารถค้นหาได้ใน/usr/include/asm-generic/termios.h
ที่ซึ่งมี#define
เช่นB9600
ฯลฯ โปรดทราบว่าตัวเลขในไฟล์ส่วนหัวและในget-baud-rate
ผลลัพธ์อยู่ในรูปฐานแปด
บางทีคุณสามารถทดลองและดูว่าตัวเลขเหล่านี้เป็นอย่างไรในการเริ่มระบบใหม่
stty
คำสั่งที่ทำแค่นี้ ตัวอย่างเช่นstty -F /dev/ttyACM0
ให้อัตราการรับส่งข้อมูลในปัจจุบันซึ่งถูกต้องสำหรับอุปกรณ์ของฉัน
minicom
เคยหรือไม่? มันไม่ทำงานที่นี่ หลังจากที่ฉันตั้งค่าพารามิเตอร์พอร์ตอนุกรมที่ฉันสามารถcat
ใช้ได้