Fix refreshing code

This commit is contained in:
pangduckwai
2019-05-06 01:44:09 +08:00
parent 590d6b6fcf
commit 46c6fedd5e
3 changed files with 44 additions and 27 deletions
+3 -2
View File
@@ -78,9 +78,10 @@ That's it, the display is ready to use.
## Next step ## Next step
The Python code in this repo (`monitor.py`) display system information of the Pi: The Python code in this repo (`monitor.py`) display system information of the Pi:
1. **Button 1** - Display system information of the Pi, such as _Disk space_, _WiFi_, _IP Address_, _CPU Idle %_, _Memory usage_, _Network status_ and _System temperature_, in 2 pages; use the Left/Right Joystick to toggle between these pages. 1. **Button 1** - Display system information of the Pi, such as _Disk space_, _WiFi status_, _IP Address_, _CPU Idle %_, _Memory usage_, _Network status_ and _System temperature_, in 2 pages; use the Left/Right Joystick to toggle between these pages.
1. **Button 3** - Display the system action dialog, use the Up/Down/Left/Right Joystick to select the options between _Reboot_, _Shutdown_, _Re-mount Samba_ and _Reload the USB driver_. Press **Button 3** to confirm your choice. 1. **Button 3** - Display the system action dialog, use the Up/Down/Left/Right Joystick to select the options between _Reboot_, _Shutdown_, _Re-mount Samba_ and _Reload the USB driver_. Press **Button 3** to confirm your choice.
* The screen will turn off after idling for around 20 seconds. * The screen will turn off after idling for around 20 seconds.
* The shell script (`usb_drive.sh`) referenced in the Python code is also included in this repo.
### CPU usage ### CPU usage
The original version was adopted directly from `demo.py` provided by the manufacturer, which is no good for 'production' use. Because your Pi will be too busy looking for button inputs instead of doing anything else useful. The original version was adopted directly from `demo.py` provided by the manufacturer, which is no good for 'production' use. Because your Pi will be too busy looking for button inputs instead of doing anything else useful.
@@ -90,5 +91,5 @@ The latest version utilize GPIO input detection instead of busy wait, which is m
### Enable the display at startup ### Enable the display at startup
* `sudo vi /etc/rc.local` * `sudo vi /etc/rc.local`
* Add the following line at the end of the file, assuming `monitor.py` is in /home/pi/: * Add the following line at the end of the file, assuming `monitor.py` is in /home/pi/:
* `sudo python /home/pi/monitor.py &` * `python /home/pi/monitor.py &`
* _**IMPORTANT**_ Don't forget the `&` character at the end! * _**IMPORTANT**_ Don't forget the `&` character at the end!
+15 -24
View File
@@ -69,19 +69,15 @@ def take_act(channel):
if state == BTN3_PIN: if state == BTN3_PIN:
if vert == 1: if vert == 1:
if horz == 1: if horz == 1:
draw_scn(996) show_stt(995)
os.system("sudo shutdown -r now")
else:
draw_scn(995)
os.system("sudo shutdown -h now") os.system("sudo shutdown -h now")
elif vert == 2:
if horz == 1:
draw_scn(997)
os.system("sudo /usr/bin/usb_drive.sh remount")
else: else:
draw_scn(998) show_stt(996)
os.system("sudo /usr/bin/usb_drive.sh replug") os.system("sudo shutdown -r now")
start = stamp - SCREEN_SAVER - 15 elif vert == 2:
show_stt(997)
os.system("sudo usb_drive.sh refresh")
start = stamp - SCREEN_SAVER - 10
else: else:
show_stt(BTN1_PIN) show_stt(BTN1_PIN)
else: else:
@@ -148,40 +144,35 @@ def draw_scn(channel):
x6 = x3+9 x6 = x3+9
y2 = y1*vert y2 = y1*vert
LINE1 = "| Shutdown..." LINE1 = "| Shutdown..."
LINE2 = "| Refresh..." LINE2 = "| Refresh"
LINE3 = "| Cancel" LINE3 = "| Cancel"
if vert == 1: if vert == 1:
if horz == 1: if horz == 1:
LINE1 = "> Reboot"
else:
LINE1 = "> Shutdown" LINE1 = "> Shutdown"
elif vert == 2:
if horz == 1:
LINE2 = "> Remount SMB"
else: else:
LINE2 = "> Reload USB" LINE1 = "> Reboot"
elif vert == 2:
LINE2 = "> Refresh"
else: else:
LINE3 = "> Cancel" LINE3 = "> Cancel"
if vert == 3: if vert == 1:
draw.polygon([(x1,y2+6),(x2,y2-1),(x2,y2+4),(x3,y2+4),(x3,y2+8),(x2,y2+8),(x2,y2+13)], outline=255, fill=1)
else:
if horz == 1: if horz == 1:
draw.polygon([(x4,y2+6),(x5,y2-1),(x5,y2+4),(x6,y2+4),(x6,y2+8),(x5,y2+8),(x5,y2+13)], outline=255, fill=0) draw.polygon([(x4,y2+6),(x5,y2-1),(x5,y2+4),(x6,y2+4),(x6,y2+8),(x5,y2+8),(x5,y2+13)], outline=255, fill=0)
draw.polygon([(x1,y2+6),(x2,y2-1),(x2,y2+4),(x3,y2+4),(x3,y2+8),(x2,y2+8),(x2,y2+13)], outline=255, fill=1) draw.polygon([(x1,y2+6),(x2,y2-1),(x2,y2+4),(x3,y2+4),(x3,y2+8),(x2,y2+8),(x2,y2+13)], outline=255, fill=1)
else: else:
draw.polygon([(x1,y2+6),(x2,y2-1),(x2,y2+4),(x3,y2+4),(x3,y2+8),(x2,y2+8),(x2,y2+13)], outline=255, fill=0) draw.polygon([(x1,y2+6),(x2,y2-1),(x2,y2+4),(x3,y2+4),(x3,y2+8),(x2,y2+8),(x2,y2+13)], outline=255, fill=0)
draw.polygon([(x4,y2+6),(x5,y2-1),(x5,y2+4),(x6,y2+4),(x6,y2+8),(x5,y2+8),(x5,y2+13)], outline=255, fill=1) draw.polygon([(x4,y2+6),(x5,y2-1),(x5,y2+4),(x6,y2+4),(x6,y2+8),(x5,y2+8),(x5,y2+13)], outline=255, fill=1)
else:
draw.polygon([(x1,y2+6),(x2,y2-1),(x2,y2+4),(x3,y2+4),(x3,y2+8),(x2,y2+8),(x2,y2+13)], outline=255, fill=1)
elif channel == 995: elif channel == 995:
LINE2 = " Shutting down..." LINE2 = " Shutting down..."
elif channel == 996: elif channel == 996:
LINE2 = " Rebooting..." LINE2 = " Rebooting..."
elif channel == 997: elif channel == 997:
LINE2 = " Resetting SMB..." LINE2 = " Refreshing..."
elif channel == 998:
LINE2 = " Resetting USB..."
else: else:
pass pass
+25
View File
@@ -0,0 +1,25 @@
#!/bin/bash
FILE=/usb.bin
MOUNT=/mnt/usb
case $1 in
stop)
modprobe -r g_mass_storage
;;
refresh)
sync $MOUNT
sleep 1
modprobe -r g_mass_storage
sleep 1
modprobe g_mass_storage file=$FILE stall=0 ro=0 removable=1 nofua=1
sleep 1
service smbd restart
umount $MOUNT
sleep 1
mount -a
;;
*)
sleep 1
modprobe g_mass_storage file=$FILE stall=0 ro=0 removable=1 nofua=1
;;
esac