Results 1 to 3 of 3

Thread: QextSerialPort writeData/readData

  1. #1
    Join Date
    Jan 2010
    Posts
    4
    Qt products
    Qt4
    Platforms
    Windows

    Question QextSerialPort writeData/readData

    Hello!

    I need some support in the following situation:

    I'm trying to use QextSerialPort Class in communication between PC and Device application.

    The question is in about read/write operations.

    what I have done:

    Header:
    Qt Code:
    1. #include <QMainWindow>
    2. #include "qextserialport.h"
    3.  
    4.  
    5. namespace Ui {
    6. class CAN_transfer;
    7.  
    8. }
    9.  
    10. class CAN_transfer : public QMainWindow {
    11. Q_OBJECT
    12.  
    13. public:
    14. CAN_transfer(QWidget *parent = 0);
    15. ~CAN_transfer();
    16.  
    17. protected:
    18. void changeEvent(QEvent *e);
    19.  
    20. private:
    21. Ui::CAN_transfer *ui;
    22. QextSerialPort* _comPort;
    23. unsigned char mas[64];
    24. unsigned char* DATA_pointer;
    25.  
    26. private slots:
    To copy to clipboard, switch view to plain text mode 

    source:

    Qt Code:
    1. #include "can_transfer.h"
    2. #include "ui_can_transfer.h"
    3. #include "qextserialport.h"
    4. #include "win_qextserialport.h"
    5.  
    6.  
    7. CAN_transfer::CAN_transfer(QWidget *parent) :
    8. QMainWindow(parent),
    9. ui(new Ui::CAN_transfer)
    10. {
    11. ui->setupUi(this);
    12. ui->logw->setReadOnly(true);
    13. ui->logw->setTextColor(Qt::red);
    14. ui->logw->append(tr("before using this software be sure to set connection between Device and PC via COM1 port"));
    15. ui->logw->setTextColor(Qt::black);
    16. ui->spinBox_1->setMaximum(8);
    17. ui->spinBox_2->setMaximum(8);
    18. ui->spinBox_3->setMaximum(8);
    19. ui->spinBox_4->setMaximum(8);
    20. ui->spinBox_5->setMaximum(8);
    21. ui->spinBox_6->setMaximum(8);
    22. ui->spinBox_7->setMaximum(8);
    23. ui->spinBox_8->setMaximum(8);
    24. QString s="COM1";
    25. _comPort = new QextSerialPort(s);
    26. DATA_pointer = &mas[0];
    27. }
    28.  
    29. CAN_transfer::~CAN_transfer()
    30. {
    31.  
    32. delete(_comPort);
    33. delete ui;
    34. }
    35.  
    36. void CAN_transfer::changeEvent(QEvent *e)
    37. {
    38. QMainWindow::changeEvent(e);
    39. switch (e->type()) {
    40. case QEvent::LanguageChange:
    41. ui->retranslateUi(this);
    42. break;
    43. default:
    44. break;
    45. }
    46. }
    47.  
    48.  
    49.  
    50. void CAN_transfer::on_connectbutton_clicked()
    51. {
    52. ui->logw->append(tr("COM1 configurating...."));
    53. _comPort->setBaudRate(BAUD9600);
    54. _comPort->setFlowControl(FLOW_OFF);
    55. _comPort->setParity(PAR_NONE);
    56. _comPort->setDataBits(DATA_8);
    57. _comPort->setStopBits(STOP_1);
    58. _comPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered);
    59. ui->logw->append(tr("conneting...."));
    60. /*
    61.   *DATA_pointer = 0x55;
    62.   DATA_pointer++;
    63.   *DATA_pointer = 0xAA;
    64.   DATA_pointer++;
    65.   *DATA_pointer = 0xFF;
    66.   DATA_pointer -2;
    67.   *DATA_pointer = 0;
    68.  
    69.  
    70.   if(_comPort->writeData(DATA_pointer, 3))
    71.   {
    72.   while(!(readData(DATA_pointer,1)));
    73.   if(*DATA_pointer==0x55)
    74.   ui->logw->append(tr("connection established!"));
    75.   statusBar()->showMessage(tr("Connected"));
    76.   }
    77.  
    78.   */
    79. _comPort->close();
    80. }
    To copy to clipboard, switch view to plain text mode 

    commented code in source is a reason of many errors, which are:

    can_transfer.cpp: In member function 'void CAN_transfer:n_connectbutton_clicked()':
    can_transfer.cpp:71: warning: statement has no effect
    can_transfer.cpp:75: error: invalid conversion from 'int' to 'unsigned char*'
    can_transfer.cpp:80: warning: statement has no effect
    win_qextserialport.h:47: error: 'virtual qint64 Win_QextSerialPort::writeData(const char*, qint64)' is protected
    can_transfer.cpp:84: error: within this context
    can_transfer.cpp:84: error: invalid conversion from 'unsigned char*' to 'const char*'
    can_transfer.cpp:84: error: initializing argument 1 of 'virtual qint64 Win_QextSerialPort::writeData(const char*, qint64)'
    can_transfer.cpp:86: error: 'readData' was not declared in this scope


    Hope somebody helps in eliminating of this errors.


    Thanks in advance

  2. #2
    Join Date
    May 2009
    Location
    USA
    Posts
    300
    Qt products
    Qt4
    Platforms
    Windows
    Thanks
    82
    Thanked 11 Times in 11 Posts

    Default Re: QextSerialPort writeData/readData

    I have no experience with QextSerialPort, but QSerialDevice works fine with my application, built as a static library.
    You might try it.
    Good luck with your code.

  3. #3
    Join Date
    Jan 2010
    Posts
    4
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: QextSerialPort writeData/readData

    Thank you for your supporting.

    Luckily, I solved this problem with help from knowing people.

    Now it looks like that:

    Qt Code:
    1. #include "can_transfer.h"
    2. #include "ui_can_transfer.h"
    3. #include "qextserialport.h"
    4. #include "win_qextserialport.h"
    5.  
    6.  
    7. CAN_transfer::CAN_transfer(QWidget *parent) :
    8. QMainWindow(parent),
    9. ui(new Ui::CAN_transfer)
    10. {
    11. ui->setupUi(this);
    12. ui->logw->setReadOnly(true);
    13. ui->logw->setTextColor(Qt::red);
    14. ui->logw->append(tr("before using this software be sure to set connection between Device and PC via COM1 port"));
    15. ui->logw->setTextColor(Qt::black);
    16. ui->spinBox_1->setMaximum(8);
    17. ui->spinBox_2->setMaximum(8);
    18. ui->spinBox_3->setMaximum(8);
    19. ui->spinBox_4->setMaximum(8);
    20. ui->spinBox_5->setMaximum(8);
    21. ui->spinBox_6->setMaximum(8);
    22. ui->spinBox_7->setMaximum(8);
    23. ui->spinBox_8->setMaximum(8);
    24. QString s="COM1";
    25. _comPort = new QextSerialPort(s);
    26. _comPort->setBaudRate(BAUD9600);
    27. _comPort->setFlowControl(FLOW_OFF);
    28. _comPort->setParity(PAR_NONE);
    29. _comPort->setDataBits(DATA_8);
    30. _comPort->setStopBits(STOP_1);
    31. DATA_pointer = &mas[0];
    32. }
    33.  
    34. CAN_transfer::~CAN_transfer()
    35. {
    36. _comPort->close();
    37. delete(_comPort);
    38. delete ui;
    39. }
    40.  
    41. void CAN_transfer::changeEvent(QEvent *e)
    42. {
    43. QMainWindow::changeEvent(e);
    44. switch (e->type()) {
    45. case QEvent::LanguageChange:
    46. ui->retranslateUi(this);
    47. break;
    48. default:
    49. break;
    50. }
    51. }
    52. void CAN_transfer::on_connectbutton_clicked()
    53. {
    54. ui->logw->append(tr("COM1 configurating...."));
    55. _comPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered);
    56. ui->logw->append(tr("conneting...."));
    57. *DATA_pointer = 0x55;
    58. DATA_pointer++;
    59. *DATA_pointer = 0xAA;
    60. DATA_pointer++;
    61. *DATA_pointer = 0xFF;
    62. DATA_pointer -= 2;
    63. if(_comPort->write((const char*)DATA_pointer, 3))
    64. {
    65. while(!(_comPort->read((char*)DATA_pointer,1)));
    66. if(*DATA_pointer==0x55)
    67. ui->logw->append(tr("connection established!"));
    68. }
    69. statusBar()->showMessage(tr("Connected"));
    70. _comPort->close();
    71. }
    To copy to clipboard, switch view to plain text mode 

Similar Threads

  1. New Qextserialport
    By pherthyl in forum Qt Programming
    Replies: 0
    Last Post: 20th August 2009, 02:09
  2. Qextserialport.. sniffer?
    By triperzonak in forum Qt Programming
    Replies: 3
    Last Post: 7th November 2008, 04:30
  3. QextSerialPort
    By Diph in forum Newbie
    Replies: 5
    Last Post: 13th September 2008, 20:18
  4. QExtSerialPort
    By baray98 in forum Qt Programming
    Replies: 1
    Last Post: 9th September 2008, 21:46
  5. any body using qextserialport?
    By yagabey in forum Newbie
    Replies: 4
    Last Post: 25th December 2007, 23:08

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.