[Gambas-user] Parallel Port - Illegal Seek -

nando nando_f at ...951...
Wed Apr 7 20:47:39 CEST 2010


Seek will not change the address.


---------- Original Message -----------
From: Doriano Blengino <doriano.blengino at ...1909...>
To: nando_f at ...951..., mailing list for gambas users
<gambas-user at lists.sourceforge.net>
Sent: Wed, 07 Apr 2010 11:06:42 +0200
Subject: Re: [Gambas-user] Parallel Port - Illegal Seek -

> nando ha scritto:
> > Using SEEK is not correct.
> > If you think of the parallel port as a file, you cannot seek.
> > It doesn't make sense.
> > You can only read and write.
> > What are you trying to accomplish ?
> > -Fernando
> >   
> He is trying to do low level access to the parallel port, which has 3 
> hardware addresses.
> In that respect, seek() would make sense to select which IO address to 
> read from/write to.
> Whether this works or not, depends on how the kernel driver interprets 
> the seeks, but the following listing makes it clear that somewhere 
> (other OSes?) this behavior works.
> The error could also arise from other problems: permissions, missing 
> modules, wrong major/minor numbers and so on...
> 
> Regards,
> Doriano
> 
> >
> >
> > ---------- Original Message -----------
> > From: Bjorn Macintosh <bjorn.macintosh at ...626...>
> > To: gambas-user at lists.sourceforge.net
> > Sent: Fri, 2 Apr 2010 21:09:58 +1300
> > Subject: [Gambas-user] Parallel Port - Illegal Seek -
> >
> >   
> >> Hi All,
> >>
> >> I am writing a parallel port interface, however I am struggling with how to
> >> write to the parallel port.  Below I have included the code that I have
> >> used.  Following that I have included the BASIC code that I am bastardizing.
> >>
> >> My Gambas version is Gambas2.13
> >> I am running Linux Mint 8
> >> I do have a parallel port on my PC. It is '0378' - '037a' and '0778' -
> >> '077a'
> >> The error code I am getting is "System error. illegal seek"
> >>
> >> Thanks in advance for any help anyone can give.
> >> ---------------------------------------------------------------------GAMBAS2
> >> CODE FOLLOWS------------------------------------------------------
> >> ' Gambas module file
> >> PUBLIC SUB Main()
> >>
> >> DIM N AS Integer
> >> DIM pin AS Integer
> >> DIM pinout AS Integer[] = [0, 0, 0, 0, 0, 0, 0, 0]
> >> DIM pump AS Integer
> >> DIM Ptime AS Integer
> >> DIM Clock AS Integer
> >> DIM UClock AS Integer
> >> DIM DClock AS Integer
> >> DIM commit AS Integer
> >> DIM poweron AS Integer
> >> DIM switch AS Integer
> >> DIM gate AS File
> >> DIM base0, base1, base2 AS Integer
> >>
> >> base0 = 0
> >> base1 = 1
> >> base2 = 2
> >> poweron = 64
> >> commit = 144
> >> switch = 17
> >> UClock = 130
> >> DClock = 128
> >>   gate = OPEN "/dev/parport0" FOR READ WRITE
> >>   SEEK #gate, base0
> >>   WRITE #gate, poweron
> >>   FOR Ptime = 1 TO 2000 STEP 1
> >>   NEXT
> >>
> >>   SEEK #gate, base2
> >>   WRITE #gate, switch
> >>
> >>   GOTO START
> >> CommitChanges:
> >>   FOR N = 0 TO 7 STEP 1
> >>     pump = CInt(1000000 & pinout[Fix(N)])
> >>     Clock = CInt(1000001 & pinout[Fix(N)])
> >>     SEEK #gate, base0
> >>     WRITE #gate, pump
> >>     FOR Ptime = 1 TO 2000 STEP 1
> >>     NEXT
> >>     SEEK #gate, base0
> >>     WRITE #gate, Clock
> >>     FOR Ptime = 1 TO 2000 STEP 1
> >>     NEXT
> >>     SEEK #gate, base0
> >>     WRITE #gate, pump
> >>   NEXT
> >>     FOR Ptime = 1 TO 2000 STEP 1
> >>     NEXT
> >>
> >>   FOR N = 1 TO 16 STEP 1
> >>     SEEK #gate, base0
> >>     WRITE #gate, UClock
> >>     FOR Ptime = 1 TO 2000 STEP 1
> >>     NEXT
> >>     SEEK #gate, base0
> >>     WRITE #gate, DClock
> >>   NEXT
> >>     FOR Ptime = 1 TO 2000 STEP 1
> >>     NEXT
> >>   SEEK #gate, base0
> >>   WRITE #gate, commit
> >>     FOR Ptime = 1 TO 2000 STEP 1
> >>     NEXT
> >>   SEEK #gate, base0
> >>   WRITE #gate, poweron
> >>   GOTO PrintPinout
> >>
> >> PrintPinout:
> >>   FOR N = 0 TO 7 STEP 1
> >>     PRINT pinout[Fix(N)]
> >>   NEXT
> >>   GOTO START
> >>
> >> PinSelectFail:
> >>   PRINT "You have selected a pin that does not exist, careful as this may
> >> cause a divide by 0 and end the universe,  Select between pin 0 and pin 7"
> >>   GOTO START
> >>
> >> START:
> >>   PRINT "What input do you want to toggle? (pins 0 -> 7 are outputs, Pin 8
> >> is the activation sequence)"
> >>   INPUT pin
> >>   IF pin < 0 OR pin > 8 THEN
> >>     GOTO PinSelectFail
> >>   ELSE IF pin = 8 THEN
> >>     GOTO CommitChanges
> >>   ELSE IF pinout[Fix(pin)] = 0 THEN
> >>     pinout[Fix(pin)] = 1
> >>   ELSE IF pinout[Fix(pin)] = 1 THEN
> >>     pinout[Fix(pin)] = 0
> >>   ENDIF
> >> GOTO PrintPinout
> >> END
> >> ---------------------------------------------------------------------Gambas2
> >> END------------------------------------------------------------------------
> >>
> >> ---------------------------------------------------------------------BASIC
> >> CODE FOLLOWS------------------------------------------------------
> >>
> >> BASE0=&H378
> >>
> >> 'SWITCH POWER AND OUTPUTS ON
> >> OUT BASE0, &H80
> >> OUT BASE0 + 2, 11
> >>
> >> 'DEFINE ALL DIGITAL OUTPUTS [OUT(N)] AS BEING OFF (0)
> >> FOR N = 0 TO 7
> >>     DOUT(N) = 0
> >> NEXT N
> >> DOUT=0
> >>
> >> START:
> >>     INPUT "WHICH DIGITAL OUTPUT DO YOU WANT TO TOGGLE (0 TO 7)...."; N
> >>     IF N < 0 OR N > 7 THEN GOTO START
> >>     N = FIX(N)
> >>     DOUT9N0=ABS(NOT (-DOUT(N))) ' THIS LINE TOGGLES THE OUTPUT
> >>
> >> 'CREATE COMPLETE BYTE FOR IC3 CALLED DOUT
> >>     FOR N = 0 TO 7
> >>         IF DOUT(N) = 0 THEN
> >>             DOUT = DOUT AND NOT (2^N)
> >>         ELSE
> >>             DOUT = DOUT OR 2^N
> >>         ENDIF
> >>     NEXT N
> >>
> >> 'SEND 8 CLOCK PULSES AND DIGITAL OUT DATA (ALL ZERO'S)
> >>     FOR BIT = 1 TO 8
> >>         B = 8 - BIT
> >>         BYTE = ((DOUT AND 2^B) / 2^B) OR &H80
> >>         OUT BASE0, BYTE
> >>         OUT BASE0, BYTE OR 2
> >>        OUT BASE0 BYTE
> >>     NEXT BIT
> >>
> >> 'SEND ANOTHER 16 CLOCK PULSES TO SHIFT THE DATA INTO IC3
> >> FOR BIT = 9 TO 24
> >>     OUT BASE0, &H82
> >>     OUT BASE0, &H80
> >> NEXT BIT
> >>
> >> 'LOAD IC3
> >> OUT BASE0, &H90
> >> OUT BASE0, &h80]
> >>
> >> ---------------------------------------------------------------------BASIC
> >> END------------------------------------------------------------------------
> >>
> >> Bjorn Macintosh
> >> ------------------------------------------------------------------------------
> >>
> 
> ------------------------------------------------------------------------------
> Download Intel® Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
------- End of Original Message -------





More information about the User mailing list