09-16-2009 10:24 PM
Hi all,
I need to program an old tektronix machine using the gpib port.
I have a c application written by someone for it. however on running the application I get an error
libgpib: ibBoardOpen failed to open device file /dev/gpib0
libgpib: No such device or address
libgpib: error in is_cic()!
I installed the ni488.2 driver and ni visa 4.5 on my machine following the link
http://decibel.ni.com/content/docs/DOC-6742#cf
however I was still having the same problem
lsspci -vv
01:09.0 Communication controller: National Instruments PCI-GPIB (rev 02)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR+ INTx-
Latency: 255, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 18
Region 0: Memory at ff8ff800 (32-bit, non-prefetchable)
Region 1: Memory at ff8f8000 (32-bit, non-prefetchable) [size=16K]
Kernel driver in use: ni488
cat /etc/gpib.conf
/***********************************************************************
GPIB.CONF IEEE488 library config file
-------------------
copyright : (C) 2002 by Frank Mori Hess
(C) 1994 by C.Schroeter
email : fmhess@users.sourceforge.net
***************************************************************************/
/***************************************************************************
*
* Syntax:
*
* interface { ... } starts new interface board section
* device {...} device configuration
*
***************************************************************************/
/* This section configures the configurable driver characteristics
* for an interface board, such as board address, and interrupt level.
* minor = 0 configures /dev/gpib0, minor = 1 configures /dev/gpib1, etc.
*/
interface {
minor = 0 /* board index, minor = 0 uses /dev/gpib0, minor = 1 uses /dev/gpib1, etc. */
board_type = "ni_pci" /* type of interface board being used */
name = "violet" /* optional name, allows you to get a board descriptor using ibfind() */
pad = 0 /* primary address of interface */
sad = 0 /* secondary address of interface */
timeout = T3s /* timeout for commands */
eos = 0x0a /* EOS Byte, 0xa is newline and 0xd is carriage return */
set-reos = yes /* Terminate read if EOS */
set-bin = no /* Compare EOS 8-bit */
set-xeos = no /* Assert EOI whenever EOS byte is sent */
set-eot = yes /* Assert EOI with last byte on writes */
/* settings for boards that lack plug-n-play capability */
base = 0 /* Base io ADDRESS */
irq = 0 /* Interrupt request level */
dma = 0 /* DMA channel (zero disables) */
/* pci_bus and pci_slot can be used to distinguish two pci boards supported by the same driver */
/* pci_bus = 0 */
/* pci_slot = 7 */
master = yes /* interface board is system controller */
}
/* This is how you might set up a pcIIa board on /dev/gpib1, uncomment to use. */
/*******************
interface {
minor = 1
board_type = "pcIIa"
pad = 0
sad = 0
timeout = T3s
eos = 0x0a
set-reos = yes
set-bin = no
base = 0x2e1
irq = 7
dma = 1
master = yes
}
*********************/
/* Now the device sections define the device characteristics for each device.
* These are only used if you want to open the device using ibfind() (instead
* of ibdev() )
*/
device {
minor = 0 /* minor number for interface board this device is connected to */
name = "voltmeter" /* device mnemonic */
pad = 7 /* The Primary Address */
sad = 0 /* Secondary Address */
eos = 0xa /* EOS Byte */
set-reos = no /* Terminate read if EOS */
set-bin = no /* Compare EOS 8-bit */
}
device {
minor = 0
name = "scope"
pad = 8
sad = 0
}
Do I need to modify my gpib.conf file?
ls -la /dev |grep gpib
crwxrwxrwx 1 root gpib 160, 0 2009-09-16 22:48 gpib0
crw-rw---- 1 root gpib 160, 1 2009-09-16 22:48 gpib1
crw-rw---- 1 root gpib 160, 10 2009-09-16 22:48 gpib10
crw-rw---- 1 root gpib 160, 11 2009-09-16 22:48 gpib11
crw-rw---- 1 root gpib 160, 12 2009-09-16 22:48 gpib12
crw-rw---- 1 root gpib 160, 13 2009-09-16 22:48 gpib13
crw-rw---- 1 root gpib 160, 14 2009-09-16 22:48 gpib14
crw-rw---- 1 root gpib 160, 15 2009-09-16 22:48 gpib15
crw-rw---- 1 root gpib 160, 2 2009-09-16 22:48 gpib2
crw-rw---- 1 root gpib 160, 3 2009-09-16 22:48 gpib3
crw-rw---- 1 root gpib 160, 4 2009-09-16 22:48 gpib4
crw-rw---- 1 root gpib 160, 5 2009-09-16 22:48 gpib5
crw-rw---- 1 root gpib 160, 6 2009-09-16 22:48 gpib6
crw-rw---- 1 root gpib 160, 7 2009-09-16 22:48 gpib7
crw-rw---- 1 root gpib 160, 8 2009-09-16 22:48 gpib8
crw-rw---- 1 root gpib 160, 9 2009-09-16 22:48 gpib9
lsmod | grep gpib
gpibprtk 261012 0
nipalk 1404272 8 NiViPciK,nipxirmk,nidimk,niorbk,gpibprtk
And I can see my device when I type visaconf
Am I doing something wrong here? or is my understanding that installing visa can help this C program find my device
also a very basic thing
ibtest fails
ibtest
Do you wish to open a (d)evice or an interface (b)oard?
(you probably want to open a device): b
enter name of interface board (or device) you wish to open: ni_pci
trying to open board named 'ni_pci'
failed to open board
Pease suggest as to what shoud I do? to
make the ibdev() function to work