Hi,
Hab mal wieder ein kleines Problem und find selbst keine Lösung dafür,
vielleicht könnt ihr mir helfen.
Das Empfangen von Daten funktioniert eig. einwandfrei, aber das senden
will einfach nicht funktionieren.
Hier mal der Code:
1 | #include "com.h"
|
2 | #include <QDebug>
|
3 |
|
4 | com::com()
|
5 | {
|
6 | port = new QextSerialPort("COM2", QextSerialPort::EventDriven);
|
7 | port->setBaudRate(BAUD9600);
|
8 | port->setFlowControl(FLOW_OFF);
|
9 | port->setParity(PAR_NONE);
|
10 | port->setDataBits(DATA_8);
|
11 | port->setStopBits(STOP_1);
|
12 |
|
13 | if(port->open(QIODevice::ReadWrite | QIODevice::Unbuffered))
|
14 | {
|
15 | qDebug()<<"port opened";
|
16 | }
|
17 |
|
18 | QObject::connect(port, SIGNAL(readyRead()), this, SLOT(handleData()));
|
19 | }
|
20 |
|
21 |
|
22 | void com::handleData()
|
23 | {
|
24 | if(sender() == port)
|
25 | {
|
26 | const QByteArray result = port->readAll();
|
27 | uchar tmp = 0;
|
28 |
|
29 | QList<int> data;
|
30 |
|
31 | for(int i = 0; i < result.size(); ++i)
|
32 | {
|
33 | const uchar val = result.at(i);
|
34 | if(i % 2 == 0)
|
35 | {
|
36 | tmp = val;
|
37 | }
|
38 | else
|
39 | {
|
40 | data << (tmp + val);
|
41 | }
|
42 | }
|
43 |
|
44 | qDebug()<<data;
|
45 | }
|
46 | }
|
47 |
|
48 |
|
49 | void com::sendData(QByteArray& data)
|
50 | {
|
51 | QMutex m;
|
52 | m.lock();
|
53 | int i;
|
54 | if(!(i = port->write(data)))
|
55 | {
|
56 | qDebug()<<port->errorString();
|
57 | }
|
58 | m.unlock();
|
59 |
|
60 | qDebug("trasmitted : %d", i);
|
61 | }
|
Wenn ich
1 | port = new QextSerialPort("COM2", QextSerialPort::EventDriven);
|
durch
1 | port = new QextSerialPort("COM2");
|
ersetze funktioniert das senden(ob diese jedoch richtig sind kann ich
nicht sagen da ich nict mehr empfangen kann) jedoch nicht mehr das
Empfangen (readyRead() wir nicht mehr erkannt).
Finde leider nicht wirklich was in der Doku oder in anderen Beispielen.
Hoffe ihr könnt mir bald helfen brauchs für die Schule und muss es bald
abgeben.
lg Eric