Название: QextSerialPort Отправлено: demaker от Август 13, 2013, 15:27 Подскажите из-за чего может быть такой баг.
Делаю коннект. Код: port = new QextSerialPort(namePort); Код: port->write(usbdata.data(),usbdata.size()); После отключаю порт. Код: port->close(); Только после этого он вместо одной посылки, посылает две такие же. Т.е сначала одну и сразу же вторую такую же. Не могу понять почему? Заранее спасибо! Название: Re: QextSerialPort Отправлено: kibsoft от Август 13, 2013, 15:33 Код: port->deleteLater(); Из документации: Цитировать void QObject::deleteLater() [slot] Schedules this object for deletion. The object will be deleted when control returns to the event loop. If the event loop is not running when this function is called (e.g. deleteLater() is called on an object before QCoreApplication::exec()), the object will be deleted once the event loop is started. If deleteLater() is called after the main event loop has stopped, the object will not be deleted. Since Qt 4.8, if deleteLater() is called on an object that lives in a thread with no running event loop, the object will be destroyed when the thread finishes. Note that entering and leaving a new event loop (e.g., by opening a modal dialog) will not perform the deferred deletion; for the object to be deleted, the control must return to the event loop from which deleteLater() was called. Note: It is safe to call this function more than once; when the first deferred deletion event is delivered, any pending events for the object are removed from the event queue. Название: Re: QextSerialPort Отправлено: demaker от Август 13, 2013, 15:37 Нет не помогает
Название: Re: QextSerialPort Отправлено: kibsoft от Август 13, 2013, 15:42 Покажите код как вы делаете коннект, по текущему обрывку не совсем понятно где собака зарыта.
Название: Re: QextSerialPort Отправлено: _OLEGator_ от Август 13, 2013, 15:45 Надо научиться пользоваться отладчиком и смотреть почему 2 раза вызывается функция записи.
Скорее всего 2 раза вызывается слот из-за лишнего коннекта. Название: Re: QextSerialPort Отправлено: demaker от Август 13, 2013, 15:51 Код: Widget::Widget(QWidget *parent) : Код: void Widget::connect_port() Код:
Название: Re: QextSerialPort Отправлено: kibsoft от Август 13, 2013, 16:03 _OLEGator_ правильно сказал.
Вот косяк Код: connect(ui->pushButtonSend,SIGNAL(clicked()),this,SLOT(Transmit())); Название: Re: QextSerialPort Отправлено: demaker от Август 13, 2013, 16:04 Поясните точнее :)
А то я туплю :) Извините Название: Re: QextSerialPort Отправлено: demaker от Август 13, 2013, 16:05 Надо коннект в конструктор засунуть?
Название: Re: QextSerialPort Отправлено: kibsoft от Август 13, 2013, 16:06 Сколько раз вызывается void Widget::connect_port(), столько раз создается соединение кнопки и слота Transmit.
Название: Re: QextSerialPort Отправлено: demaker от Август 13, 2013, 16:08 Спасибо :)
Извините, что отвлек по пустяку :) |