Cat, seri portun baud hızını nereden biliyor?


24

catKonsoldaki hata ayıklama bilgilerini FPGA geliştirme kartımdan seri bağlantı üzerinden görüntülemek için düzenli olarak kullanıyorum , ancak linux'a baud hızının ne olduğunu söylemek zorunda kalmadım. Cat, seri bağlantının baud hızının ne olduğunu nasıl biliyor?


Limanı daha minicomönce olduğu gibi kurmadınız mı? Burada çalışmıyor. Sadece seri port parametrelerini ayarladıktan sonra kullanabilirim cat.
Marco,

Baudrate ayarlamıyor veya bilmiyor, sadece cihazdan okuyor.
Ulrich Dangel

@Marco, Debian'ın bazı varsayılan baud hızı ayarlarına sahip olup olmadığını bilmiyorum, ancak hiçbir yere ayarlamadım.
stanri

Yanıtlar:


34

Yardımcı sttyprogram, standart girişi olan aygıt için terminal G / Ç özelliklerini ayarlar veya raporlar. Bu özellikler, belirli bir ortam üzerinde bir bağlantı kurulurken kullanılır. catbaud hızını bu şekilde bilmiyor, belirli bir bağlantıdan alınan ekran bilgilerini yazdırıyor.

Örnek stty -F /dev/ttyACM0olarak, ttyACM0 cihazı için geçerli baud hızını verir.


1
Ama o zaman Baty oranı hakkında nasıl Stty biliyordu? Bu cevap, yalnızca, baud hızı otomatik olarak belirlenebiliyorsa veya bir noktaya ayarlandıysa (yani aracılığıyla stty) soruyu
humanityANDpeace

@ insanlıkANDPeace Varsayılan baud oranını, kullandığım kişi olarak kabul ediyorum. Daha sonra cihazdaki baud oranını değiştirdiğimde bunu stty yoluyla değiştirmem gerekti.
stanri

9

catsadece port için önceden ayarlanmış ayarları kullanır. Bu küçük C parçacığıyla, belirli bir seri bağlantı noktası için şu anda ayarlanmış olan baud hızını görebilirsiniz:

get-baud-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;
}

Çalıştır:

./get-baud-rate < /dev/ttyS0 # or whatever your serial port is

Alacağınız sayılar /usr/include/asm-generic/termios.h, vb. #defineGibi yerlerin içine bakılabilir B9600. Başlık dosyasındaki ve get-baud-rateçıktıdaki sayıların sekizlik olduğuna dikkat edin.

Belki bu numaraların yeni bir açılışta nasıl olduğunu ve daha sonra değişip değişmeyeceklerini deneyebilirsin.


2
Sadece bunu yapan sttykomutu buldum . Örneğin, stty -F /dev/ttyACM0cihazım için doğru olan geçerli baud hızını veriyor.
stanri

Elbette bu çok daha iyi bir fikir.
clacke
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.