Files
hpr-knowledge-base/hpr_transcripts/hpr2951.txt
Lee Hanken 7c8efd2228 Initial commit: HPR Knowledge Base MCP Server
- MCP server with stdio transport for local use
- Search episodes, transcripts, hosts, and series
- 4,511 episodes with metadata and transcripts
- Data loader with in-memory JSON storage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 10:54:13 +00:00

136 lines
12 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Episode: 2951
Title: HPR2951: A walk through my PifaceCAD Python code Part 2
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr2951/hpr2951.mp3
Transcribed: 2025-10-24 13:47:25
---
This is HBR Episode 2951 for Monday the 25th of November 2019. Today's show is entitled
a walk through my Pyface CAD Python Code Part 2, and as part of the series a little bit of Python,
it's hosted by MrX, is about 15 minutes long and carries an explicit flag. The summary is,
in this episode I cover some generic functions at the top of the code.
This episode of HBR is brought to you by archive.org. Support universal access to all knowledge
by heading over to archive.org forward slash donate.
Hello and welcome hacker public audience. My name is MrX and welcome to this podcast.
I'd like to start as usual by thanking the people at HBR for making this series available to
all it's actually invaluable service. HBR is a community led podcast provided by the community
for the community. That means you can contribute to why you record something and send a
turn I'm sure would often interest in. Okay so this is part two of my run through my
Python code for the Pyface CAD and display. I don't board what you have from a Raspberry Pi.
In this episode I covered some of the generic functions at the top of the code basically.
I forgot to mention last time that I'll include a copy of my Python code CAD-menu.py.
That's how it was called. I think it was. I'll include a copy of that script on each of the episodes.
I recorded this the actual main part on a one or and listening back to it I noticed that
I started off a nice paste nice gentle piece and gradually it gets faster and faster
to the point where I'm just a jibbering wreck and just desperately get to the end of it.
So I must apologise for that and don't worry if you can't comprehend it. It's a fault at my end not yours.
So never mind. Anyway on with the show. So this is part two. Sit back and enjoy.
Watch my thing. How long has it been going for? 15 minutes. Oh this is a disaster.
This is going to be far too long. Right okay global variables. So yeah rubbish.
Got too many global variables. So I'll just mention the various functions. So I've got
the first function come to is getHPRQ. So I've got a description here. Go to hacker
probably just a stats page and extract the number of days to next free slot. Turns on Blinkstick
LED with coloured dependent on the number of days to next free slot in HPRQ.
Prince number of days to next free slot to the display. Yeah so I think that's quite self-explanatory.
The next one is a series of functions set up. The control of Blinkstick. So I was probably next
from the Blinkstick documentation or whatever. So Blinkstick underscore off. That turns all the
Blinksticks you've got attached off. Blinkstick on open parenthesis colour close parenthesis.
So if you give it if you pass a value to it the way you should do it you can pass a colour
and it will change colours. So if you if you if you's called Bstick underscore on open parenthesis
and you put the colour in I don't know let me think blue is our blue. I'm not sure if there's a blue
red then I must be a red. Green is a green. Close parenthesis. Then it'll switch on the Blinkstick
colour green. So if I like colours what's it say? Black, silver, grey, white, maroon, red, purple,
fushia, there's a red. Green, lime, olive, yellow, navy, blue, steel and aqua. How accurate
these colours are going to be? Well I don't think it's terribly accurate but there you go.
So that's Blink Bstick on. Bstick on random. That just turns it on with a random colour.
A Bstick Blink. Turn Blinkstick on with with supplied colour. Oh yeah oh yeah it's Bstick
underscore Blink open parenthesis colour close parenthesis. So you can give it a colour and it'll
blink off and on basically. Right so into the Blinkstick stuff. So death, run, CMD, run command
used to run external Linux commands so you can run a command with that basically. I think
that may have got that idea from a project that somebody did to turn their Raspberry Pi
into our internet radio thingy. I think I may have got that from that. I'm going to be
saving and find the reference. Get my IP. Well that just returns IP address. That's what that
does. Get my ESSID. I'll get your Wi-Fi ESSID basically. Get my Wi-Fi strength. Well it gets
the Wi-Fi strength as a percentage. Next one. Wait for IP. That tries 10 times to get an IP
of our IP address. So while a length of IP is less than 0 and an account is greater than 0,
then go through the loop basically. And if it can't get it within 10 turns it'll say I don't know
IP. So it's a very, very basic thing. I'm not even sure if it works properly to tell you the truth.
I haven't thoroughly tested that. Death show Wi-Fi info. Show us why information on display shows ESSID
on first line and both the Wi-Fi signal strength as a percentage and the IP address on the second line.
Obviously any of these ideas you can pinch for your own use. So any of these ideas you can
obviously pinch for your own use. Custom bitmaps. Slicing of custom bitmaps to use on LCD display.
So I've got a speaker. I play a stop. I play list. I pause. I back in a forward.
I think some of these I had to draw myself. As it paused I had to draw myself. I can't remember.
One of these ones I had to draw myself anyway. I couldn't find an example online.
There's a website you can go to to work out. I think it's a chip that uses on the LCD display board
and the company that provides a chip has got a website, a handy website where you can put in numbers
and it'll give you an approach. It'll show you what it's going to look like basically because
trying to is quite tricky to do with numbers yourself without this website. You can do it I think.
So that's that. Right long string. Open parenthesis. Long string. Close parenthesis. So this is one of
these rare examples where I pass a value to one of my functions. It's a string that you passed it.
So writes a long string to the pie face control and display LCD and scrolls it to the left until
the last character appears on the right hand side of the screen. This is my I had multiple attempts at
doing this. My first attempt was it was just a hack really and it sometimes got it wrong and
also stuff that this just this one seems to work. This seems to work reliably and I add a character
at the end because it's otherwise it would be very I can special character because I kind of
arrow thing I came across. It's like a pointy arrow so that you can clearly see where the end of
the string appears and the beginning starts because otherwise it's not tricky to see where
the string stops sort of thing. So if there's a there's a few variables look local that's it.
You've got global variables and local variables. So local variables are only visible from within
that function. So there's a number of local variables in the right long string function.
One is called display size and it got set to 15 so that's the number of characters that can
be displayed on one line of display. Another one step size and that's kind of set to four.
Step size when scrolling message on display so as it's scrolling across how many characters on each
scroll does it do you want it to move it you know if it's going to it's going to ripple through
is it moving the screen one character or two characters four or whatever now this was off
something that I did as a five minute later on because I just well I'll carry on in that
explain in a minute. Good after that I've got scroll speed and that set to 0.55 I think that's
of a second 0.55 second I just scroll speed delay in seconds between scrolls or the last one
is oh last one is scrolling scroll equals zero default value for scroll used when string is
smaller than display size sort of the if the scroll if the if the string is smaller than the
full width of the screen then there's no need to scroll it sort of scrolls zero so that's what
that's for so what I wasn't discovered was that um you know at obviously LCD it's quite a basic
LCD screen and at different temperatures the update refresh rate differs so sometimes it can
be very bloody particularly when the temperature drops and but then it could be okay in the summer
so then you put it make it really slow and then you find it well it's that slow it's taking forever
to scroll and it's unnecessarily slow in the summer and so what I did was I thought well it doesn't
actually need to move just one character at a time it could it can it can move more and I found
it four characters it was quite a good compromise you could still clearly see it scrolling across
the screen it looked quite natural and 0.55 of a second between each scroll was fast enough
that it didn't blur too much and you could still you could still read it obviously you can
tweak these settings yourself but that's a whole point of having these variables rather rather than
digging around in the code trying to work out what the heck's going on you can just tweak these
numbers and and to suit yourself and you could go crazy I mean you could say okay it was between
this month and that month and it's somewhere so therefore set the scroll speed to this speed
if it's between this month and that month and it's obviously winter so set it to that speed she could
do all this or it's a clever thing it's you're limited only by your own imagination I mean that's
that's the beauty of of doing this I think yourself probably nobody else on a planet would be
slightly interested in this but here you go remember a tattoo talking about a project that he did
they said you know a good project you know was it say something along the lines of something
that the person themselves is fascinated by and things it finds it wonderful and but nobody else
can see at any point and then you know it's or something to that effect and I think that's true
these are just I just tend to use this thing I don't tend to look at it at all I'm look to the
code for what other than a tiny we change I was telling you about earlier with a variable
and it display sets up the LCD display for selected menu zero for podcasts one for
your books and two for system so yeah you just call in at display and it sets the display back up
again for reset the the the screen basically quite handy display main menu what's the first
tune in a sheet display oh yes display main menu so this is the that when you're changing between
the menus you get a brief message telling you what menu you're in so clear LCD and display the
appropriate main menu message so for example if you're in menu zero it'll print zero zero
open-square bracket podcast close-square bracket wait for point seven of a second and then go
to init this init display to initiate the display for the screen for menu zero and if it's not
zero it does the one for audio books which is one if it's not that it's two which is system and so on
and if it's not that it's an invalid menu right so finally we get on to the buttons except we
don't because I think that's a good place there to stop I think that's long enough so thank you very
much for listening to this hopefully you've got something out of it if you want to contact me
I can be contacted at mrx at hpr at googlemail.com that's mrx 80 hpr the at symbol googlemail.com
so tune in next time for exciting episode part three of my series on my python program bye for new
you've been listening to hecka public radio at hecka public radio dot org we are a community podcast
network that releases shows every weekday Monday through Friday today's show like all our shows
was contributed by an hpr listener like yourself if you ever thought of recording a podcast
and click on our contributing to find out how easy it really is hecka public radio was found
by the digital dog pound and the infonomican computer club and it's part of the binary revolution
at binwave.com if you have comments on today's show please email the host directly leave a comment
on the website or record a follow-up episode yourself unless otherwise stated today's show is
released on the creative comments attribution share a light 3.0 license