crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

44 страниц V  « < 17 18 19 20 21 > »   
Ответить в данную темуНачать новую тему
> QSerialDevice - Библиотека для работы с COM-портами
kuzulis
  опции профиля:
сообщение 26.12.2010, 15:38
Сообщение #181


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


Цитата
C:\Qt\2010.05\BuildExamples-build-desktop\examples\anymaster/../../../qserialdevice-qserialdevice/examples/anymaster/anymaster.cpp:30: undefined reference to `operator<<(QDebug, AbstractSerial::BaudRate)'

Возьмите сегодняшний master. Я там это исправил.

Цитата
так сказать, большую зеленую кнопку.

не надо нажимать кнопок. запускать надо через Qt Command Promt или заранее прописав в PATH пути к либам Qt и MinGW.

Цитата
.a помещает в Qt\2010.05\BuildExamples-build-desktop\src\build\debug - это так и должно быть, или должно в Qt\2010.05\qserialdevice-qserialdevice\src ?

Должно быть, всегда библиотеку помещает в \BuildExamples-build-desktop\src\build\debug(release).

Цитата
С полученной .dll моя прога работать не хочет, опять 139 ошибка (там только создание экземпляра класса, больше совсем ничего, и #include <abstractserial.h>, как в примере, и dll лежит рядом с ехе), а примеры проверить не могу.

Разбираться что у Вас не работает в Вашем приложении я не буду. Для Вас специально созданы примеры /examples , они работают так как задумано. Сделайте у себя по аналогии. В чем проблема?

Цитата
.dll помещает опять в Qt\2010.05\BuildExamples-build-desktop\src\build\debug.

А куда ей помещать?
Если хотите использовать shared (*.dll) библиотеку - то напишите сами себе *.pro файл так как Вам нужно чтобы оно помещало туда куда Вам надо.


В общем, почитайте assistent и что нить про разделяемые библиотеки.




Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Alexk_*
сообщение 26.12.2010, 18:17
Сообщение #182





Гости








    


Спасибо большое!

Все компилируется и работает. Н-да, только в треде намусорил, виноват.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sasha07
  опции профиля:
сообщение 7.1.2011, 9:00
Сообщение #183


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 7.1.2011
Пользователь №: 2330

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго времени суток, форумчане!
Возникла проблема (видимо с руками) при чтении/записи с использованием QSerialDevice.
ОС ubuntu 10.10, usb-->rs переходник. На том конце управляемый коммутатор. Библиотеку стянул сегодня, собралась без проблем.
Вот только как отдать железке данные, понятные ей и забрать понятные мне не пойму...
Вывод QDebug :
Раскрывающийся текст
[/expand]
[expand]= New parameters =
Device name : "/dev/ttyUSB0"
Baud rate : "57600 baud"
Data bits : "8 bit"
Parity : "None"
Stop bits : "1"
Flow : "Disable"
Char timeout, msec : 0
open mode : OpenMode( "ReadOnly|WriteOnly" )
port error : "Unknown error"
port lineStatus : 6
log : 0x9939128
read : ""
log : 0x9939128
read : ""
log : 0x9939128
read : ""
log : 0x9939128
read : ""
log : 0x9939128
read : ""
log : 0x9939128
read : ""


Код:

Раскрывающийся текст
AbstractSerial *port = new AbstractSerial;
QByteArray a,b,inputBuffer;

QString *logText = new QString;


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
ui->setupUi(this);

port->setDeviceName("/dev/ttyUSB0");
connect( port, SIGNAL(readyRead()), this, SLOT(ReadData()));
connect( port, SIGNAL(signalStatus(QString,QDateTime)), this, SLOT(State(QString,QDateTime)));

if (port->open(AbstractSerial::ReadWrite))
     ui->label->setText("open!");

port->reset();
port->setBaudRate(AbstractSerial::BaudRate57600);
port->setFlowControl(AbstractSerial::FlowControlOff);
port->setDataBits(AbstractSerial::DataBits8);
port->setParity(AbstractSerial::ParityNone);
port->setStopBits(AbstractSerial::StopBits1);

qDebug() << "= New parameters =";
qDebug() << "Device name            : " << port->deviceName();
qDebug() << "Baud rate              : " << port->baudRate();
qDebug() << "Data bits              : " << port->dataBits();
qDebug() << "Parity                 : " << port->parity();
qDebug() << "Stop bits              : " << port->stopBits();
qDebug() << "Flow                   : " << port->flowControl();
qDebug() << "Char timeout, msec     : " << port->charIntervalTimeout();
qDebug() << "open mode              : " << port->openMode();
qDebug() << "port error             : " << port->errorString();
qDebug() << "port lineStatus        : " << port->lineStatus();

}

void MainWindow::ReadData()
{
   if (!port->waitForReadyRead(500))
        qDebug() << "Response timeout.";
  qint64 ba_count= port->bytesAvailable();
   QByteArray ba = port->read(ba_count);

   inputBuffer.append(ba);
       if (inputBuffer.contains("\n"))                                 // Если пришёл конец строки
       {
           QString ba_str(inputBuffer);
           inputBuffer.clear();
         logText->append(QString("<b>></b> %1").arg(ba_str));       // Записываем посылаемые данные в лог
       }

    QString ba1_str(ba);
    qDebug () << "log    : "  << logText;
    qDebug () << "read   : "  << ba1_str;
}

void MainWindow::State(QString stateMsg,QDateTime dt)
{

  qDebug() << "State: " << stateMsg << ", in time: " << dt.time().toString();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{


port->write(ui->lineEdit->text().toAscii() +'/r');
ui->lineEdit->clear();
// qDebug() << "port error             : " << port->errorString();
// qDebug() << "port line state        : " << port->lineStatus();

}

void MainWindow::on_pushButton_2_clicked()
{
  port->flush();
}



Сильно не пинайте - это моя первая программа на qt.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 7.1.2011, 14:38
Сообщение #184


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


1. Зачем в слоте ReadData вы делаете port->waitForReadyRead(500) ?
2. Чтобы посмотреть что читается - понавставляйте qDebug-ов после QByteArray ba = port->read(ba_count);
3. А насчет того как отдавать/забирать данные железке - это вам виднее, читайте документацию, смотрите примеры.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sasha07
  опции профиля:
сообщение 7.1.2011, 19:46
Сообщение #185


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 7.1.2011
Пользователь №: 2330

Спасибо сказали: 0 раз(а)




Репутация:   0  


1. Зачем в слоте ReadData вы делаете port->waitForReadyRead(500) ?
2. Чтобы посмотреть что читается - понавставляйте qDebug-ов после QByteArray ba = port->read(ba_count);
3. А насчет того как отдавать/забирать данные железке - это вам виднее, читайте документацию, смотрите примеры.

1. Не заработало корректно - начал лепить и перебирать что попало.
2. Изначально лепил qDebug, в ответ или то что ввожу (т.е. ответа от железки нет) или иероглифы.
3. Видимо у меня проблемы с кодировкой записи в порт, + кривые руки, поэтому и писал:
Цитата
Сильно не пинайте - это моя первая программа на qt.


Если кто - то сталкивался с такой проблемой дайте кусок кода в котором идет преобразование qstring -> to qbytearray при записи и наоборот при чтении. qstring-toASCII, UTF-8 и т.д. не спасает.
Заранее благодарен.

kuzulis, спасибо за библиотеку!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.1.2011, 22:49
Сообщение #186


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Sasha07 @ 7.1.2011, 21:46) *
Видимо у меня проблемы с кодировкой записи в порт
устройство в символьном (ASCII) режиме работает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sasha07
  опции профиля:
сообщение 8.1.2011, 9:32
Сообщение #187


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 7.1.2011
Пользователь №: 2330

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
устройство в символьном (ASCII) режиме работает?


Думаю да, гипертерминал и putty с ним нормально работают, в настройках putty по дефолту стоит unicode.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sasha07
  опции профиля:
сообщение 9.1.2011, 1:03
Сообщение #188


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 7.1.2011
Пользователь №: 2330

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
устройство в символьном (ASCII) режиме работает?


Нашел serial port monitor 4, он разрешает писать следующие типы данных в порт : string, hex, oct, demical, bin. Так вот, при записи string строка пишется и читается корректно, но /r , /n, /r/n , CR - не отправляет железке команду перевода каретки, тип oct, ввожу 15 return отрабатывает. также с bin, и hex, demical.

Dump view : 45 6e 74 65 72 20 69 6e 74 6f 20 73 74 70 20 6d Enter into stp m - то что возвращается из порта.
Как отправить/ получить символ возврата каретки и символ новой строки (/n) используя данную библиотеку?
Заранее благодарен.





Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.1.2011, 5:41
Сообщение #189


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


управляющие символы ASCII используют обратный слэш:
\r
\n
\rn

Цитата(Sasha07 @ 9.1.2011, 3:03) *
Нашел serial port monitor 4
Это устройство так называется?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sasha07
  опции профиля:
сообщение 9.1.2011, 10:02
Сообщение #190


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 7.1.2011
Пользователь №: 2330

Спасибо сказали: 0 раз(а)




Репутация:   0  


[quote]управляющие символы ASCII используют обратный слэш:
\r
\n
\rn
[quote]
Да как только не извращался уже - все равно их железка читает как обычные символы.

serial port monitor 4 - программа под винду для диагностики и дампа данных c com port.
Непосредственно с нее и работал с коммутатором, чтобы понять чего ему надо.
Строки коммутатор воспринимает, а вот управляющие символы в String отправить не получается, коммутатор воспринимает их как строку и все.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

44 страниц V  « < 17 18 19 20 21 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


7 чел. читают эту тему (гостей: 7, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.11.2024, 22:30