Visual Servoing Platform
version 3.7.0
Toggle main menu visibility
Loading...
Searching...
No Matches
vpParallelPort.cpp
1
/*
2
* ViSP, open source Visual Servoing Platform software.
3
* Copyright (C) 2005 - 2025 by Inria. All rights reserved.
4
*
5
* This software is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 2 of the License, or
8
* (at your option) any later version.
9
* See the file LICENSE.txt at the root directory of this source
10
* distribution for additional information about the GNU GPL.
11
*
12
* For using ViSP with software that can not be combined with the GNU
13
* GPL, please contact Inria about acquiring a ViSP Professional
14
* Edition License.
15
*
16
* See https://visp.inria.fr for more information.
17
*
18
* This software was developed at:
19
* Inria Rennes - Bretagne Atlantique
20
* Campus Universitaire de Beaulieu
21
* 35042 Rennes Cedex
22
* France
23
*
24
* If you have questions regarding the use of this file, please contact
25
* Inria at visp@inria.fr
26
*
27
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29
*
30
* Description:
31
* Parallel port management.
32
*/
33
38
39
#include <visp3/core/vpConfig.h>
40
41
#ifdef VISP_HAVE_PARPORT
42
43
#include <fcntl.h>
44
#include <sys/ioctl.h>
45
#include <sys/stat.h>
46
#include <sys/types.h>
47
#include <unistd.h>
48
49
#include <visp3/io/vpParallelPort.h>
50
51
52
53
BEGIN_VISP_NAMESPACE
54
static
unsigned
char
vpParallelPortData;
55
69
vpParallelPort::vpParallelPort
() : fd(0), device()
70
{
71
device =
"/dev/parport0"
;
72
73
this->open();
74
75
unsigned
char
data = 0;
76
this->
sendData
(data);
77
}
78
85
vpParallelPort::~vpParallelPort
() { this->close(); }
86
96
void
vpParallelPort::open()
97
{
98
fd = ::open(device.c_str(), O_WRONLY);
99
if
(fd < 0) {
100
printf(
"Can't open /dev/parport0\n"
);
101
printf(
"Check if you have write access to /dev/parport0\n"
);
102
perror(
"Open parallel port"
);
103
throw
(
vpParallelPortException
(
vpParallelPortException::opening
,
"Can't open /dev/parport0"
));
104
}
105
106
int
i
;
107
108
ioctl(fd, PPCLAIM);
109
i
= PARPORT_MODE_COMPAT;
110
ioctl(fd, PPSETMODE, &i);
111
i
= IEEE1284_MODE_COMPAT;
112
ioctl(fd, PPNEGOT, &i);
113
}
114
129
void
vpParallelPort::sendData
(
unsigned
char
&data)
130
{
131
ioctl(fd, PPWDATA, &data);
132
133
// Memorise the last sended data to the static variable
134
vpParallelPortData = data;
135
}
136
142
unsigned
char
vpParallelPort::getData
() {
return
vpParallelPortData; }
143
151
void
vpParallelPort::close()
152
{
153
ioctl(fd, PPRELEASE);
154
155
int
err;
156
err = ::close(fd);
157
158
if
(err != 0) {
159
printf(
"Can't close the parallel port\n"
);
160
throw
(
vpParallelPortException
(
vpParallelPortException::closing
,
"Can't close the parallel port"
));
161
}
162
}
163
END_VISP_NAMESPACE
164
#elif !defined(VISP_BUILD_SHARED_LIBS)
165
// Work around to avoid warning: libvisp_core.a(vpParallelPort.cpp.o) has no symbols
166
void
dummy_vpParallelPort() { }
167
#endif
vpParallelPortException
Error that can be emitted by the vpParallelPort class and its derivates.
Definition
vpParallelPortException.h:57
vpParallelPortException::closing
@ closing
Definition
vpParallelPortException.h:66
vpParallelPortException::opening
@ opening
Definition
vpParallelPortException.h:65
vpParallelPort::vpParallelPort
vpParallelPort()
Definition
vpParallelPort.cpp:69
vpParallelPort::~vpParallelPort
virtual ~vpParallelPort()
Definition
vpParallelPort.cpp:85
vpParallelPort::getData
unsigned char getData()
Definition
vpParallelPort.cpp:142
vpParallelPort::sendData
void sendData(unsigned char &data)
Definition
vpParallelPort.cpp:129
BEGIN_VISP_NAMESPACE
Definition
vpMbtDistanceCircle.cpp:55
yolo-centering-task-afma6.i
i
Definition
yolo-centering-task-afma6.py:329
modules
io
src
parallel-port
vpParallelPort.cpp
Generated by
1.17.0