<div dir="ltr">Hi. It worked. <br><br>&gt;&gt;&gt; class LightsHandle(Parallel):<br>...&nbsp;&nbsp;&nbsp;&nbsp; def __init__(self):<br>...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Parallel.__init__(self)<br>...&nbsp;&nbsp;&nbsp;&nbsp; def __del__(self):<br>...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Parallel.__del__(self)<br>
...&nbsp;&nbsp;&nbsp;&nbsp; def setLatch(self, x, y, z):<br>...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.setDataStrobe(x)<br>...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;Data Strobe set. \n&#39;<br>...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.setAutoFeed(y)<br>...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;AutoFeed set. \n&#39;<br>
...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.setInitOut(z)<br>...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;InitOut set. \n&#39;<br>...&nbsp;&nbsp;&nbsp;&nbsp; def generateClockPulse(self):<br>...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.setSelect(0)<br>...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;Select set to 0. \n&#39;<br>
...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.setSelect(1)<br>...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;Select set to 1. \n&#39;<br><br>Just to answer some questions.<br><br><span style="color: rgb(51, 51, 255);">Is _fd initialized in Parallel.__init__() ?</span><br>
<br>Yes it is.<br><br><div style="color: rgb(51, 51, 255);" class="Ih2E3d">&gt; I already tried using the base class and it works just fine.<br>
&gt;<br>
&gt;&gt;&gt;&gt; from parallel import Parallel<br>
&gt;&gt;&gt;&gt; p = Parallel()<br>
&gt;&gt;&gt;&gt; p.setData(0xFF)<br>
<br>
</div><span style="color: rgb(51, 51, 255);">Note this is a different value than you used above, is that significant?</span><br style="color: rgb(51, 51, 255);">
<br>No, not really. It&#39;s just what I want to output. 0xFF would mean all 8 LEDs are off while 0xF0 would mean only half the lights are on.<br><br>Thank you very much.<br><br><br><div class="gmail_quote">On Mon, Sep 8, 2008 at 2:35 AM, Kent Johnson <span dir="ltr">&lt;<a href="mailto:kent37@tds.net">kent37@tds.net</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">On Sun, Sep 7, 2008 at 11:07 AM, Roy Khristopher Bayot<br>
&lt;<a href="mailto:roybayot@gmail.com">roybayot@gmail.com</a>&gt; wrote:<br>
&gt; Hi. I added self to parts of the code. But after making an instance and<br>
&gt; using the setData method it gave out an AttributeError.<br>
&gt;<br>
&gt;&gt;&gt;&gt; from parallel import Parallel<br>
&gt;&gt;&gt;&gt; class LightsHandle(Parallel):<br>
&gt; ... &nbsp; &nbsp; def __init__(self):<br>
&gt; ... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pass<br>
<br>
</div>This will *prevent* Parallel.__init__() from being called. I guess<br>
this is not what you want, it is probably the cause of your trouble.<br>
Is _fd initialized in Parallel.__init__() ?<br>
<br>
&gt; ... &nbsp; &nbsp; def setData(self, data):<br>
&gt; ... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Parallel.setData(self, data)<br>
<br>
This method is not needed at all. If you omit it, the base class<br>
method will be called automatically when you call setData() on a<br>
LightsHandle instance.<br>
<br>
&gt; ... &nbsp; &nbsp; def setLatch(self, latch):<br>
<div class="Ih2E3d">&gt; ... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Parallel.setDataStrobe(self, int(latch[0]))<br>
&gt; ... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Parallel.setAutoFeed(self, int(latch[1]))<br>
&gt; ... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Parallel.setInitOut(self, int(latch[2]))<br>
<br>
</div>This could be written more simply and idiomatically as<br>
<br>
... &nbsp; &nbsp; def setLatch(self, x, y, z):<br>
... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.setDataStrobe(x)<br>
... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.setAutoFeed(y)<br>
... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.setInitOut(z)<br>
<br>
Since you have not overridden these methods you can call them directly.<br>
<br>
&gt; ... &nbsp; &nbsp; def generateClockPulse(self):<br>
<div class="Ih2E3d">&gt; ... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Parallel.setSelect(self, 0)<br>
&gt; ... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Parallel.setSelect(self, 1)<br>
<br>
</div>Same here.<br>
<div class="Ih2E3d"><br>
&gt;&gt;&gt;&gt; a = LightsHandle()<br>
&gt;&gt;&gt;&gt; a.setData(0xF0)<br>
&gt; Traceback (most recent call last):<br>
&gt; &nbsp; File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;<br>
&gt; &nbsp; File &quot;&lt;stdin&gt;&quot;, line 5, in setData<br>
&gt; &nbsp; File &quot;/usr/lib/python2.5/site-packages/parallel/parallelppdev.py&quot;, line<br>
&gt; 563, in setData<br>
&gt; &nbsp; &nbsp; return self.PPWDATA(d)<br>
&gt; &nbsp; File &quot;/usr/lib/python2.5/site-packages/parallel/parallelppdev.py&quot;, line<br>
&gt; 465, in PPWDATA<br>
&gt; &nbsp; &nbsp; fcntl.ioctl(self._fd, PPWDATA,struct.pack(&#39;B&#39;,byte))<br>
&gt; AttributeError: LightsHandle instance has no attribute &#39;_fd&#39;<br>
&gt;<br>
&gt; Does this mean I have to make &#39;_fd&#39; in class LightsHandle? I thought that it<br>
&gt; would be somewhat &quot;messy&quot;. And there might be other variables that werent<br>
&gt; accounted for.<br>
<br>
</div>Probably it means you have to call the base class __init__().<br>
<div class="Ih2E3d"><br>
&gt;&gt;&gt;&gt; a = LightsHandle()<br>
&gt;&gt;&gt;&gt; a.setData(0xF0)<br>
&gt;<br>
</div><div class="Ih2E3d">&gt; There were no errors thrown. But the problem is that it doesnt work.<br>
<br>
</div><div class="Ih2E3d">&gt; I already tried using the base class and it works just fine.<br>
&gt;<br>
&gt;&gt;&gt;&gt; from parallel import Parallel<br>
&gt;&gt;&gt;&gt; p = Parallel()<br>
&gt;&gt;&gt;&gt; p.setData(0xFF)<br>
<br>
</div>Note this is a different value than you used above, is that significant?<br>
<font color="#888888"><br>
Kent<br>
</font></blockquote></div><br></div>