Template:LIBGPIOD V2 C EXAMPLE: Difference between revisions
From Variscite Wiki
(Created page with "== libgpiod C Application == [{{#var:LIBGPIOD_URL}} libgpiod] provides bindings for C/C++ applications. C++ examples are available in the libgpiod [{{#var:LIBGPIOD_URL}}/tree/bindings/cxx/examples /tree/bindings/cxx/examples ] directory. Below is a simple C application demonstrating how to use the bindings with GPIO4_IO21: '''Makefile:''' all: main.cpp $(CC) $(CCFLAGS) -Og -lgpiod main.c -g -o hello.bin clean: rm -f hello.bin '''main.c''' <pre> #include <gpiod....") |
No edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== libgpiod C Application == | == libgpiod C++ Application == | ||
[{{#var:LIBGPIOD_URL}} libgpiod] provides bindings for | [{{#var:LIBGPIOD_URL}} libgpiod] provides bindings for C++, Python and Rust applications. C++ examples are available in the libgpiod [{{#var:LIBGPIOD_URL}}/tree/bindings/cxx/examples /tree/bindings/cxx/examples ] directory. | ||
Below is a simple C application demonstrating how to use the bindings with | Below is a simple C application demonstrating how to use the bindings with GPIO0_IO05: | ||
'''Makefile:''' | '''Makefile:''' | ||
<pre> | |||
LDFLAGS = -lgpiodcxx -lgpiod | |||
# Nome do executável e arquivos fonte | |||
TARGET = main | |||
SRCS = main.cpp | |||
all: $(TARGET) | |||
$(TARGET): $(SRCS) | |||
$(CXX) $(SRCS) $(LDFLAGS) -o $(TARGET) | |||
clean: | |||
rm -f $(TARGET) | |||
</pre> | |||
'''main. | '''main.cpp''' | ||
<pre> | <pre> | ||
// SPDX-License-Identifier: GPL-2.0-or-later | |||
// SPDX-FileCopyrightText: 2023 Kent Gibson <warthog618@gmail.com> | |||
/* Minimal example of reading a single line. */ | |||
# | #include <cstdlib> | ||
#include <filesystem> | |||
#include <gpiod.hpp> | |||
#include <iostream> | |||
namespace { | |||
{ | |||
/* Example configuration - customize to suit your situation */ | |||
const ::std::filesystem::path chip_path("/dev/gpiochip0"); | |||
const ::gpiod::line::offset line_offset = 5; | |||
} /* namespace */ | |||
int main() | |||
{ | |||
auto request = ::gpiod::chip(chip_path) | |||
.prepare_request() | |||
.set_consumer("get-line-value") | |||
.add_line_settings( | |||
line_offset, | |||
::gpiod::line_settings().set_direction( | |||
::gpiod::line::direction::INPUT)) | |||
.do_request(); | |||
::std::cout << line_offset << "=" | |||
<< (request.get_value(line_offset) == | |||
::gpiod::line::value::ACTIVE ? | |||
"Active" : | |||
"Inactive") | |||
<< ::std::endl; | |||
return EXIT_SUCCESS; | |||
} | } | ||
</pre> | </pre> |
Latest revision as of 19:52, 10 March 2025
libgpiod C++ Application
[ libgpiod] provides bindings for C++, Python and Rust applications. C++ examples are available in the libgpiod [/tree/bindings/cxx/examples /tree/bindings/cxx/examples ] directory.
Below is a simple C application demonstrating how to use the bindings with GPIO0_IO05:
Makefile:
LDFLAGS = -lgpiodcxx -lgpiod # Nome do executável e arquivos fonte TARGET = main SRCS = main.cpp all: $(TARGET) $(TARGET): $(SRCS) $(CXX) $(SRCS) $(LDFLAGS) -o $(TARGET) clean: rm -f $(TARGET)
main.cpp
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-FileCopyrightText: 2023 Kent Gibson <warthog618@gmail.com> /* Minimal example of reading a single line. */ #include <cstdlib> #include <filesystem> #include <gpiod.hpp> #include <iostream> namespace { /* Example configuration - customize to suit your situation */ const ::std::filesystem::path chip_path("/dev/gpiochip0"); const ::gpiod::line::offset line_offset = 5; } /* namespace */ int main() { auto request = ::gpiod::chip(chip_path) .prepare_request() .set_consumer("get-line-value") .add_line_settings( line_offset, ::gpiod::line_settings().set_direction( ::gpiod::line::direction::INPUT)) .do_request(); ::std::cout << line_offset << "=" << (request.get_value(line_offset) == ::gpiod::line::value::ACTIVE ? "Active" : "Inactive") << ::std::endl; return EXIT_SUCCESS; }