[Qt-interest] serial communication, RTS and DTR

HardMaker hardmaker at gmail.com
Tue Mar 30 22:21:08 CEST 2010


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>>
>
>     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>
>     >> <mailto:yuvraj.ragupathi at indieontech.com
>     <mailto: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>
>     <mailto:Qt-interest at trolltech.com <mailto:Qt-interest at trolltech.com>>
>     >>     http://lists.trolltech.com/mailman/listinfo/qt-interest
>     >>
>     >>
>     >>
>     > 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>
>     > http://lists.trolltech.com/mailman/listinfo/qt-interest
>     >
>     >
>
>
>
>     _______________________________________________
>     Qt-interest mailing list
>     Qt-interest at trolltech.com <mailto:Qt-interest at trolltech.com>
>     http://lists.trolltech.com/mailman/listinfo/qt-interest
>
>






More information about the Qt-interest-old mailing list