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 utilisercfsetispeed
etcfsetospeed
.- 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 latty_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.
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
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas modifier baud de base, je suppose qu'elle est liée au matériel. Afin de vous embêter avec le module ne pas vous faire du bien. Dans votre troisième point, on ne parle que de la première méthode proposée pour le réglage personnalisé baudrate, où vous devez accéder à la
tty->alt_speed
. Il semble qu'il n'y est pas d'interface pour définir directement ats struct partir de l'espace utilisateur, du moins pas avec la ftdi_sio pilote.Cependant, il existe une autre méthode expliquée dans les commentaires :
Avez-vous l'essayer ?
FTDI_SIO_SET_BAUDRATE
dans ftdi_sio.h - je vais vérifier si je peux l'utiliser que pour manier le diviseur d'une manière utile.A-ha! Selon votre commentaire ci-dessus (ne pas aller pour exactement 14.4 k), j'ai fini par avoir un oeil de plus près à la
get_ftdi_divisor
la fonction à l'aide d'un diviseur de 1666 (c'est à dire, 14405 bauds) fait le tour, qui mène à la même valeur d'être envoyé à l'appareil dans le port USB de message de contrôle qui définit le réel de série débit en bauds serait envoyé pour 14400. Un million de mercis!Ces taux sont à la fois bien à l'intérieur de toute erreur raisonnable de la marge et devrait fonctionner. Il est très difficile pour l'autre appareil pour générer un débit qui est suffisamment précis pour détecter un échec lorsque l'on parle à un autre appareil à 14,405 ou 13,397. L'erreur est tellement petit.
OriginalL'auteur shodanex
Shodanex la solution fonctionne avec un NDI Polaris Spectres (baud 1,2 mbit /s) sous Linux. Comme spécifié, ouvrez le périphérique série (/dev/ttyUSB0) avec B38400,
puis exécuter:
OriginalL'auteur Tim H