113 lines
2.6 KiB
C++
113 lines
2.6 KiB
C++
//CAT is always master, no receive before request
|
|
|
|
#ifndef SER_H
|
|
#define SER_H
|
|
#include <stdint.h>
|
|
#include <QObject>
|
|
//#include <QString>
|
|
#include <QTimer>
|
|
#include <QSerialPort>
|
|
#include <QVector>
|
|
#include "tslib.h"
|
|
#include "controlBus.h"
|
|
#include "interfaces.h"
|
|
|
|
|
|
#define MAXTELEGRAMLEN 90
|
|
|
|
// display all inputs and outputs in output window:
|
|
//#define PRINTALLDEBUGS 1
|
|
|
|
class T_com : public QObject //, public QPlainTextEdit
|
|
{
|
|
Q_OBJECT
|
|
|
|
// complete send message (protocol frame)
|
|
QByteArray sendBuffer; //[MAXTELEGRAMLEN];
|
|
uint16_t sendLen; // >0: Daten Sendebereit, nach senden wieder auf 0 setzen
|
|
|
|
// right after reception:
|
|
QByteArray rawInput; //[MAXTELEGRAMLEN];
|
|
uint16_t rawInLen; // 0: keine neuen Daten erhalten
|
|
|
|
// QSerialPort *CatSerial = nullptr;
|
|
QSerialPort *CatSerial;
|
|
|
|
uint32_t writeCount = 0;
|
|
|
|
//char oeffneSerialPort();
|
|
char open_Serial_Port();
|
|
void closeSerialPort();
|
|
void receiveByLength(void);
|
|
|
|
private slots:
|
|
void readSomeBytes(void);
|
|
void serialSendComplete(void);
|
|
//void incomingWake(void); //bool LevelOfTheBit);
|
|
void receiveTO(void);
|
|
void ser_ISR100ms();
|
|
|
|
|
|
|
|
public:
|
|
T_com(QObject *parent = nullptr);
|
|
~T_com();
|
|
|
|
QTimer *serRecTime;
|
|
|
|
bool isPortOpen(void);
|
|
|
|
void writeToSerial(const QByteArray &data, uint16_t sendLength);
|
|
|
|
void receiveFixLen(int64_t nrOfbytesToReceive);
|
|
|
|
bool readFromSerial(QByteArray &data, uint16_t &sendLength);
|
|
// retval: true: data available
|
|
|
|
uint32_t getWriteCount() { return writeCount; }
|
|
|
|
/*
|
|
uint8_t getAllPortPins(void);
|
|
// rs232pins: all signals bitwise coded in one byte:
|
|
// readback output: bit 0=TxD(=output) bit2=DTR (=output) bit 6=RTS (=output)
|
|
// unused inputs: bit1=RxD bit 3=DCD bit 5 = RING
|
|
// handshake inputs: bit 4=DSR (0x10) bit 7=CTS (0x80)
|
|
|
|
bool getHSin_CTS(void);
|
|
// return the CTS Handshake input): true= high level (+8V)
|
|
|
|
bool getHSin_DSR(void);
|
|
// return the DSR Handshake input): true= high level (+8V)
|
|
|
|
bool setHSout_RTS(bool hsout);
|
|
// hsout true=positiv voltage +12V false= -12V
|
|
// retval: true=setting OK
|
|
|
|
bool setHSout_DTR(bool hsout);
|
|
// hsout true=positiv voltage +12V false= -12V
|
|
// retval: true=setting OK
|
|
*/
|
|
|
|
signals:
|
|
void receivingFinished();
|
|
void sendingFinished();
|
|
//void wasWokenBySerialHandshake();
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // SER_H
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|