Giter Club home page Giter Club logo

Comments (7)

pjueon avatar pjueon commented on July 28, 2024 2

@ShimmyShaman Can you check this issue please?

from jetsongpio.

ShimmyShaman avatar ShimmyShaman commented on July 28, 2024 1

As long as the two channels are different channels the usage is okay. There should've been more error detail (at least to the console) for why the edge file cannot be opened (submitted pull request addresses this).

Try again with that, and at least find out why.

If not then I won't get my hands on my Jetson device for another 2-3 days to check it out.

from jetsongpio.

ShimmyShaman avatar ShimmyShaman commented on July 28, 2024 1

Yeap, right on, a file wasn't being closed when it should've been. Good error report.

Added pull request. The files get closed now and the records don't pile up in /proc/$pid/fd

from jetsongpio.

frostcza avatar frostcza commented on July 28, 2024 1

Thanks! Now it runs fine.

from jetsongpio.

frostcza avatar frostcza commented on July 28, 2024

Thanks for the reply. I added the std::perror() and tried again.
I got an extra message:

sysfs/edge open: Too many open files

And I checked the /proc/$pid/fd. There are hundreds of records like:

/sys/devices/2200000.gpio/gpiochip0/gpio/gpio428/value
and
/sys/devices/2200000.gpio/gpiochip0/gpio/gpio445/value

from jetsongpio.

frostcza avatar frostcza commented on July 28, 2024

I found it is irrelevant to multi-threading. If I run it independently on a single channel for a long time, I will get the same error.
The complete code is as below.

#include <chrono>
#include <thread>
#include <signal.h>
#include <sys/time.h>
#include <JetsonGPIO.h>

static bool end_this_program = false;
void signalHandler(int s) { end_this_program = true; }
void delay(int s) { std::this_thread::sleep_for(std::chrono::seconds(s)); }


int main()
{
    signal(SIGINT, signalHandler);
    int pwm_input = 11; 
    GPIO::setmode(GPIO::BOARD);
    GPIO::setup(pwm_input, GPIO::IN);
    struct timeval start, end;
    int high;

    while (!end_this_program) 
    {
        printf("start to listen...\n");
        GPIO::wait_for_edge(pwm_input, GPIO::Edge::RISING);
        gettimeofday(&start,NULL);
        GPIO::wait_for_edge(pwm_input, GPIO::Edge::FALLING);
        gettimeofday(&end,NULL);
        high = end.tv_usec - start.tv_usec;
        printf("high voltage time: %d us\n", high);
        if(high>1500 && high<=2000)
        {
            printf("received save flag\n");
        }
    }

    GPIO::cleanup();
    return 0;
}

from jetsongpio.

pjueon avatar pjueon commented on July 28, 2024

@frostcza Thank you for confirming and the error report.
@ShimmyShaman Thank you for your help.

Merged the pull request. Closed the issue.

from jetsongpio.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.