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