QextSerialPort
Verfasst: 23. Januar 2008 17:16
Hallo Leute,
ich programmier grad zum ersten mal mit QextSerialPort und hab da so meine Probleme. Ich bin ziemlich sicher dass das senden von einem ASCII String schon funktioniert. Nur beim Empfangen vom port hab ich noch meine Probleme.
Ich möchte einfach Daten empfangen bloss wann weis ich wann daten kommen?
das mit dem Signal readyread() funktioniert so nicht... d.h. er springt erst gar nicht in die receivemsg() funktion.
Weiss jemand Rat?
ich programmier grad zum ersten mal mit QextSerialPort und hab da so meine Probleme. Ich bin ziemlich sicher dass das senden von einem ASCII String schon funktioniert. Nur beim Empfangen vom port hab ich noch meine Probleme.
Ich möchte einfach Daten empfangen bloss wann weis ich wann daten kommen?
Code: Alles auswählen
#include "mainform.h"
#include <qextserialport.h>
mainform::mainform(QWidget *parent)
: QMainWindow(parent), port(NULL)
{
setupUi(this);
port = new QextSerialPort("COM1");
port->setBaudRate(BAUD9600);
port->setFlowControl(FLOW_OFF);
port->setParity(PAR_NONE);
port->setDataBits(DATA_8);
port->setStopBits(STOP_1);
connect(sendPushButton, SIGNAL(clicked()), this, SLOT(send_cmd()));
connect(port, SIGNAL(readyRead()), this, SLOT(receiveMsg()));
openPort();
}
mainform::~mainform()
{
}
void mainform::send_cmd()
{
QString test = QString("message \x0D\x0A");
incomingTextEdit->insertPlainText(test);
port->write(test.toAscii(),test.length());
}
void mainform::receiveMsg()
{
cmdLineEdit->setText("incoming msg");
char buff[1024];
int numBytes;
numBytes = port->bytesAvailable();
if(numBytes > 0)
{
if(numBytes > 1024) numBytes = 1024;
int i = port->read(buff, numBytes);
buff[i] = '\0';
QString msg = buff;
incomingTextEdit->insertPlainText(msg);
}
}
void mainform::closePort()
{
port->close();
qDebug("is open: %d", port->isOpen());
}
void mainform::openPort()
{
port->open(QIODevice::ReadWrite);
qDebug("is open: %d", port->isOpen());
}
Weiss jemand Rat?