[Qt-interest] serial communication, RTS and DTR

Denis Akhmetzyanov dakhmetzyanov at smartlabs.tv
Wed Mar 31 16:17:49 CEST 2010


Hi,

port = new QextSerialPort(portName, QextSerialPort::EventDriven);
port->open(QIODevice::ReadWrite);
connect(port, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
...
void PortListener::onReadyRead()
{
    QByteArray bytes;
    int a = port->bytesAvailable();
    bytes.resize(a);
    port->read(bytes.data(), bytes.size());
}


2010/3/31 Yuvraj <yuvraj.ragupathi at indieontech.com>

>  HardMaker wrote:
>
> Hi, yes, I open the port, the complete code is:
>
> void Dialog::on_btnOpenPort_clicked()
> {
>     serial->setBaudRate(BAUD9600);
>     serial->setFlowControl(FLOW_OFF);
>     serial->setParity(PAR_NONE);
>     serial->setDataBits(DATA_8);
>     serial->setStopBits(STOP_2);
>
>     if(serial->open(QIODevice::ReadWrite|QIODevice::Unbuffered))
>         ui->logList->addItem(new QListWidgetItem ("Open: TRUE"));
>     else
>         ui->logList->addItem(new QListWidgetItem ("Open: FALSE"));
> }
>
> Where logList is a QListWidget where write some text to debug.
> The "serial" was defined in the Dialog class. I have buttons to togle
> RTS and DTR:
>
> void Dialog::on_rtsOn_clicked()
> {
>     serial->setRts(true);
> }
>
> void Dialog::on_rtsOff_clicked()
> {
>     serial->setRts(false);
> }
>
> void Dialog::on_dtrOn_clicked()
> {
>     serial->setDtr(true);
> }
>
> void Dialog::on_dtrOff_clicked()
> {
>     serial->setDtr(false);
> }
>
> And with other button close the port:
>
> void Dialog::on_btnClosePort_clicked()
> {
>     if(serial->isOpen())
>     {
>       serial->close();
>       if(serial->isOpen())
>       {
>         ui->logList->addItem(new QListWidgetItem ("No cerr?"));
>       }
>       else
>       {
>         ui->logList->addItem(new QListWidgetItem ("Cerro OK"));
>       }
>     }
>     else
>         ui->logList->addItem(new QListWidgetItem ("Not opened!"));
> }
>
>
>
> Denis Akhmetzyanov escribió:
>
>
>  Hi,
> Are you open port before setRts() ?
>
>     serial->open(QIODevice::ReadWrite)
>
>
> 2010/3/30 HardMaker <hardmaker at gmail.com <mailto:hardmaker at gmail.com> <hardmaker at gmail.com>>
>
>     Hi,
>     I'm trying to make a serial comunication too and I need to control the
>     RTS and DTR lines. Not for make a hardware hand shaking, yust I
>     wan't to
>     drive this lines and send and recive data trow the serial port as
>     diferents things.
>     As you suggest, I try QextSerialPort from google and use this code on
>     linux to initialize the port:
>
>        QextSerialPort serial = new QextSerialPort();
>        serial->setBaudRate(BAUD9600);
>        serial->setFlowControl(FLOW_OFF);
>        serial->setParity(PAR_NONE);
>        serial->setDataBits(DATA_8);
>        serial->setStopBits(STOP_2);
>
>     but when I press a button to execute this code:
>
>      serial->setRts(true);
>     or
>      serial->setRts(false);
>
>     Nothing happend, I'm using a digital voltimeter conected to RTS and
>     don't change. But, if use other applications  it's ok  (the
>     hardware work).
>     Can helpme?
>
>     Thank's
>
>     Sergio
>
>     Yuvraj escribió:
>     > Denis Akhmetzyanov wrote:
>     >
>     >> Hi,
>     >> I suggest you to try
>     >> QextSerialPort http://code.google.com/p/qextserialport/ instead
>     of the
>     >> native calls. It is a convenient class implements QIODevice and
>     >> supports signal/slot technology and asynchronous calls.
>     >>
>     >>
>     >> 2010/3/30 Yuvraj <yuvraj.ragupathi at indieontech.com
>     <mailto:yuvraj.ragupathi at indieontech.com> <yuvraj.ragupathi at indieontech.com>
>     >> <mailto:yuvraj.ragupathi at indieontech.com <yuvraj.ragupathi at indieontech.com>
>     <mailto:yuvraj.ragupathi at indieontech.com> <yuvraj.ragupathi at indieontech.com>>>
>     >>
>     >>      Hi ,
>     >>
>     >>     Here i am opening the serial communication device file and
>     writing
>     >>     some data, in other hand i am not getting the data due to enter
>     >>     key( "/r/n")
>     >>
>     >>     my code is
>     >>
>     >>      file_descriptor = open("/dev/ttyS0",O_RDWR);
>     >>         if(file_descriptor > 0)
>     >>         {
>     >>              timer = new QTimer;
>     >>             timer1 =new QTimer;
>     >>
>     >>
>     QObject::connect(timer,SIGNAL(timeout()),this,SLOT(browser_append()));
>     >>
>     >>
>     QObject::connect(timer1,SIGNAL(timeout()),this,SLOT(on_send_clicked()));
>     >>             timer->start(1);
>     >>             timer1->start(10);
>     >>         }
>     >>         else
>     >>         {
>     >>             QMessageBox::information(0,"","Connection failed");
>     >>         }
>     >>
>     >>
>     >>     void  window::on_send_clicked()
>     >>     {
>     >>          int file_id;
>     >>        char send_data[150]= "Hi Hello\r\n";
>     >>         if(file_descriptor > 0)
>     >>         {
>     >>            file_id= write(file_descriptor,send_data,15);
>     >>            ui->send_text->clear();
>     >>            ui->send_text->setFocus();
>     >>            if(file_id > 0)
>     >>            {
>     >>                qDebug()<<"Data successfully written \n";
>     >>            }
>     >>
>     >>
>     >>         }
>     >>
>     >>     }
>     >>
>     >>     any  ideas?
>     >>
>     >>     Thanks
>     >>
>     >>     Yuvaraj R
>     >>
>     >>
>     >>     _______________________________________________
>     >>     Qt-interest mailing list
>     >>     Qt-interest at trolltech.com
>     <mailto:Qt-interest at trolltech.com> <Qt-interest at trolltech.com>
>     <mailto:Qt-interest at trolltech.com <Qt-interest at trolltech.com> <mailto:Qt-interest at trolltech.com> <Qt-interest at trolltech.com>>
>     >>     http://lists.trolltech.com/mailman/listinfo/qt-interest
>     >>
>     >>
>     >>port->open(QIODevice::ReadWrite)
>     > There itself i am facing  same issue (key enter )
>     >
>     > Thanks
>     > Yuvaraj
>     > _______________________________________________
>     > Qt-interest mailing list
>     > Qt-interest at trolltech.com <mailto:Qt-interest at trolltech.com> <Qt-interest at trolltech.com>
>     > http://lists.trolltech.com/mailman/listinfo/qt-interest
>     >
>     >
>
>
>
>     _______________________________________________
>     Qt-interest mailing list
>     Qt-interest at trolltech.com <mailto:Qt-interest at trolltech.com> <Qt-interest at trolltech.com>
>     http://lists.trolltech.com/mailman/listinfo/qt-interest
>
>
>      _______________________________________________
> Qt-interest mailing listQt-interest at trolltech.comhttp://lists.trolltech.com/mailman/listinfo/qt-interest
>
>
>    Hi ,
>
> I want receive the data from RS 232  continuously. I tried with while loop
> and timer, but my GUI is hanging.
>
> Any other way to receive the data continuously?
>
>
> Thanks
>
> Yuvraj
>
>
>
>
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
>
>


-- 
Best regards,
Denis Akhmetzyanov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20100331/ccb8864f/attachment.html 


More information about the Qt-interest-old mailing list