I just created a repo on github containing a quick and dirty port of my 
LinuxGpio classes to JAVA:

https://github.com/RobertPHeller/JAVALinuxGPIO

The code is not tested and probably not optimal, but should be enough to get 
someone started.  Should be runnable by a non-priv. user, so long as that user 
is in the gpio group.

At Thu, 24 Jun 2021 07:17:59 -0400 (EDT) [email protected] wrote:

> 
> At Thu, 24 Jun 2021 03:47:49 -0700 (PDT) [email protected] wrote:
> 
> > 
> > I have complex Java application where using GPIO is only part of it.
> 
> OK, probably the "easiest" (and Linux-only) way to add GPIO access is use the 
> sysfs interface.
> 
> If you are at all familure with C++, there is C++ code to do that here:
> 
> https://github.com/bakerstu/openmrn/blob/master/src/os/LinuxGpio.hxx
> 
> and Tcl code here:
> 
> https://github.com/RobertPHeller/ModelRRSystem/blob/master/trunk/Scripts/LinuxGpio/LinuxGpio.tcl
> 
> It works like this:
> 
> You set up a GPIO "pin" by writing its number to
> 
> /sys/class/gpio/export
> 
> This "creates" a directory named /sys/class/gpio/gpioN (where N is the GPIO 
> number) which contains these files:
> 
> direction -- read/write direction ('in' or 'out')
> value     -- read/write value ('0' or '1')
> 
> If you are in the gpio group, you don't need to be root to access these files.
> 
> You should be able to code this with just Java's standard file I/O classes -- 
> no need for any C/C++ interface code.
> 
> Note: this will work on any Linux system with GPIO pins, include Beagle 
> boards, Raspberry Pis, Banana Pis, Orange Pis, etc. (Some Linux variants will 
> need udev rules to help with file ownership and permissions.)
> 
> (There is also a sysfs interface for PWM and Analog pins, in case that is 
> what 
> you need to access.)
> 
> > 
> > Dátum: Å¡tvrtok 24. júna 2021, Ä as: 10:48:10 UTC+2, 
> > odosielateľ: 
> > [email protected]
> > 
> > > Is there a base reason to use Java in this project?
> > >
> > > By design Java has a high separation from the hardware.
> > > Accessing the hardware (GPIo) is not simple.
> > > Doing this on Linux is anyhow not simple due the same reason: Linux 
> > > separates the userspace from the hardware.
> > >
> > > You better look into C/C++ for hardware access.
> > > The ultimate speed of the application will also improve.
> > >
> > > Gwen
> > >
> > > Op do 24 jun. 2021 om 08:08 schreef Radovan Chovan <[email protected]>:
> > >
> > >> Thanks.
> > >> I need to use Debian 10.3 and display GEN4-4DCAPE-70CT-CLB from 4D 
> > >> Systems.
> > >> I will try another project for java gpio https://github.com/koert/gpio
> > >> Do you know something else like libbulldog?
> > >>
> > >> Dátum: streda 23. júna 2021, Ä as: 16:32:35 UTC+2, 
> > >> odosielateľ: 
> > >> RobertCNelson
> > >>
> > >>> On Wed, Jun 23, 2021 at 8:39 AM Radovan Chovan <[email protected]> 
> > >>> wrote: 
> > >>> > 
> > >>> > In the past I used java gpio library libbulldog. 
> > >>> > 
> > >>> > description from author of library: 
> > >>> > https://groups.google.com/g/beagleboard/c/QkdoypqrTPQ/m/L7URLQ1dCAAJ 
> > >>> > 
> > >>> > http://www.libbulldog.org ... page not found 
> > >>> > 
> > >>> > Now I am using Debian 10.3 with kernel 4.19.94-ti-r42 in Beaglebone 
> > >>> Black. 
> > >>> > 
> > >>> > Board is detected via command Board board = Platform.createBoard(); 
> > >>> > but now I get error: 
> > >>> > 
> > >>> > java.lang.ArrayIndexOutOfBoundsException: 0 
> > >>> > at 
> > >>> org.bulldog.beagleboneblack.sysfs.BBBSysFs.getCapeManager(BBBSysFs.java:23)
> > >>>  
> > >>> > ... 
> > >>> > at org.bulldog.core.platform.Platform.createBoard(Platform.java:13) 
> > >>> > 
> > >>> > From BBBSysFs file: 
> > >>> > 
> > >>> > private String SYSFS_DEVICES_PATH = "/sys/devices"; 
> > >>> > return getFilesInPath(this.SYSFS_DEVICES_PATH, "bone_capemgr")[0]; 
> > >>> > 
> > >>> > but path sys/devices/bone_capemgr doesn't exist. 
> > >>> > 
> > >>> > I think problem is in newer kernel: 
> > >>> > 
> > >>> https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Where_did_the_slots_file_go.3F
> > >>>  
> > >>>
> > >>> Correct, kernel is too new for that library.. 
> > >>>
> > >>> Reboot with 3.8.13, (if it even boots..) 
> > >>>
> > >>> Regards, 
> > >>>
> > >>> -- 
> > >>> Robert Nelson 
> > >>> https://rcn-ee.com/ 
> > >>>
> > >> -- 
> > >> For more options, visit http://beagleboard.org/discuss
> > >> --- 
> > >> You received this message because you are subscribed to the Google 
> > >> Groups 
> > >> "BeagleBoard" group.
> > >> To unsubscribe from this group and stop receiving emails from it, send 
> > >> an 
> > >> email to [email protected].
> > >> To view this discussion on the web visit 
> > >> https://groups.google.com/d/msgid/beagleboard/08bc6689-17dd-47f6-bcad-094c9774ee53n%40googlegroups.com
> > >>  
> > >> <https://groups.google.com/d/msgid/beagleboard/08bc6689-17dd-47f6-bcad-094c9774ee53n%40googlegroups.com?utm_medium=email&utm_source=footer>
> > >> .
> > >>
> > >
> > 
> 

-- 
Robert Heller             -- Cell: 413-658-7953 GV: 978-633-5364
Deepwoods Software        -- Custom Software Services
http://www.deepsoft.com/  -- Linux Administration Services
[email protected]       -- Webhosting Services
   

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/20210624130327.66440220C84%40sharky4.deepsoft.com.

Reply via email to