<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
<channel>
  <title>Linux Format forums</title>
  <link>http://linuxformat.com/forums/index.php</link>
  <description>Help, discussion, magazine feedback and more</description>
  <language>english</language>
  <copyright>(c) Copyright Fri May 24, 2013 9:47 am by Linux Format forums</copyright>
  <managingEditor>webmaster@linuxformat.com</managingEditor>
  <webMaster>webmaster@linuxformat.com</webMaster>
  <pubDate>Fri May 24, 2013 9:47 am</pubDate>
  <lastBuildDate>Fri May 24, 2013 9:47 am</lastBuildDate>
  <docs>http://backend.userland.com/rss</docs>
  <generator>phpBB2 RSS Syndication Mod by Lucas</generator>
  <ttl>1</ttl>

  <image>
    <title>Linux Format forums</title>
    <url></url>
    <link>http://linuxformat.com/forums/</link>
    <description>Help, discussion, magazine feedback and more</description>
  </image>

                                      <item>
                                        <title>Another Python 3.x.x Vertical Bargraph Generator...</title>
                                        <link>http://linuxformat.com/forums/viewtopic.php?p=98767#98767</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Sat Apr 23, 2011 9:00 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Hi all...&lt;br /&gt;
&lt;br /&gt;
Similar to the horizontal one in this forum but in the vertical plane this time.&lt;br /&gt;
&lt;br /&gt;
Given away as usual and looks just like a(n) LED &amp;quot;VU&amp;quot; display uaed on&lt;br /&gt;
audio gear.&lt;br /&gt;
&lt;br /&gt;
Enjoy finding simple solutions to often very difficult problems...&lt;br /&gt;
&lt;br /&gt;
This needs only a default Python 3.x.x install inside Linux(/*IX?).&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;# 4BitVerticalBargraph3x.py&lt;br /&gt;
#&lt;br /&gt;
# A DEMO 4 bit slow analogue bargraph generator in colour for STANDARD Python 3.x and Linux...&lt;br /&gt;
# This is a vertical version of the horizontal one also given away by myself.&lt;br /&gt;
# It is written so that anyone can understand how it works.&lt;br /&gt;
#&lt;br /&gt;
# &amp;#40;Original copyright, &amp;#40;C&amp;#41;2011, B.Walker, G0LCU.&amp;#41;&lt;br /&gt;
# Issued initially to LXF as Public Domain, and to other sites later.&lt;br /&gt;
#&lt;br /&gt;
# Saved as 4BitVerticalBargraph3x.py wherever you like.&lt;br /&gt;
#&lt;br /&gt;
# This DEMO goes from safe green, to warning amber, to danger red, with a crirical&lt;br /&gt;
# error beep above 14 on the vertical scale...&lt;br /&gt;
# It is a slow &amp;quot;AT A GLANCE&amp;quot; display for quick assessments, not for accuracy.&lt;br /&gt;
#&lt;br /&gt;
# Two system commands are required, &amp;quot;clear&amp;quot; and &amp;quot;setterm&amp;quot;, for this to work.&lt;br /&gt;
# I assume that these are available on all recent and current Linux distros.&lt;br /&gt;
# The device /dev/audio is used so this must be free also. &lt;br /&gt;
#&lt;br /&gt;
# It is useful for quick &amp;quot;AT A GLANCE&amp;quot; readings from say an 8 bit ADC used as a simple&lt;br /&gt;
# voltmeter, ammeter, etc. Getting a digital readout is SO simple I left it out this time...&lt;br /&gt;
#&lt;br /&gt;
# To run use the following from inside a Python prompt...&lt;br /&gt;
# exec&amp;#40;open&amp;#40;&amp;quot;/full/path/to/code/4BitVerticalBargraph3x.py&amp;quot;&amp;#41;.read&amp;#40;&amp;#41;&amp;#41;&lt;br /&gt;
#&lt;br /&gt;
# This looks like an &amp;quot;LED&amp;quot; style &amp;quot;VU&amp;quot; display...&lt;br /&gt;
&lt;br /&gt;
# Add the required imports for this DEMO.&lt;br /&gt;
import os&lt;br /&gt;
import random&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
# Just for this DEMO set up variables as global...&lt;br /&gt;
global count&lt;br /&gt;
global row&lt;br /&gt;
global blank&lt;br /&gt;
global greenlines&lt;br /&gt;
global yellowlines&lt;br /&gt;
global redlines&lt;br /&gt;
global waveform&lt;br /&gt;
global char&lt;br /&gt;
&lt;br /&gt;
# Startup variable values here.&lt;br /&gt;
count=0&lt;br /&gt;
row=0&lt;br /&gt;
blank=&amp;quot;&amp;#40;C&amp;#41;2011, B.Walker, G0LCU.&amp;quot;&lt;br /&gt;
greenlines=blank&lt;br /&gt;
yellowlines=blank&lt;br /&gt;
redlines=blank&lt;br /&gt;
# This is a squarewave binary for the critical error beep.&lt;br /&gt;
waveform=b&amp;quot;\x00\x00\x00\x00\xff\xff\xff\xff&amp;quot;&lt;br /&gt;
char=chr&amp;#40;0x2588&amp;#41;+chr&amp;#40;0x2588&amp;#41;&lt;br /&gt;
&lt;br /&gt;
def main&amp;#40;&amp;#41;&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Disable the cursor as it looks much nicer... ;o&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;os.system&amp;#40;&amp;quot;setterm -cursor off&amp;quot;&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;while 1&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Run continuously and use Ctrl-C to STOP!&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;blank=&amp;quot;\033&amp;#91;0m&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Generate a byte value as though grabbed from a serial, parallel or USB port.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;row=int&amp;#40;random.random&amp;#40;&amp;#41;*256&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now divide by 16 to simulate a 4 bit value.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;row=int&amp;#40;row/16&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Although this should never occur, don't allow any error.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=15&amp;#58; row=15&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;lt;=0&amp;#58; row=0&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a full, clean, clear screen and start looping.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;os.system&amp;#40;&amp;quot;clear&amp;quot;&amp;#41;,chr&amp;#40;13&amp;#41;,&amp;quot;&amp;nbsp; &amp;quot;,chr&amp;#40;13&amp;#41;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;&amp;quot;\033&amp;#91;0mFour Bit Level Vertical Analogue Bar Graph Display...&amp;quot;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;&amp;quot;Original copyright, &amp;#40;C&amp;#41;2011, B.Walker, G0LCU.&amp;quot;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;&amp;quot;Issued to LXF on 24-04-2011 as Public Domain.&amp;quot;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;blank+&amp;quot;\033&amp;#91;1;31m15 __ &amp;quot;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;redlines=blank+&amp;quot;\033&amp;#91;1;31m14 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=15&amp;#58; redlines=redlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;redlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;redlines=blank+&amp;quot;\033&amp;#91;1;31m13 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=14&amp;#58; redlines=redlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;redlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;yellowlines=blank+&amp;quot;\033&amp;#91;1;33m12 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=13&amp;#58; yellowlines=yellowlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;yellowlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;yellowlines=blank+&amp;quot;\033&amp;#91;1;33m11 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=12&amp;#58; yellowlines=yellowlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;yellowlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;yellowlines=blank+&amp;quot;\033&amp;#91;1;33m10 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=11&amp;#58; yellowlines=yellowlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;yellowlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;greenlines=blank+&amp;quot;\033&amp;#91;1;32m 9 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=10&amp;#58; greenlines=greenlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;greenlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;greenlines=blank+&amp;quot;\033&amp;#91;1;32m 8 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=9&amp;#58; greenlines=greenlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;greenlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;greenlines=blank+&amp;quot;\033&amp;#91;1;32m 7 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=8&amp;#58; greenlines=greenlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;greenlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;greenlines=blank+&amp;quot;\033&amp;#91;1;32m 6 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=7&amp;#58; greenlines=greenlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;greenlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;greenlines=blank+&amp;quot;\033&amp;#91;1;32m 5 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=6&amp;#58; greenlines=greenlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;greenlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;greenlines=blank+&amp;quot;\033&amp;#91;1;32m 4 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=5&amp;#58; greenlines=greenlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;greenlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;greenlines=blank+&amp;quot;\033&amp;#91;1;32m 3 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=4&amp;#58; greenlines=greenlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;greenlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;greenlines=blank+&amp;quot;\033&amp;#91;1;32m 2 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=3&amp;#58; greenlines=greenlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;greenlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;greenlines=blank+&amp;quot;\033&amp;#91;1;32m 1 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=2&amp;#58; greenlines=greenlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;greenlines&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;greenlines=blank+&amp;quot;\033&amp;#91;1;32m 0 __ &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;gt;=1&amp;#58; greenlines=greenlines+char&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row==0&amp;#58; greenlines=greenlines+&amp;quot;__&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;greenlines&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reset to default colours...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;&amp;quot;\033&amp;#91;0mPress Ctrl-C to stop...&amp;quot;&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row&amp;lt;=14&amp;#58; time.sleep&amp;#40;1&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if row==15&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set audio timing to zero, &amp;quot;0&amp;quot;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;count=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Open up the audio device to write to.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This could be /dev/dsp also...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;audio=open&amp;#40;&amp;quot;/dev/audio&amp;quot;, &amp;quot;wb&amp;quot;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# A &amp;quot;count&amp;quot; value of 1 = 1mS, so 1000 = 1S.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while count&amp;lt;=1000&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Send 8 bytes of data to the audio device 1000 times.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This is VERY close to 1KHz and squarewave.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;audio.write&amp;#40;waveform&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;count=count+1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Close the audio device access.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;audio.close&amp;#40;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable the cursor again if it ever gets here... ;oO&lt;br /&gt;
&amp;nbsp; &amp;nbsp;os.system&amp;#40;&amp;quot;setterm -cursor on&amp;quot;&amp;#41;&lt;br /&gt;
main&amp;#40;&amp;#41;&lt;br /&gt;
&lt;br /&gt;
# End of DEMO...&lt;br /&gt;
# Enjoy finding simple solutions to often very difficult questions.&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://linuxformat.com/forums/viewtopic.php?p=98767#98767</comments>
                                        <author>Bazza</author>
                                        <pubDate>Sat Apr 23, 2011 9:00 pm</pubDate>
                                        <guid isPermaLink="true">http://linuxformat.com/forums/viewtopic.php?p=98767#98767</guid>
                                      </item></channel></rss>