http://qs1969.pair.com?node_id=11125116


in reply to Re^12: Controlling USB on Raspberry Pi
in thread Controlling USB on Raspberry Pi

Rewriting your code like this should help

Thank you...
That has given me confidence that I am going in the right direction :)

There's a definition issue on read_file but that is unused so I have commented it out to test it. As I expected, but cannot explain, your code works as expected provided the GPIO is already exported. Your export code doesn't work and fails with Could not open /sys/class/gpio/gpio20/direction: Permission denied at afoken.pl line 12.

The module I am creating has the same issue. In it's constructor I am exporting the two GPIO pins - except I cannot do it by writing to the psuedo files. The only way I have found thus far is a system call to the gpio utility.

package Curtains::Control; use strict; my $path = '/sys/class/gpio'; my $o_pin = 20; my $c_pin = 21; sub new { # open my $export, '>', "$path/export" or die("Unable to export the + control pins"); # print $export "$o_pin\n"; # print $export "$c_pin\n"; # close $export; system("gpio export $o_pin high"); system("gpio export $c_pin high"); my $state = { STATE => 'UNKNOWN', }; return bless $state; }
If I uncomment the four lines at the start of sub new, then it works if the GPIO pins are already exported. This bit of code does not export them although I do not get an error here. I get an error further down the line when I try to change them. Making the system calls works well because I can initialise the state at the same time but I was still wanting to avoid system if I could...
Perhaps that will be a later update to the software!