Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
48f4d3ba
Commit
48f4d3ba
authored
Mar 30, 2011
by
James Goppert
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Finished abstracting serial port.
parent
d7e07781
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
293 additions
and
115 deletions
+293
-115
CMakeLists.txt
CMakeLists.txt
+1
-0
qgroundcontrol.pro
qgroundcontrol.pro
+1
-0
SerialInterface.h
src/comm/SerialInterface.h
+171
-0
SerialLink.cc
src/comm/SerialLink.cc
+106
-106
SerialLink.h
src/comm/SerialLink.h
+14
-9
No files found.
CMakeLists.txt
View file @
48f4d3ba
...
...
@@ -394,6 +394,7 @@ set(qgroundcontrolMocSrc
#src/comm/OpalLink.h
src/comm/MAVLinkProtocol.h
src/comm/SerialLinkInterface.h
src/comm/SerialInterface.h
src/comm/UDPLink.h
src/comm/LinkManager.h
src/comm/LinkInterface.h
...
...
qgroundcontrol.pro
View file @
48f4d3ba
...
...
@@ -189,6 +189,7 @@ HEADERS += src/MG.h \
src
/
comm
/
LinkManager
.
h
\
src
/
comm
/
LinkInterface
.
h
\
src
/
comm
/
SerialLinkInterface
.
h
\
src
/
comm
/
SerialInterface
.
h
\
src
/
comm
/
SerialLink
.
h
\
src
/
comm
/
SerialSimulationLink
.
h
\
src
/
comm
/
ProtocolInterface
.
h
\
...
...
src/comm/SerialInterface.h
0 → 100644
View file @
48f4d3ba
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2011 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL 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 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL 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 QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
/**
* @file
* @brief Brief Description
*
* @author James Goppertr <james.goppert@gmail.edu>
*
*/
#ifndef SERIALINTERFACE_H
#define SERIALINTERFACE_H
#include <QIODevice>
#include "qextserialport.h"
/**
* @brief The SerialInterface abstracts low level serial calls
*/
class
SerialInterface
:
public
QObject
{
Q_OBJECT
signals:
void
aboutToClose
();
public:
enum
baudRateType
{
BAUD50
,
//POSIX ONLY
BAUD75
,
//POSIX ONLY
BAUD110
,
BAUD134
,
//POSIX ONLY
BAUD150
,
//POSIX ONLY
BAUD200
,
//POSIX ONLY
BAUD300
,
BAUD600
,
BAUD1200
,
BAUD1800
,
//POSIX ONLY
BAUD2400
,
BAUD4800
,
BAUD9600
,
BAUD14400
,
//WINDOWS ONLY
BAUD19200
,
BAUD38400
,
BAUD56000
,
//WINDOWS ONLY
BAUD57600
,
BAUD76800
,
//POSIX ONLY
BAUD115200
,
BAUD128000
,
// WINDOWS ONLY
BAUD230400
,
// WINDOWS ONLY
BAUD256000
,
// WINDOWS ONLY
BAUD460800
,
// WINDOWS ONLY
BAUD921600
// WINDOWS ONLY
};
enum
dataBitsType
{
DATA_5
,
DATA_6
,
DATA_7
,
DATA_8
};
enum
parityType
{
PAR_NONE
,
PAR_ODD
,
PAR_EVEN
,
PAR_MARK
,
//WINDOWS ONLY
PAR_SPACE
};
enum
stopBitsType
{
STOP_1
,
STOP_1_5
,
//WINDOWS ONLY
STOP_2
};
enum
flowType
{
FLOW_OFF
,
FLOW_HARDWARE
,
FLOW_XONXOFF
};
/**
* structure to contain port settings
*/
struct
portSettings
{
baudRateType
BaudRate
;
dataBitsType
DataBits
;
parityType
Parity
;
stopBitsType
StopBits
;
flowType
FlowControl
;
long
timeout_Millisec
;
};
virtual
bool
isOpen
()
=
0
;
virtual
bool
isWriteable
()
=
0
;
virtual
bool
bytesAvailable
()
=
0
;
virtual
int
write
(
const
char
*
data
,
qint64
size
)
=
0
;
virtual
void
read
(
char
*
data
,
qint64
numBytes
)
=
0
;
virtual
void
flush
()
=
0
;
virtual
void
close
()
=
0
;
virtual
void
open
(
QIODevice
::
OpenModeFlag
flag
)
=
0
;
virtual
void
setBaudRate
(
baudRateType
baudrate
)
=
0
;
virtual
void
setParity
(
parityType
parity
)
=
0
;
virtual
void
setStopBits
(
stopBitsType
stopBits
)
=
0
;
virtual
void
setDataBits
(
dataBitsType
dataBits
)
=
0
;
virtual
void
setTimeout
(
qint64
timeout
)
=
0
;
};
class
SerialQextserial
:
public
SerialInterface
{
Q_OBJECT
private:
QextSerialPort
*
_port
;
signals:
void
aboutToClose
();
public:
SerialQextserial
(
QString
porthandle
,
QextSerialPort
::
QueryMode
mode
)
:
_port
(
NULL
)
{
_port
=
new
QextSerialPort
(
porthandle
,
QextSerialPort
::
Polling
);
//QObject::connect(_port,SIGNAL(aboutToClose()),this,SIGNAL(aboutToClose()));
}
virtual
bool
isOpen
()
{
return
_port
->
isOpen
();
}
virtual
bool
isWriteable
()
{
return
_port
->
isWritable
();
}
// yess, that is mis-spelled, writable
virtual
bool
bytesAvailable
()
{
return
_port
->
bytesAvailable
();
}
virtual
int
write
(
const
char
*
data
,
qint64
size
)
{
return
_port
->
write
(
data
,
size
);
}
virtual
void
read
(
char
*
data
,
qint64
numBytes
)
{
_port
->
read
(
data
,
numBytes
);
}
virtual
void
flush
()
{
_port
->
flush
();
}
virtual
void
close
()
{
_port
->
close
();
}
virtual
void
open
(
QIODevice
::
OpenModeFlag
flag
)
{
_port
->
open
(
flag
);
}
virtual
void
setBaudRate
(
SerialInterface
::
baudRateType
baudrate
)
{
_port
->
setBaudRate
((
BaudRateType
)
baudrate
);
}
virtual
void
setParity
(
SerialInterface
::
parityType
parity
)
{
_port
->
setParity
((
ParityType
)
parity
);
}
virtual
void
setStopBits
(
SerialInterface
::
stopBitsType
stopBits
)
{
_port
->
setStopBits
((
StopBitsType
)
stopBits
);
}
virtual
void
setDataBits
(
SerialInterface
::
dataBitsType
dataBits
)
{
_port
->
setDataBits
((
DataBitsType
)
dataBits
);
}
virtual
void
setTimeout
(
qint64
timeout
)
{
_port
->
setTimeout
(
timeout
);
};
};
class
SerialQserial
{
};
#endif // SERIALINTERFACE_H
src/comm/SerialLink.cc
View file @
48f4d3ba
...
...
@@ -22,7 +22,8 @@
#endif
SerialLink
::
SerialLink
(
QString
portname
,
BaudRateType
baudrate
,
FlowType
flow
,
ParityType
parity
,
DataBitsType
dataBits
,
StopBitsType
stopBits
)
:
SerialLink
::
SerialLink
(
QString
portname
,
SerialInterface
::
baudRateType
baudrate
,
SerialInterface
::
flowType
flow
,
SerialInterface
::
parityType
parity
,
SerialInterface
::
dataBitsType
dataBits
,
SerialInterface
::
stopBitsType
stopBits
)
:
port
(
NULL
)
{
// Setup settings
...
...
@@ -141,7 +142,7 @@ void SerialLink::run()
void
SerialLink
::
checkForBytes
()
{
/* Check if bytes are available */
if
(
port
&&
port
->
isOpen
()
&&
port
->
isWritable
())
if
(
port
&&
port
->
isOpen
()
&&
port
->
isWrit
e
able
())
{
dataMutex
.
lock
();
qint64
available
=
port
->
bytesAvailable
();
...
...
@@ -159,7 +160,6 @@ void SerialLink::checkForBytes()
}
void
SerialLink
::
writeBytes
(
const
char
*
data
,
qint64
size
)
{
if
(
port
&&
port
->
isOpen
())
...
...
@@ -316,7 +316,7 @@ bool SerialLink::hardwareConnect()
port
->
close
();
delete
port
;
}
port
=
new
QextSerialPort
(
porthandle
,
QextSerialPort
::
Polling
);
port
=
new
SerialQextserial
(
porthandle
,
QextSerialPort
::
Polling
);
QObject
::
connect
(
port
,
SIGNAL
(
aboutToClose
()),
this
,
SIGNAL
(
disconnected
()));
port
->
open
(
QIODevice
::
ReadWrite
);
...
...
@@ -380,77 +380,77 @@ qint64 SerialLink::getNominalDataRate()
qint64
dataRate
=
0
;
switch
(
baudrate
)
{
case
BAUD50
:
case
SerialInterface
:
:
BAUD50
:
dataRate
=
50
;
break
;
case
BAUD75
:
case
SerialInterface
:
:
BAUD75
:
dataRate
=
75
;
break
;
case
BAUD110
:
case
SerialInterface
:
:
BAUD110
:
dataRate
=
110
;
break
;
case
BAUD134
:
case
SerialInterface
:
:
BAUD134
:
dataRate
=
134
;
break
;
case
BAUD150
:
case
SerialInterface
:
:
BAUD150
:
dataRate
=
150
;
break
;
case
BAUD200
:
case
SerialInterface
:
:
BAUD200
:
dataRate
=
200
;
break
;
case
BAUD300
:
case
SerialInterface
:
:
BAUD300
:
dataRate
=
300
;
break
;
case
BAUD600
:
case
SerialInterface
:
:
BAUD600
:
dataRate
=
600
;
break
;
case
BAUD1200
:
case
SerialInterface
:
:
BAUD1200
:
dataRate
=
1200
;
break
;
case
BAUD1800
:
case
SerialInterface
:
:
BAUD1800
:
dataRate
=
1800
;
break
;
case
BAUD2400
:
case
SerialInterface
:
:
BAUD2400
:
dataRate
=
2400
;
break
;
case
BAUD4800
:
case
SerialInterface
:
:
BAUD4800
:
dataRate
=
4800
;
break
;
case
BAUD9600
:
case
SerialInterface
:
:
BAUD9600
:
dataRate
=
9600
;
break
;
case
BAUD14400
:
case
SerialInterface
:
:
BAUD14400
:
dataRate
=
14400
;
break
;
case
BAUD19200
:
case
SerialInterface
:
:
BAUD19200
:
dataRate
=
19200
;
break
;
case
BAUD38400
:
case
SerialInterface
:
:
BAUD38400
:
dataRate
=
38400
;
break
;
case
BAUD56000
:
case
SerialInterface
:
:
BAUD56000
:
dataRate
=
56000
;
break
;
case
BAUD57600
:
case
SerialInterface
:
:
BAUD57600
:
dataRate
=
57600
;
break
;
case
BAUD76800
:
case
SerialInterface
:
:
BAUD76800
:
dataRate
=
76800
;
break
;
case
BAUD115200
:
case
SerialInterface
:
:
BAUD115200
:
dataRate
=
115200
;
break
;
case
BAUD128000
:
case
SerialInterface
:
:
BAUD128000
:
dataRate
=
128000
;
break
;
case
BAUD256000
:
case
SerialInterface
:
:
BAUD256000
:
dataRate
=
256000
;
// Windows-specific high-end baudrates
case
BAUD230400
:
case
SerialInterface
:
:
BAUD230400
:
dataRate
=
230400
;
case
BAUD460800
:
case
SerialInterface
:
:
BAUD460800
:
dataRate
=
460800
;
case
BAUD921600
:
case
SerialInterface
:
:
BAUD921600
:
dataRate
=
921600
;
break
;
}
...
...
@@ -553,16 +553,16 @@ int SerialLink::getDataBits()
int
ret
;
switch
(
dataBits
)
{
case
DATA_5
:
case
SerialInterface
:
:
DATA_5
:
ret
=
5
;
break
;
case
DATA_6
:
case
SerialInterface
:
:
DATA_6
:
ret
=
6
;
break
;
case
DATA_7
:
case
SerialInterface
:
:
DATA_7
:
ret
=
7
;
break
;
case
DATA_8
:
case
SerialInterface
:
:
DATA_8
:
ret
=
8
;
break
;
default:
...
...
@@ -577,10 +577,10 @@ int SerialLink::getStopBits()
int
ret
;
switch
(
stopBits
)
{
case
STOP_1
:
case
S
erialInterface
:
:
S
TOP_1
:
ret
=
1
;
break
;
case
STOP_2
:
case
S
erialInterface
:
:
S
TOP_2
:
ret
=
2
;
break
;
default:
...
...
@@ -629,79 +629,79 @@ bool SerialLink::setBaudRateType(int rateIndex)
switch
(
rateIndex
)
{
case
0
:
baudrate
=
BAUD50
;
baudrate
=
SerialInterface
::
BAUD50
;
break
;
case
1
:
baudrate
=
BAUD75
;
baudrate
=
SerialInterface
::
BAUD75
;
break
;
case
2
:
baudrate
=
BAUD110
;
baudrate
=
SerialInterface
::
BAUD110
;
break
;
case
3
:
baudrate
=
BAUD134
;
baudrate
=
SerialInterface
::
BAUD134
;
break
;
case
4
:
baudrate
=
BAUD150
;
baudrate
=
SerialInterface
::
BAUD150
;
break
;
case
5
:
baudrate
=
BAUD200
;
baudrate
=
SerialInterface
::
BAUD200
;
break
;
case
6
:
baudrate
=
BAUD300
;
baudrate
=
SerialInterface
::
BAUD300
;
break
;
case
7
:
baudrate
=
BAUD600
;
baudrate
=
SerialInterface
::
BAUD600
;
break
;
case
8
:
baudrate
=
BAUD1200
;
baudrate
=
SerialInterface
::
BAUD1200
;
break
;
case
9
:
baudrate
=
BAUD1800
;
baudrate
=
SerialInterface
::
BAUD1800
;
break
;
case
10
:
baudrate
=
BAUD2400
;
baudrate
=
SerialInterface
::
BAUD2400
;
break
;
case
11
:
baudrate
=
BAUD4800
;
baudrate
=
SerialInterface
::
BAUD4800
;
break
;
case
12
:
baudrate
=
BAUD9600
;
baudrate
=
SerialInterface
::
BAUD9600
;
break
;
case
13
:
baudrate
=
BAUD14400
;
baudrate
=
SerialInterface
::
BAUD14400
;
break
;
case
14
:
baudrate
=
BAUD19200
;
baudrate
=
SerialInterface
::
BAUD19200
;
break
;
case
15
:
baudrate
=
BAUD38400
;
baudrate
=
SerialInterface
::
BAUD38400
;
break
;
case
16
:
baudrate
=
BAUD56000
;
baudrate
=
SerialInterface
::
BAUD56000
;
break
;
case
17
:
baudrate
=
BAUD57600
;
baudrate
=
SerialInterface
::
BAUD57600
;
break
;
case
18
:
baudrate
=
BAUD76800
;
baudrate
=
SerialInterface
::
BAUD76800
;
break
;
case
19
:
baudrate
=
BAUD115200
;
baudrate
=
SerialInterface
::
BAUD115200
;
break
;
case
20
:
baudrate
=
BAUD128000
;
baudrate
=
SerialInterface
::
BAUD128000
;
break
;
case
21
:
baudrate
=
BAUD230400
;
baudrate
=
SerialInterface
::
BAUD230400
;
break
;
case
22
:
baudrate
=
BAUD256000
;
baudrate
=
SerialInterface
::
BAUD256000
;
break
;
case
23
:
baudrate
=
BAUD460800
;
baudrate
=
SerialInterface
::
BAUD460800
;
break
;
case
24
:
baudrate
=
BAUD921600
;
baudrate
=
SerialInterface
::
BAUD921600
;
break
;
default:
// If none of the above cases matches, there must be an error
...
...
@@ -728,79 +728,79 @@ bool SerialLink::setBaudRate(int rate)
switch
(
rate
)
{
case
50
:
baudrate
=
BAUD50
;
baudrate
=
SerialInterface
::
BAUD50
;
break
;
case
75
:
baudrate
=
BAUD75
;
baudrate
=
SerialInterface
::
BAUD75
;
break
;
case
110
:
baudrate
=
BAUD110
;
baudrate
=
SerialInterface
::
BAUD110
;
break
;
case
134
:
baudrate
=
BAUD134
;
baudrate
=
SerialInterface
::
BAUD134
;
break
;
case
150
:
baudrate
=
BAUD150
;
baudrate
=
SerialInterface
::
BAUD150
;
break
;
case
200
:
baudrate
=
BAUD200
;
baudrate
=
SerialInterface
::
BAUD200
;
break
;
case
300
:
baudrate
=
BAUD300
;
baudrate
=
SerialInterface
::
BAUD300
;
break
;
case
600
:
baudrate
=
BAUD600
;
baudrate
=
SerialInterface
::
BAUD600
;
break
;
case
1200
:
baudrate
=
BAUD1200
;
baudrate
=
SerialInterface
::
BAUD1200
;
break
;
case
1800
:
baudrate
=
BAUD1800
;
baudrate
=
SerialInterface
::
BAUD1800
;
break
;
case
2400
:
baudrate
=
BAUD2400
;
baudrate
=
SerialInterface
::
BAUD2400
;
break
;
case
4800
:
baudrate
=
BAUD4800
;
baudrate
=
SerialInterface
::
BAUD4800
;
break
;
case
9600
:
baudrate
=
BAUD9600
;
baudrate
=
SerialInterface
::
BAUD9600
;
break
;
case
14400
:
baudrate
=
BAUD14400
;
baudrate
=
SerialInterface
::
BAUD14400
;
break
;
case
19200
:
baudrate
=
BAUD19200
;
baudrate
=
SerialInterface
::
BAUD19200
;
break
;
case
38400
:
baudrate
=
BAUD38400
;
baudrate
=
SerialInterface
::
BAUD38400
;
break
;
case
56000
:
baudrate
=
BAUD56000
;
baudrate
=
SerialInterface
::
BAUD56000
;
break
;
case
57600
:
baudrate
=
BAUD57600
;
baudrate
=
SerialInterface
::
BAUD57600
;
break
;
case
76800
:
baudrate
=
BAUD76800
;
baudrate
=
SerialInterface
::
BAUD76800
;
break
;
case
115200
:
baudrate
=
BAUD115200
;
baudrate
=
SerialInterface
::
BAUD115200
;
break
;
case
128000
:
baudrate
=
BAUD128000
;
baudrate
=
SerialInterface
::
BAUD128000
;
break
;
case
230400
:
baudrate
=
BAUD230400
;
baudrate
=
SerialInterface
::
BAUD230400
;
break
;
case
256000
:
baudrate
=
BAUD256000
;
baudrate
=
SerialInterface
::
BAUD256000
;
break
;
case
460800
:
baudrate
=
BAUD460800
;
baudrate
=
SerialInterface
::
BAUD460800
;
break
;
case
921600
:
baudrate
=
BAUD921600
;
baudrate
=
SerialInterface
::
BAUD921600
;
break
;
default:
// If none of the above cases matches, there must be an error
...
...
@@ -822,14 +822,14 @@ bool SerialLink::setFlowType(int flow)
switch
(
flow
)
{
case
FLOW_OFF
:
this
->
flow
=
FLOW_OFF
;
case
SerialInterface
:
:
FLOW_OFF
:
this
->
flow
=
SerialInterface
::
FLOW_OFF
;
break
;
case
FLOW_HARDWARE
:
this
->
flow
=
FLOW_HARDWARE
;
case
SerialInterface
:
:
FLOW_HARDWARE
:
this
->
flow
=
SerialInterface
::
FLOW_HARDWARE
;
break
;
case
FLOW_XONXOFF
:
this
->
flow
=
FLOW_XONXOFF
;
case
SerialInterface
:
:
FLOW_XONXOFF
:
this
->
flow
=
SerialInterface
::
FLOW_XONXOFF
;
break
;
default:
// If none of the above cases matches, there must be an error
...
...
@@ -851,19 +851,19 @@ bool SerialLink::setParityType(int parity)
switch
(
parity
)
{
case
(
int
)
PAR_NONE
:
this
->
parity
=
PAR_NONE
;
this
->
parity
=
SerialInterface
::
PAR_NONE
;
break
;
case
(
int
)
PAR_ODD
:
this
->
parity
=
PAR_ODD
;
this
->
parity
=
SerialInterface
::
PAR_ODD
;
break
;
case
(
int
)
PAR_EVEN
:
this
->
parity
=
PAR_EVEN
;
this
->
parity
=
SerialInterface
::
PAR_EVEN
;
break
;
case
(
int
)
PAR_MARK
:
this
->
parity
=
PAR_MARK
;
this
->
parity
=
SerialInterface
::
PAR_MARK
;
break
;
case
(
int
)
PAR_SPACE
:
this
->
parity
=
PAR_SPACE
;
this
->
parity
=
SerialInterface
::
PAR_SPACE
;
break
;
default:
// If none of the above cases matches, there must be an error
...
...
@@ -886,16 +886,16 @@ bool SerialLink::setDataBits(int dataBits)
switch
(
dataBits
)
{
case
5
:
this
->
dataBits
=
DATA_5
;
this
->
dataBits
=
SerialInterface
::
DATA_5
;
break
;
case
6
:
this
->
dataBits
=
DATA_6
;
this
->
dataBits
=
SerialInterface
::
DATA_6
;
break
;
case
7
:
this
->
dataBits
=
DATA_7
;
this
->
dataBits
=
SerialInterface
::
DATA_7
;
break
;
case
8
:
this
->
dataBits
=
DATA_8
;
this
->
dataBits
=
SerialInterface
::
DATA_8
;
break
;
default:
// If none of the above cases matches, there must be an error
...
...
@@ -918,10 +918,10 @@ bool SerialLink::setStopBits(int stopBits)
switch
(
stopBits
)
{
case
1
:
this
->
stopBits
=
STOP_1
;
this
->
stopBits
=
S
erialInterface
::
S
TOP_1
;
break
;
case
2
:
this
->
stopBits
=
STOP_2
;
this
->
stopBits
=
S
erialInterface
::
S
TOP_2
;
break
;
default:
// If none of the above cases matches, there must be an error
...
...
@@ -941,9 +941,9 @@ bool SerialLink::setDataBitsType(int dataBits)
if
(
isConnected
())
reconnect
=
true
;
disconnect
();
if
(
dataBits
>=
(
int
)
DATA_5
&&
dataBits
<=
(
int
)
DATA_8
)
if
(
dataBits
>=
(
int
)
SerialInterface
::
DATA_5
&&
dataBits
<=
(
int
)
SerialInterface
::
DATA_8
)
{
this
->
dataBits
=
(
D
ataBitsType
)
dataBits
;
this
->
dataBits
=
(
SerialInterface
::
d
ataBitsType
)
dataBits
;
if
(
reconnect
)
connect
();
accepted
=
true
;
...
...
@@ -959,9 +959,9 @@ bool SerialLink::setStopBitsType(int stopBits)
if
(
isConnected
())
reconnect
=
true
;
disconnect
();
if
(
stopBits
>=
(
int
)
S
TOP_1
&&
dataBits
<=
(
int
)
STOP_2
)
if
(
stopBits
>=
(
int
)
S
erialInterface
::
STOP_1
&&
dataBits
<=
(
int
)
SerialInterface
::
STOP_2
)
{
StopBitsType
newBits
=
(
S
topBitsType
)
stopBits
;
SerialInterface
::
stopBitsType
newBits
=
(
SerialInterface
::
s
topBitsType
)
stopBits
;
port
->
setStopBits
(
newBits
);
accepted
=
true
;
...
...
src/comm/SerialLink.h
View file @
48f4d3ba
...
...
@@ -36,7 +36,7 @@ This file is part of the QGROUNDCONTROL project
#include <QThread>
#include <QMutex>
#include <QString>
#include
<qextserialport.h>
#include
"SerialInterface.h"
#include <configuration.h>
#include "SerialLinkInterface.h"
#ifdef _WIN32
...
...
@@ -57,7 +57,12 @@ class SerialLink : public SerialLinkInterface {
//Q_INTERFACES(SerialLinkInterface:LinkInterface)
public:
SerialLink
(
QString
portname
=
""
,
BaudRateType
baudrate
=
BAUD57600
,
FlowType
flow
=
FLOW_OFF
,
ParityType
parity
=
PAR_NONE
,
DataBitsType
dataBits
=
DATA_8
,
StopBitsType
stopBits
=
STOP_1
);
SerialLink
(
QString
portname
=
""
,
SerialInterface
::
baudRateType
baudrate
=
SerialInterface
::
BAUD57600
,
SerialInterface
::
flowType
flow
=
SerialInterface
::
FLOW_OFF
,
SerialInterface
::
parityType
parity
=
SerialInterface
::
PAR_NONE
,
SerialInterface
::
dataBitsType
dataBits
=
SerialInterface
::
DATA_8
,
SerialInterface
::
stopBitsType
stopBits
=
SerialInterface
::
STOP_1
);
~
SerialLink
();
static
const
int
poll_interval
=
SERIAL_POLL_INTERVAL
;
///< Polling interval, defined in configuration.h
...
...
@@ -132,18 +137,18 @@ protected slots:
void
checkForBytes
();
protected:
QextSerialPort
*
port
;
SerialInterface
*
port
;
#ifdef _WIN32
HANDLE
winPort
;
DCB
winPortSettings
;
#endif
QString
porthandle
;
QString
name
;
B
audRateType
baudrate
;
F
lowType
flow
;
P
arityType
parity
;
D
ataBitsType
dataBits
;
S
topBitsType
stopBits
;
SerialInterface
::
b
audRateType
baudrate
;
SerialInterface
::
f
lowType
flow
;
SerialInterface
::
p
arityType
parity
;
SerialInterface
::
d
ataBitsType
dataBits
;
SerialInterface
::
s
topBitsType
stopBits
;
int
timeout
;
int
id
;
...
...
@@ -163,7 +168,7 @@ protected:
bool
hardwareConnect
();
signals:
// Signals are defined by LinkInterface
void
aboutToCloseFlag
();
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment