Subversion Repositories Projects

Compare Revisions

Regard whitespace Rev 249 → Rev 250

/QMK-Groundstation/trunk/Classes/cConnection.cpp
0,0 → 1,138
/***************************************************************************
* Copyright (C) 2009 by Manuel Schrape *
* manuel.schrape@gmx.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "cConnection.h"
 
cConnection::cConnection()
{
TTY = new ManageSerialPort();
 
b_isOpen = false;
}
 
void cConnection::slot_newDataReceived(const QByteArray &dataReceived)
{
const char *RXt;
RXt = dataReceived.data();
int a = 0;
 
while (RXt[a] != '\0')
{
if (RXt[a] == '\r')
{
while ((RxData.String.length() > 1) && (RxData.String.at(1) == '#'))
{
RxData.String.remove(0,1);
}
 
if (ToolBox::check_CRC(RxData.String))
{
RxData.Input = RxData.String.toLatin1().data();
emit(newData(RxData));
// emit(showTerminal(1, RxData.String));
}
else
{
emit(showTerminal(2, RxData.String));
}
RxData.String = QString("");
}
else
{
RxData.String = RxData.String + QString(RXt[a]);
}
a++;
}
}
 
bool cConnection::isOpen()
{
return b_isOpen;
}
 
bool cConnection::Close()
{
TTY->close();
 
disconnect(TTY, SIGNAL(newDataReceived(const QByteArray &)), this, 0);
 
return b_isOpen;
}
 
bool cConnection::Open(QString Address)
{
TTY->setPort(Address); //Port
 
TTY->setBaudRate(BAUD57600); //BaudRate
TTY->setDataBits(DATA_8); //DataBits
TTY->setParity(PAR_NONE); //Parity
TTY->setStopBits(STOP_1); //StopBits
TTY->setFlowControl(FLOW_OFF); //FlowControl
 
TTY->setTimeout(0, 10);
TTY->enableSending();
TTY->enableReceiving();
 
TTY->open();
 
if (TTY->isOpen())
{
connect(TTY, SIGNAL(newDataReceived(const QByteArray &)), this, SLOT(slot_newDataReceived(const QByteArray &)));
 
TTY->receiveData();
b_isOpen = true;
}
 
return b_isOpen;
}
 
bool cConnection::send_Cmd(char CMD, int Address, char Data[150],unsigned int Length, bool Resend)
{
if (b_isOpen)
{
QByteArray Temp;
QString TX_Data;
 
if (CMD != '#')
{
TX_Data = ToolBox::Encode64(Data, Length);
 
TX_Data = QString("#") + (QString('a' + Address)) + QString(CMD) + TX_Data;
TX_Data = ToolBox::add_CRC(TX_Data) + '\r';
 
if (Resend)
{
// LastSend = TX_Data;
// TickerEvent[0] = true;
}
Temp = QByteArray(TX_Data.toUtf8());
}
else
{
for (unsigned int a = 0; a < Length; a++)
{
Temp[a] = Data[a];
}
}
 
TTY->sendData(Temp);
 
emit(showTerminal(3, TX_Data));
}
return true;
}
/QMK-Groundstation/trunk/Classes/cConnection.h
0,0 → 1,51
/***************************************************************************
* Copyright (C) 2009 by Manuel Schrape *
* manuel.schrape@gmx.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef CCONNECTION_H
#define CCONNECTION_H
 
#include <QObject>
#include "ToolBox.h"
#include "../global.h"
#include "../SerialPort/ManageSerialPort.h"
 
class cConnection : public QObject
{
Q_OBJECT
 
public:
cConnection();
bool isOpen();
bool Open(QString Address);
bool Close();
bool send_Cmd(char CMD, int Address, char Data[150],unsigned int Length, bool Resend = true);
 
private:
ManageSerialPort *TTY;
bool b_isOpen;
sRxData RxData;
 
private slots:
void slot_newDataReceived(const QByteArray &dataReceived);
 
signals:
void newData(sRxData RxData);
void showTerminal(int Typ, QString Text);
};
 
#endif // CCONNECTION_H