4DPi-32-II
Datasheet
Revision 2.19
Copyright © 2023 4D Systems
Content may change at any time. Please refer to the resource centre for latest documentation.
Contents
1. Description
3
2. Features
4
3. Pin Configuration and Summary
5
4. Connecting the Display to the Pi
7
4.1. Hardware Connection
7
4.2. Software Download/Installation
8
4.3. Calibrating the Touch Screen
10
4.4. Change the Display Orientation
11
4.5. SPI Frequency and Compression
12
4.6. Backlight Control
13
4.7. Parameters Listing
14
4.8. HDMI or 4DPi Output
14
4.9. DPI Adjustment
15
5. Display Module Part Numbers
16
6. Latest Kernel Versions
16
7. Mechanical Details
17
8. Schematic Diagram
18
9. Specifications
19
10. Appendix 1 - Code Examples - Push Buttons
21
10.1. Example for communicating to Push Buttons, for C language
21
10.2. Example for communicating to Push Buttons, for Python language
22
10.3. Example for Shutdown and Reset buttons, for C language
24
10.4. Example for Shutdown and Reset buttons, for Python language
26
11. Revision History
4D Systems
28
DATASHEET
Page 2 of 28
4DPi-32-II
Description
1. Description
The 4DPi-32-II (Revision 2.x Hardware) is a 3.2" Primary Display for the Raspberry Pi, which plugs
directly on top and displays the primary output like what is normally sent to the HDMI or Composite
output. It features an integrated Resistive Touch panel, enabling the 4DPi-32-II to function with the
Raspberry Pi without the need for a mouse.
Communication between the 4DPi-32-II and the Raspberry Pi is interfaced with a high-speed 48Mhz
SPI connection, which uses an onboard processor for direct command interpretation and SPI
communication compression, and features a customised DMA-enabled kernel. This combination
allows this display to output 25FPS when displaying a typical image/video and can achieve higher
depending on if the image can be compressed.
The 4DPi-32-II is designed to work with the Raspberry Pi Operating System (previously named
Raspbian) running on the Raspberry Pi, as that is the official Raspberry Pi operating system. It is also
compatible with Pixel.
Note
• 4DPi-32-II Hardware states 4DPi-32 as the part number but is identifiable as the HW Rev of the PCB is 2.0
or above.
• Raspberry Pi is a trademark of the Raspberry Pi Foundation, and all references to the words 'Raspberry Pi'
or the use of its logo/marks are strictly about the Raspberry Pi product, and how this product is
compatible with but is not associated with the Raspberry Pi Foundation in any way.
4D Systems
DATASHEET
Page 3 of 28
4DPi-32-II
Features
2. Features
• Universal 3.2" Primary Display for the Raspberry Pi.
• Compatible with Raspberry Pi A+, B+, Pi2, Pi3, Pi3 B+, Pi4, Pi Zero, Pi Zero W and Pi Zero 2 W.
Revision 2.x hardware is not compatible with older A or B models.
• 320x240 QVGA Resolution, RGB 65K true-to-life colours, TFT Screen with integrated 4-wire
Resistive Touch Panel.
• Display full GUI output / primary output, just like a monitor connected to the Raspberry Pi
• High -Speed 48MHz SPI connection to the Raspberry Pi, featuring SPI compression technology.
• The typical frame rate of 25 Frames per second (FPS), is higher if the image can be compressed
further by the kernel. Lower if no compression is possible.
• Powered directly off the Raspberry Pi, no external power supply is required.
• On/Off or PWM controlled backlight, selectable by onboard jumper.
• On board EEPROM for board identification, following the HAT standard.
• Module dimensions: 57.3 x 92.4 x 20.5mm (including corner plates).
• Weighing ~ 55g.
• Display Viewing Area: 48.60 x 64.80mm
• 4x corner plates with 2.6mm holes for mechanical mounting.
• RoHS and CE Compliant.
4D Systems
DATASHEET
Page 4 of 28
4DPi-32-II
Pin Configuration and Summary
3. Pin Configuration and Summary
P1 Pinout (Raspberry Pi Connector – Female Connector)
Pin
Symbol
I/O
1
+5V
P
+5V Supply Pin, connected to the main 5V supply of the
Raspberry Pi
2
+3.3V
P
+3.3V Supply Pin, connected to the main 3.3V supply of the
Raspberry Pi.
3
5V
P
+5V Supply Pin, connected to the main 5V supply of the
Raspberry Pi
4
SDA1
I/O
5
GND
P
Ground Pin, connected to the main system Ground of the
Raspberry Pi
6
SCL1
O
I2C SCL1
7
GPIO14
I/O
GPIO on the Raspberry Pi - unused
8
GPIO4
I/O
GPIO on the Raspberry Pi - unused
9
GPIO15
I/O
GPIO on the Raspberry Pi - unused
10
GND
P
11
GPIO18
I/O
12
PENIRQ
I
Interrupt for the touchscreen controller
13
GND
P
Ground Pin, connected to the main system Ground of the
Raspberry Pi
14
KEYIRQ
I
Interrupt for the push buttons
15
GPIO23
I/O
GPIO on the Raspberry Pi - unused
16
GPIO22
I/O
GPIO on the Raspberry Pi - unused
17
GPIO24
I/O
GPIO on the Raspberry Pi - unused
18
+3.3V
P
+3.3V Supply Pin, connected to the main 3.3V supply of the
Raspberry Pi
19
GND
P
Ground Pin, connected to the main system Ground of the
Raspberry Pi
4D Systems
Description
I2C SDA1
Ground Pin, connected to the main system Ground of the
Raspberry Pi
GPIO on the Raspberry Pi – Can be used for PWM Backlight,
else unused
DATASHEET
Page 5 of 28
4DPi-32-II
Pin Configuration and Summary
Pin
Symbol
I/O
Description
20
MOSI
O
SPI MOSI Pin
21
GPIO25
I/O
22
MISO
I
SPI MISO Pin
23
SPI-CS0
O
SPI Chip Select 0 – Used for Xilinx Processor for Display, to
Raspberry Pi
24
SCK
O
SPI SCK Clock Pin
25
SPI-CS1
O
SPI Chip Select 1 – unused
26
GND
P
Ground Pin, connected to the main system Ground of the
Raspberry Pi
27
ID-SC
O
I2C ID EEPROM
28
ID-SD
I/O
I2C ID EEPROM
29
GND
P
30
GPIO5
I/O
GPIO on the Raspberry Pi - unused
31
GPIO12
I/O
GPIO on the Raspberry Pi - unused
32
GPIO6
I/O
GPIO on the Raspberry Pi - unused
33
GND
P
34
GPIO13
I/O
GPIO on the Raspberry Pi - unused
35
GPIO16
I/O
GPIO on the Raspberry Pi - unused
36
GPIO19
I/O
GPIO on the Raspberry Pi - unused
37
GPIO20
I/O
GPIO on the Raspberry Pi - unused
38
GPIO26
I/O
GPIO on the Raspberry Pi - unused
39
GPIO21
I/O
GPIO on the Raspberry Pi - unused
40
GND
P
GPIO on the Raspberry Pi - unused
Ground Pin, connected to the main system Ground of the
Raspberry Pi
Ground Pin, connected to the main system Ground of the
Raspberry Pi
Ground Pin, connected to the main system Ground of the
Raspberry Pi
Note
• I = Input, O = Output, P = Power
• The onboard processor of the 4DPi-32-II uses one of the Chip Select(CS) pins on the Raspberry Pi's SPI Bus
(SPI-CS0). There is SPI-CS1 still available for use by the User.
• The on-board Touch Screen Controller utilises the I2C bus (SDA1, SCL1) to communicate to the Raspberry
Pi. The SPI Bus can communicate with other devices also, so is not restricted only to the 4DPi's touch
controller.
4D Systems
DATASHEET
Page 6 of 28
4DPi-32-II
Connecting the Display to the Pi
4. Connecting the Display to the Pi
4.1. Hardware Connection
The 4DPi-32-II is easily connected to a Raspberry Pi, by simply aligning the Female 40-way header
with the Raspberry PI's Male 40-way header, and connecting them - ensuring the aligning is correct
and all pins are seated fully and correctly.
Note
The 4DPi-32-II is supported only by the 40-way header, and therefore pressing on the touch screen may result
in the 4DPi-32-II moving towards the Raspberry Pi, and therefore the circuitry touching the Raspberry Pi. This
could result in damage to either product if a short circuit were to occur. It is therefore highly encouraged to
mount the display and attach the Pi to the mounted display.
If development is desired on the bench before the mounting of the display, please ensure some sort
of support is provided between the 4DPi-32-II and the Raspberry Pi so they do not touch
inadvertently.
Included in the box is a small double-sided sticky rubber pad. This is optional, however, can be
placed on the top of the Ethernet connector of the Raspberry Pi, to provide some support to the
display.
4D Systems
DATASHEET
Page 7 of 28
4DPi-32-II
Software Download/Installation
4.2. Software Download/Installation
4D Systems has prepared a custom DMA-enabled kernel for use with the Raspberry Pi Operating
System (previously named Raspbian OS), which is available for download as a single package. This
can be installed over your existing OS installation, or it can be applied over a fresh image. We
recommend that you apply it over a fresh image.
If you are starting from a fresh image, start from Step 1, or else skip to step 3 if you already have an
OS image and want to apply this kernel to that. If you are not installing from a fresh image and you
encounter issues, we won't know the settings of your OS so please try and use a fresh image to
determine any modifications that conflict with our kernel release. If you are running an OS with a
Kernel version later than our Kernel Pack, you might encounter problems. Please contact support if
you have problems. If you already have a custom Kernel, then applying our Kernel Pack over your
custom Kernel will likely stop your previous modifications from working. You will need to build the
kernel from scratch using the steps below.
STEPS (recommendations):
1. Install a fresh operating system as discussed on the Raspberry Pi website. Enable SSH and Wi-Fi
as preferred.
2. Connect the 4DPi and insert the uSD card into the Raspberry Pi. You will need network
connectivity to proceed with the installation. A monitor, keyboard and mouse are required if not
using SSH. SSH can be configured in Step 1. Power on the Raspberry Pi and make sure it is
connected to your network.
3. Login to the Raspberry Pi using the standard 'pi' and 'raspberry' credentials or as configured in
Step 1. If SSH is not used, open the Terminal app.
4. You are welcome to perform a system update if prompted, but please take note that if you
install a newer kernel than what our Kernel Pack offers, then you could encounter problems.
Therefore, it's not advisable to update the system, as this could update the Kernel.
5. Typically, on modern versions of the Pi OS, this following step is not required or is done
automatically. However, it is here for reference. Expand the file system on the downloaded image
using raspi-config (submenu Expand Filesystem). After exiting raspi-config a reboot is needed.
$ sudo raspi-config
$ sudo reboot
6. Once rebooted, you need to do an apt-get upgrade , because doing this after applying the Kernel
Pack will render the 4DPi modifications disabled. Please note that doing an upgrade could
change your current Kernel which could make the version installed newer than the Kernel Pack
you are about to install next. The Kernel pack must be applied to a kernel very close (a newer
Kernel Pack is generally OK) if not identical to the kernel your OS is running, or there will be
issues.
7. Log into your Raspberry Pi again, you will need to download and install the Kernel Pack which
supports the 4DPi. The following step requires sudo root access.
4D Systems
DATASHEET
Page 8 of 28
4DPi-32-II
Software Download/Installation
8. To download and install files, enter the following commands in terminal/shell/SSH to download
the kernel from the 4D Systems Server:
$ wget https://4dsystems.com.au/download/14644/ -O gen4-hats.tar.gz
• Then extract the kernel pack:
$ sudo tar --keep-directory-symlink -xzvf gen4-hats.tar.gz -C /
• If you encounter issues running the above command, try adding --no-same-owner
$ sudo tar --no-same-owner --keep-directory-symlink -xzvf gen4-hats.tar.gz -C /
• The package selects the kernel required for the Raspberry Pi model, automatically. If you
want to check for the kernel packages released by 4D systems, proceed to the Latest Kernel
Versions section.
9. Reboot the Raspberry Pi by running the command
sudo reboot now
10. The desktop should begin to show on the 4DPi once the Raspberry Pi has booted.
11. Doing an apt-get upgrade after the Kernel Pack has been installed, will disable the 4DPi and its
modifications, as the modules and Kernel would be updated in this process. To reenable, be sure
to download the latest Kernel Pack (check this datasheet again if there has been an updated
version) and perform the same steps to get up and running again. Results may vary, and it's
always advisable to apply the 4DPi Kernel Pack to a fresh image, but this is not always possible.
Warning
An upgrade should only be done if the latest RPi OS kernel is supported by the latest 4D kernel pack.
Otherwise, installing the 4D kernel pack will downgrade the kernel and problems may occur.
12. ADVANCED USERS: If you need to make custom modifications to your Kernel, and want the
4DPi to function, you will need to build the Kernel from the source, and include the 4DPi files in
the process. The link to our source is on our website, along with the steps required to add in the
4DPi files so this can be enabled in menuconfig while building the Kernel.
Note
• It is advisable to use the RPi OS release with a matching kernel version as one of the latest 4DPi packages
that you plan to use. If support for a newer version is not yet available, please raise a ticket for assistance.
• RPi OS based on Debian Bullseye is not fully compatible with our kernel release. Please use the latest
Legacy version which is based on Debian Buster instead.
4D Systems
DATASHEET
Page 9 of 28
4DPi-32-II
Calibrating the Touch Screen
4.3. Calibrating the Touch Screen
Each 4DPi which is shipped from the 4D Systems factory is slightly different, in the sense that each
of the touch screens has a slightly different calibration. To get the best from your 4DPi, you will need
to calibrate the display, so it is as accurate as possible.
To calibrate the touch screen, the xinput_calibrator is required, and the following steps should be
carried out. Make sure the Desktop is not running before you start, quit the desktop if it is and return
to the terminal prompt.
Note
Only resistive touch display modules could be calibrated.
1. Install xinput_calibrator (if not installed by default) by running this command in the terminal.
sudo apt-get install xinput-calibrator
2. Install the event device input driver:
sudo apt-get install xserver-xorg-input-evdev
3. Rename 10-evdev.conf file to 45-evdev.conf.
sudo mv /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf
4. Check if evdev.conf has a higher number than libinput.conf.
ls /usr/share/X11/xorg.conf.d/
• The user should get something like this:
10-quirks.conf 40-libinput.conf 45-evdev.conf 99-fbturbo.conf
5. Perform a reboot
sudo reboot now
4D Systems
DATASHEET
Page 10 of 28
4DPi-32-II
Change the Display Orientation
6. Reconnect to SSH and run xinput calibrator.
DISPLAY=:0.0 xinput_calibrator
• Perform the calibration and copy results. The result should be something like this:
Section "InputClass"
Identifier "calibration"
MatchProduct "AR1020 Touchscreen"
Option "Calibration" "98 4001 175 3840"
Option "SwapAxes" "0"
EndSection
7. You may test the changes after xinput calibrator ends. To make the changes permanent, paste
the results to /etc/X11/xorg.conf.d/99-calibration.conf .
sudo nano /etc/X11/xorg.conf.d/99-calibration.conf
8. Save the file and perform a reboot
sudo reboot now
9. The Display should now be calibrated.
4.4. Change the Display Orientation
To change the display orientation, simply edit the /boot/cmdline.txt file
Add the parameter below after the console parts in the parameter list:
4d_hats.rotate = 90
And change this to have the value of 0, 90, 180 or 270. It should look something like this:
console=serial0,115200 console=tty1 4d_hats.rotate=90 root= (etc etc)
Save the file and restart your Raspberry Pi.
The touch screen will automatically remap the alignment thanks to the custom kernel.
After changing the Display Orientation, you need to calibrate again the screen.
4D Systems
DATASHEET
Page 11 of 28
4DPi-32-II
SPI Frequency and Compression
4.5. SPI Frequency and Compression
The 4DPi can be adjusted to work with a range of SPI Frequencies and levels of compression,
depending on the requirements of the product/project.
Increasing the frequency can result in a higher Frame Rate (FPS), however, will use more power and
processor time. Increasing the level of compression can also result in a higher FPS but may cause the
display to corrupt. By default, an SPI Frequency of 48Mhz is used, with a Compression level of 7.
The following parameters are the defaults in the /boot/cmdline.txt file and can be edited to adjust
the Frequency and Compression level.
4d_hats.sclk=48000000
4d_hats.compress=7
Setting compress to 1 will enable the kernel to control the level of compression based on the
frequency selected. This however is not guaranteed to have a good result and may require manually
setting the compression level of corruption on the display is experienced.
If corruption or display anomalies occur at any given compression level, try to lower it by 1 value and
check if this has improved.
Note
Changing the frequency and compression requires a restart of the Raspberry Pi.
4D Systems
DATASHEET
Page 12 of 28
4DPi-32-II
Backlight Control
4.6. Backlight Control
The backlight is controllable in two possible ways. One is using simple on/off control, which is done
by sending a GPIO command to the onboard processor, which then turns the backlight on and off.
The other is using a DMA-PWM output from the Raspberry PI and controlling the backlight
brightness.
The control of the backlight is selected using the Jumper J1, selecting ON/OFF or DMA control. For
the simple ON/OFF control GPIO18 is used.
The backlight brightness can be controlled from the terminal or a bash script.
Executing the following command will control the backlight.
• To turn the backlight OFF:
sudo sh -c 'echo 0 > /sys/class/backlight/4d-hats/brightness'
• To turn the backlight ON:
sudo sh -c 'echo 1 > /sys/class/backlight/4d-hats/brightness'
• To control the backlight using DMA-PWM, ensure that the Jumper J1 is on PWM.
The following command can be used to set the backlight from 0 to 100%.
sudo sh -c 'echo 31 > /sys/class/backlight/4d-hats/brightness'
The above will set the backlight to 100%. Simply change the 'echo 31' to anything from 0 to 31.
4D Systems
DATASHEET
Page 13 of 28
4DPi-32-II
Parameters Listing
4.7. Parameters Listing
The following is a list of all the custom parameters used by the 4DPi.
rotate: Screen rotation 0/90/180/270 (int)
compress: SPI compression 0/1/2/3/4/5/6/7 (int)
sclk: SPI clock frequency (long)
Valid SPI Frequency values (4d-hats.sclk):
Values can be almost anything. This has been tested up to 64Mhz. Common values would
include 64000000 (64MHz), 48000000 (Default), 32000000, 24000000 etc.
Valid Compression values (4d-hats.compress):
0 (compression off)
1 (compression on, auto set based on sclk value)
2 (lowest), 3, 4, 5, 6, 7 (highest compression)
These parameters can be set or read from the /boot/cmdline.txt file, and they can be read from the /
sys/module/4d_hats/parameters/ directory.
For example:
cat /sys/module/4d_hats/parameters/rotate
Will display the current rotation saved.
4.8. HDMI or 4DPi Output
To switch the X Windows output being displayed on 4DPi or HDMI output, X can be launched using
either of the following commands:
startx -- -layout TFT
startx -- -layout HDMI
Alternatively, these commands do the same thing:
FRAMEBUFFER=/dev/fb1 startx
startx
4D Systems
DATASHEET
Page 14 of 28
4DPi-32-II
DPI Adjustment
4.9. DPI Adjustment
It is possible to change the DPI output of the 4DPi in the same way as other LXDE-based systems.
• Login as pi and open terminal
• Check the current DPI settings by running this command:
xrdb -query -all
• The current dpi is listed next to the Xft.dpi listing.
• You can change the DPI by doing this.
• Edit the following file, and then merge it:
nano ~/.Xresources
• Add this line to the file: Xft.dpi: 75 .
• This will set the DPI to 75.
• Save and exit the file.
• Merge it so the value gets used, by doing the following:
xrdb -merge ~/.Xresources
• You can now check the DPI settings.
xrdb -query -all
• Reboot the Pi, and your changes should take effect.
Changing the DPI can make the screen blurry, so take care when adjusting these values. If you get to
a point where it is unreadable, SSH into your Pi and change the value back to something reasonable.
Ideally, DPI is set based on your resolution, however, for small-resolution displays, it can be desirable
to make the DPI smaller so you can fit more on the screen.
4D Systems
DATASHEET
Page 15 of 28
4DPi-32-II
Display Module Part Numbers
5. Display Module Part Numbers
The following is a breakdown of the part numbers and what they mean.
Example:
• 4DPi-32-II
4DPi - Display Family
32 - Display size (3.2")
II - Hardware Revision 2.0 and higher
6. Latest Kernel Versions
Here is the list of the kernel patches released by 4D systems.
Latest releases:
• gen4-hats_5-10-103.tar.gz
• gen4-hats_5-15-32_32bit.tar.gz (refer to the 2nd point from the note below)
Previous releases:
• gen4-hats_5-10-76-4DPi.tar.gz
• gen4-hats_4-19-57-v7l+_v1.0.tar.gz
• gen4-hats_5-10-63.tar.gz
• gen4-hats_4-14-34_v1.1.tar.gz
• gen4-hats_5-4-68.tar.gz
• gen4-hats_4-9-80_v1.1.tar.gz
• gen4-hats_4-9-59_v1.2.tar.gz
Note
1. It is highly advisable to use a Raspberry Pi OS release with matching kernel version (first 2 numbers and
3rd number need to be less than or equal) as the Kernel Pack you decide to use. Please refer to step 1
under the Software Download/Installation section regarding current recommendations.
For example, if your OS uses Kernel 5.4.60, then applying our 5.4.68 Kernel Pack is a good match.
Example 2, If your OS uses 5.4.79, or 5.5.10, then applying the 5.4.68 Kernel Pack likely would not be the
best idea as it would be a downgrade, and some things may not function correctly.
2. This kernel package is versions higher than the recommended latest Buster (legacy) version release. This
was built to be able to update the Buster version to a matching kernel version of the Bullseye release. To
match the kernel, you can use the command: sudo rpi-update
Git hash must be the commit in the Raspberry Pi Firmware Files repository with the same kernel version
as the 4DPi package.
3. Some older kernel releases may be available upon request. Please contact 4D Systems Support Team for
more information.
4D Systems
DATASHEET
Page 16 of 28
4DPi-32-II
Mechanical Details
7. Mechanical Details
4D Systems
DATASHEET
Page 17 of 28
4DPi-32-II
Schematic Diagram
8. Schematic Diagram
4D Systems
DATASHEET
Page 18 of 28
4DPi-32-II
Specifications
9. Specifications
Absolute Maximum Ratings
Operating ambient temperature
-15°C to +65°C
Storage temperature
-30°C to +70°C
Note
Stresses above those listed here may cause permanent damage to the device. This is a stress rating only and
functional operation of the device at those or any other conditions above those indicated in the
recommended operation listings of this specification is not implied. Exposure to maximum rating conditions
for extended periods may affect device reliability.
Recommended Operating Conditions
Parameter
Conditions
Min
Typ
Max
Units
Supply Voltage
(+3.3V)
Stable external supply
required
3.0
3.3
4.0
V
Supply Voltage
(+5V)
Stable external supply
required
4.5
5.0
5.5
V
-10
--
+60
°C
Operating
Temperature
Global Characteristics Based on Operating Conditions
Parameter
Conditions
Min
Typ
Max
Units
Supply Current
(ICC)
3.3V Supply
--
100
--
mA
Backlight
Current (ICC)
5V Supply
--
150
--
mA
Display
Endurance
Hours of operation, measured to when
the display is 50% original brightness
--
20000
--
H
PERFORMANCE
Parameter
Conditions
Frame Rate
(FPS)
Video Playback, Full Screen, 320x240. A higher FPS can
be achieved if the display outputs lots of blocks of the
same colour. See the SPI Frequency and Compression
section
4D Systems
DATASHEET
Min
Typ
Max
Units
--
25
--
FPS
Page 19 of 28
4DPi-32-II
Specifications
LCD DISPLAY INFORMATION
Parameter
Conditions
Specification
Display Type
TFT Transmissive LCD
Display Sizes
3.2" Diagonal
Display Resolution
240 x 320 (Portrait View)
Display Brightness
5V Supply, gen4-uLCD-32D
200 cd/m2 (typical)
5V Supply, gen4-uLCD-32D-CLB
194 cd/m2 (typical)
5V Supply, gen4-uLCD-32DT
160 cd/m2 (typical)
5V Supply,gen4-uLCD-32DCTCLB
190 cd/m2 (typical)
Display Contrast Ratio
Typical
500:1
Display Viewing
Angles
Above Centre
35 Degrees
Below Centre
55 Degrees
Left of Centre
55 Degrees
Right of Centre
55 Degrees
Display Viewing
Direction
Display Backlighting
6 O'clock Display (Optimal viewing is from below when in
Portrait mode)
White LED Backlighting
1x6 Parallel LED's
Pixel Pitch
Pixel Density
0.2025 x 0.2025 (Square pixels)
Number of pixels in 1 row in
25.44 mm
127 DPI/PPI
Ordering Information
Order Code: 4DPi-32-II
Packaging: Module sealed in a 4D Systems box
4D Systems
DATASHEET
Page 20 of 28
4DPi-32-II
Appendix 1 - Code Examples - Push Buttons
10. Appendix 1 - Code Examples - Push Buttons
10.1. Example for communicating to Push Buttons, for C language
// test program to read state of buttons on 4D Systems 4DPi displays
#include
#include
#include
#include
#include
#include
#define LCD4DPI_GET_KEYS _IOR('K', 1, unsigned char *)
void print_keys(int fd)
{
unsigned char keys;
if (ioctl(fd, LCD4DPI_GET_KEYS, &keys) == -1)
{
perror("_apps ioctl get");
}
else
{
printf("Keys : %2x\n", keys);
}
}
int main(int argc, char *argv[])
{
char *file_name = "/dev/fb1";
int fd;
fd = open(file_name, O_RDWR);
if (fd == -1)
{
perror("_apps open");
return 2;
}
print_keys(fd);
printf("Ioctl Number: (dec)%d
(hex)%x\n", LCD4DPI_GET_KEYS, LCD4DPI_GET_KEYS);
close (fd);
return 0;
}
4D Systems
DATASHEET
Page 21 of 28
4DPi-32-II
Example for communicating to Push Buttons, for Python language
10.2. Example for communicating to Push Buttons, for Python language
#!/usr/bin/python
import array, fcntl
from time import sleep
# test program to read state of buttons on 4D Systems 4DPi displays
# LCD4DPI_GET_KEYS = -2147202303
_IOC_NRBITS = 8
_IOC_TYPEBITS = 8
_IOC_SIZEBITS = 14
_IOC_DIRBITS = 2
_IOC_DIRMASK = (1