La spécification de la non-standard vitesse de transmission FTDI port série virtuel sous Linux

J'ai un périphérique USB, je vais essayer de communiquer avec plus d'un port série virtuel fourni par le ftdi_sio module du noyau. Cependant, j'ai un peu de mal à régler la vitesse de transmission du port 14400:

  • termios.h ne spécifiez pas une constante pour 14400, donc je ne peux pas utiliser cfsetispeed et cfsetospeed.
  • Dans le source de la ftdi_sio module de noyau, baud base est 24000000 et il ne semble pas être un moyen de le changer. Cela signifie que je ne peux pas utiliser un diviseur avec la TIOCSSERIAL ioctl et d'obtenir un 14400 bauds de cette façon.
  • Le module de source a un commentaire qui sonne comme le réglage de la alt_speed membre de la tty_struct structure pour le port 14400 permettrait de faire ce que je veux, mais il ne semble pas être un moyen pour le mettre en 14400 donné interfaces existantes.

Quelqu'un aurait-il une idée à ce propos? Il serait assez facile de résoudre ce problème en le piratage le module du noyau, mais je suis vraiment à la recherche d'une solution qui ne nécessite pas de modifications du noyau.

ISTR que de retour dans les jours quand Dave Grohl était le batteur de Nirvana, 14400 bauds modems ont été utilisés avec un port de la vitesse de 19200 bauds - est-ce que votre appareil fonctionne pas à 19200?
Non, malheureusement, c'est 14400 ou le buste.
C'est quelque chose de très commun que le débit en bauds résultant de baudbase / diviseur n'est pas exactement le débit en bauds. Ce n'est généralement pas un problème. Vous n'obtiendrez pas exact baudrate si votre matériel série crystal ne peuvent pas fournir. surtout avec ftdi, comme le matériel, je doute que vous pouvez changer la vitesse de transmission de la base.

OriginalL'auteur Hugh | 2010-07-07