another_one
24th January 2010, 12:28
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:
#include <QMainWindow>
#include "qextserialport.h"
namespace Ui {
class CAN_transfer;
}
class CAN_transfer : public QMainWindow {
Q_OBJECT
public:
CAN_transfer(QWidget *parent = 0);
~CAN_transfer();
protected:
void changeEvent(QEvent *e);
private:
Ui::CAN_transfer *ui;
QextSerialPort* _comPort;
unsigned char mas[64];
unsigned char* DATA_pointer;
private slots:
source:
#include "can_transfer.h"
#include "ui_can_transfer.h"
#include "qextserialport.h"
#include "win_qextserialport.h"
CAN_transfer::CAN_transfer(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::CAN_transfer)
{
ui->setupUi(this);
ui->logw->setReadOnly(true);
ui->logw->setTextColor(Qt::red);
ui->logw->append(tr("before using this software be sure to set connection between Device and PC via COM1 port"));
ui->logw->setTextColor(Qt::black);
ui->spinBox_1->setMaximum(8);
ui->spinBox_2->setMaximum(8);
ui->spinBox_3->setMaximum(8);
ui->spinBox_4->setMaximum(8);
ui->spinBox_5->setMaximum(8);
ui->spinBox_6->setMaximum(8);
ui->spinBox_7->setMaximum(8);
ui->spinBox_8->setMaximum(8);
QString s="COM1";
_comPort = new QextSerialPort(s);
DATA_pointer = &mas[0];
}
CAN_transfer::~CAN_transfer()
{
delete(_comPort);
delete ui;
}
void CAN_transfer::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void CAN_transfer::on_connectbutton_clicked()
{
ui->logw->append(tr("COM1 configurating...."));
_comPort->setBaudRate(BAUD9600);
_comPort->setFlowControl(FLOW_OFF);
_comPort->setParity(PAR_NONE);
_comPort->setDataBits(DATA_8);
_comPort->setStopBits(STOP_1);
_comPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered);
ui->logw->append(tr("conneting...."));
/*
*DATA_pointer = 0x55;
DATA_pointer++;
*DATA_pointer = 0xAA;
DATA_pointer++;
*DATA_pointer = 0xFF;
DATA_pointer -2;
*DATA_pointer = 0;
if(_comPort->writeData(DATA_pointer, 3))
{
while(!(readData(DATA_pointer,1)));
if(*DATA_pointer==0x55)
ui->logw->append(tr("connection established!"));
statusBar()->showMessage(tr("Connected"));
}
*/
_comPort->close();
}
commented code in source is a reason of many errors, which are:
can_transfer.cpp: In member function 'void CAN_transfer::on_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
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:
#include <QMainWindow>
#include "qextserialport.h"
namespace Ui {
class CAN_transfer;
}
class CAN_transfer : public QMainWindow {
Q_OBJECT
public:
CAN_transfer(QWidget *parent = 0);
~CAN_transfer();
protected:
void changeEvent(QEvent *e);
private:
Ui::CAN_transfer *ui;
QextSerialPort* _comPort;
unsigned char mas[64];
unsigned char* DATA_pointer;
private slots:
source:
#include "can_transfer.h"
#include "ui_can_transfer.h"
#include "qextserialport.h"
#include "win_qextserialport.h"
CAN_transfer::CAN_transfer(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::CAN_transfer)
{
ui->setupUi(this);
ui->logw->setReadOnly(true);
ui->logw->setTextColor(Qt::red);
ui->logw->append(tr("before using this software be sure to set connection between Device and PC via COM1 port"));
ui->logw->setTextColor(Qt::black);
ui->spinBox_1->setMaximum(8);
ui->spinBox_2->setMaximum(8);
ui->spinBox_3->setMaximum(8);
ui->spinBox_4->setMaximum(8);
ui->spinBox_5->setMaximum(8);
ui->spinBox_6->setMaximum(8);
ui->spinBox_7->setMaximum(8);
ui->spinBox_8->setMaximum(8);
QString s="COM1";
_comPort = new QextSerialPort(s);
DATA_pointer = &mas[0];
}
CAN_transfer::~CAN_transfer()
{
delete(_comPort);
delete ui;
}
void CAN_transfer::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void CAN_transfer::on_connectbutton_clicked()
{
ui->logw->append(tr("COM1 configurating...."));
_comPort->setBaudRate(BAUD9600);
_comPort->setFlowControl(FLOW_OFF);
_comPort->setParity(PAR_NONE);
_comPort->setDataBits(DATA_8);
_comPort->setStopBits(STOP_1);
_comPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered);
ui->logw->append(tr("conneting...."));
/*
*DATA_pointer = 0x55;
DATA_pointer++;
*DATA_pointer = 0xAA;
DATA_pointer++;
*DATA_pointer = 0xFF;
DATA_pointer -2;
*DATA_pointer = 0;
if(_comPort->writeData(DATA_pointer, 3))
{
while(!(readData(DATA_pointer,1)));
if(*DATA_pointer==0x55)
ui->logw->append(tr("connection established!"));
statusBar()->showMessage(tr("Connected"));
}
*/
_comPort->close();
}
commented code in source is a reason of many errors, which are:
can_transfer.cpp: In member function 'void CAN_transfer::on_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