2010-11-29 6 views
2

Fondamentalement, j'ai un programme C++ très simple où j'essaie d'ouvrir un port série (qui est en fait un convertisseur USB-> RS232, devrait être supporté par libserial) mais le code se fige sur Open(). Pas d'erreurs, pas d'exceptions, rien, ça ne fait rien. Il semble fonctionner sur d'autres ports série, sauf celui spécifique. Le port série fonctionne également avec cutecom et d'autres terminaux (et n'est pas réservé par un autre programme). J'ai essayé de configurer avant et après l'ouverture du port, mais cela ne semble pas important. Je ne peux pas non plus voir quoi que ce soit au sujet de handshaking dans la documentation (assez pauvre) de libserial ou dans les en-têtes, peut-être attendre une poignée de main ou quelque chose, je ne sais pas ... Libserial0 version 0.6.0 et Ubuntu 10.10. Quel est le problème ou comment puis-je essayer de déboguer ce ...? Toute autre bibliothèque suggérée/façons d'utiliser le port série avec C++?Libserial Open() se bloque dans mon programme C++

#include <SerialStream.h> 
#include <iostream> 

int main() { 

LibSerial::SerialStream device_; 

device_.SetBaudRate(LibSerial::SerialStreamBuf::BAUD_9600); 
device_.SetCharSize(LibSerial::SerialStreamBuf::CHAR_SIZE_8); 
device_.SetNumOfStopBits(1); 
device_.SetParity(LibSerial::SerialStreamBuf::PARITY_NONE); 
device_.SetFlowControl(LibSerial::SerialStreamBuf::FLOW_CONTROL_NONE); 

device_.Open("/dev/ttyUSB1"); 

} 

Répondre

1

J'ai regardé un libserial il y a quelques années quand j'avais à écrire une interface de commande à un modem qui permet le contrôle à distance via RS-232. J'ai fini par aller avec l'implémentation ASIO de Boost pour l'utilisation du port série.

Vous ne savez pas si Boost.ASIO fonctionnera pour vous ou non. mais dans mon expérience je ne l'ai pas eu accroché sur moi ....

0

J'ai également trouvé ce problème en utilisant un convertisseur USB-série (pl2303). Il semble que régler VTime résout le problème.

+0

vraiment? pourriez-vous nous montrer? – Jasonw

Questions connexes