Closed GoogleCodeExporter closed 8 years ago
I have same behavior but only on my WinXP machine. I use FTDI Virtual ComPort
(COM8)
USB-To-Serial Bridge.
If I start my Machine and open the port via
port->open(QextSerialPort::ReadWrite)
true is returned. If I poll port->isOpen() it is also true but no Bytes leave or
recieved.
Then I close my program and use hterm oder hyperterminal and simply do one open
and
one close on the COM8, start my program again and all work fine like it should.
Original comment by josef.ha...@googlemail.com
on 3 May 2010 at 8:16
I have found out that there muste be a buffer somewhere. If I send more than
6...8
bytes to the serial port, communication begins. But if I only send one byte,
the byte
is not delivered after long timeout. Maybe the problem is in the
Virtual-Com-FTDI
somewhere... But in HTerm there is no delay.
I Open port with:
port->setBaudRate(BAUD115200);
port->setFlowControl(FLOW_OFF);
port->setParity(PAR_NONE);
port->setDataBits(DATA_8);
port->setStopBits(STOP_1);
port->setPortName(name);
port->setQueryMode(QextSerialPort::Polling);
if(port->open((QIODevice::ReadWrite | QIODevice::Unbuffered) ))
Original comment by josef.ha...@googlemail.com
on 5 May 2010 at 8:16
I FINALLY figured this one out. Apparently, setting the port settings has no
effect
until the port is open. It seems like a library bug. Here is my working code:
port_M->setPortName("COM3");
if(port_M->open(QIODevice::ReadWrite)){
port_M->setBaudRate(BAUD9600);
port_M->setFlowControl(FLOW_OFF);
port_M->setParity(PAR_NONE);
port_M->setDataBits(DATA_8);
port_M->setStopBits(STOP_1);
port_M->setTimeout(100);
}
Original comment by jfpen...@gmail.com
on 5 May 2010 at 7:00
It didn't work for me. FTDI as well...
Original comment by andrey.p...@gmail.com
on 20 Mar 2011 at 2:15
Hi!
I have met the same problem.
Did you find a solution?
Original comment by ibrahim....@laposte.net
on 7 Jul 2011 at 3:12
Hi!!
I have met the same problem and I have at last resolved it.
The example of "jfpen...@gmail.com" is almost correct. Just few lines missing:
m_port = new QextSerialPort;
m_port->setPortName(m_portCom);
m_port->setQueryMode(QextSerialPort::EventDriven);
if(m_port->open(QIODevice::ReadOnly) == true)
{
m_port->setBaudRate(BAUD9600);
m_port->setParity(PAR_EVEN);
m_port->setDataBits(DATA_8);
m_port->setStopBits(STOP_1);
m_port->setFlowControl(FLOW_HARDWARE);
m_nbTrames = 0;
connect(m_port, SIGNAL(readyRead()), this, SLOT(receive()));
connect(m_port, SIGNAL(dsrChanged(bool)), this, SLOT(statusChanged(bool)));
}
For more details, see the attached files.
I hope it will help you!
Original comment by theWhole...@gmail.com
on 9 Aug 2011 at 1:03
Attachments:
Thanks for the hint, I had the same problem. There really should be a hint
somewhere as even the examples are wrong...
Original comment by ralf.dau...@gmail.com
on 21 Sep 2011 at 6:44
Thanks to "jfpen...@gmail.com". Now my code it's working.
Apparently, setting the port settings has no effect until the port is open. It
seems like a library bug.
Original comment by brunoder...@hotmail.com
on 7 Dec 2011 at 10:07
Hi there. I´m using 1.2 WIN ALPHA and I think there are two problems.
1) On the one hand, in the function setbaudrate, if the port is open there´s a
switch-case decision that do not includes default case, so one cannot change
the baudrate to a user baudrate if the port is open.
2) In the open function, setbaudrate, setparity, setflowcontrol... functions
are called before calling QIODevice::open, so neither the baudrate nor the
others are updated in the Win_CommConfig.dcb struct and, therefore, applied,
because the setbaudrate (and the others) function updates this struct only if
the isOpen function returns true.
My solution:
1) write a default case that copies the baudrate to Win_CommConfig.dcb.baudrate
2) call QIODevice::open before updating the Win_CommConfig.dcb struct.
Maybe it´s not the best solution, but it works.
PS: I used sysinternals portmon to see what happens when I try to change
baudrate, open ports, etc.
Original comment by carlos.b...@gmail.com
on 22 Dec 2011 at 4:14
Thanks
Original comment by dbzhang...@gmail.com
on 16 Mar 2012 at 8:14
Original issue reported on code.google.com by
jfpen...@gmail.com
on 30 Apr 2010 at 11:53