Autore Topic: PiFace e wiringPi  (Letto 11784 volte)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
PiFace e wiringPi
« il: 29 Giugno 2014, 08:31:48 »
ho una scheda PiFace e sto tentando di farla funzionare con la libreria wiringpi

scaricata e compilata

per inizializzare la PiFace bisogna usare la funzione
wiringPiSetupPiFace()

come affermato quì
https://projects.drogon.net/raspberry-pi/wiringpiface/
controllando con il fantastico programma di Vuott, il "Cercafunzioni" nelle librerie generate dalla compilazione
la funzione di cui sopra non c'è
spulciando nei sorgenti viene solo dichiarata come extern in wiringPi.h con una nota sopra (deprecated)

ho provato gli esempi invece funzionano
allora ho controllato e ho trovato la funzione
piFaceSetup()
lanciando questa mi da un errore
mcp23s17 simbolo non trovato

per il momento mi sono fermato qui

proverò anche a scrivere allo sviluppatore della libreria
« Ultima modifica: 29 Giugno 2014, 10:24:37 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.259
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #1 il: 29 Giugno 2014, 14:00:41 »
piFaceSetup()
lanciando questa mi da un errore
mcp23s17 simbolo non trovato
mcp23s17, se non ho compreso male, è un microchip.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #2 il: 29 Giugno 2014, 21:29:12 »
@Vuott: si è un chip per la decodifica SPI

Riassumendo
ci sono due librerie
1)  wiringPi
2)  wiringPiDev

Gordon, Il creatore delle librerie mi ha confermato che
per inizializzare la PiFace bisogna chiamare prima la funzione
Codice: c [Seleziona]
wiringPiSetup() 

contenuta nella 1
poi la funzione
Codice: c [Seleziona]
piFaceSetup()

contenuta nella 2

naturalmente ho dichiarato

Codice: gambas [Seleziona]
public extern wiringPiSetup() as integer in "libwiringPi"
public extern piFaceSetup(PIN as integer) as integer in "libwiringPiDev"


le funzioni vengono trovate

ora però ecco l'inghippo

piFaceSetup() (lib 2) richiama una routine mcp23s17Setup() che è contenuta nella (lib 1)

infatti l'errore che  ottengo è

GPIO: symbol lookup error: /usr/local/lib/libwiringPiDev.so: undefined symbol: mcp23s17Setup

gli esempi che sono allegati alla libreria invece funzionano, si lanciano da terminale.
usano le due funzioni di cui sopra come inizializzazione

A questo punto posso pensare che il problema sia il modo in cui vengono dichiarate le funzioni EXTERN

I sorgenti di wiringPi sono disponibili e se li ho quasi capiti io...........




« Ultima modifica: 30 Giugno 2014, 08:49:06 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.259
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #3 il: 29 Giugno 2014, 23:40:12 »
piFaceSetup() (lib 2) richiama una routine mcp23s17Setup() che è contenuta nella (lib 1)

infatti l'errore che  ottengo è

GPIO: symbol lookup error: /usr/local/lib/libwiringPiDev.so: undefined symbol: mcp23s17Setup

Come hai dichiarato con Extern la funzione esterna mcp23s17Setup() ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #4 il: 30 Giugno 2014, 08:09:40 »
la funzione mcp23s17Setup() ho provato a dichiararla  con le due librerie

libwiringPi e libwiringpiDev

anche se nel programma Gambas non viene mai richiamata

Allego la libreria in oggetto
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.259
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #5 il: 30 Giugno 2014, 10:08:12 »
Puoi allegare anche le due librerie condivise .so ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #6 il: 30 Giugno 2014, 11:09:24 »
allegate le librerie

il codice Gambas

Codice: gambas [Seleziona]

public extern wiringPiSetup() as integer in "libwiringPi"
public extern piPifaceSetup(pin as integer) as integer in "libwiringPiDev"
public extern mcp23s17Setup(a as integer , b as integer , c as integer) in "libwiringPi" ' aggiunta per test

Form_Open()

wiringPiSetup()
piFaceSetup(200)










"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.259
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #7 il: 30 Giugno 2014, 11:21:15 »
gli esempi che sono allegati alla libreria invece funzionano, si lanciano da terminale.
usano le due funzioni di cui sopra come inizializzazione
Puoi indicare un paio di questi esempi in C che funzionano ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #8 il: 30 Giugno 2014, 11:41:57 »
ne ho provato uno
blink
si trovano nella cartella examples
vanno compilati e po si lanciano
sudo ./blink

ho dato anche io una occhiata a blink.c

inizializza con
Codice: c [Seleziona]
wiringPiSetup();
piFaceSetup(200);


dimenticavo
anche gambas va avviato con sudo

in alternativa va usata
wiringPisetupSys()
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.259
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #9 il: 30 Giugno 2014, 12:03:03 »
Codice: gambas [Seleziona]

public extern wiringPiSetup() as integer in "libwiringPi"
public extern piPifaceSetup(pin as integer) as integer in "libwiringPiDev"
public extern mcp23s17Setup(a as integer , b as integer , c as integer) in "libwiringPi" ' aggiunta per test

Form_Open()

wiringPiSetup()
piFaceSetup(200)


Vedi che hai commesso un errore nella dichiarazione della seconda funzione:
Codice: gambas [Seleziona]

public extern piPifaceSetup(pin as integer) as integer in "libwiringPiDev"

che invece è:
Codice: c [Seleziona]
int piFaceSetup (const int pinBase)

 (come correttamente hai invece scritto poi nella routine)

Quindi va dichiarata:
Codice: gambas [Seleziona]

public extern piFaceSetup(pin as integer) as integer in "libwiringPiDev"
« Ultima modifica: 30 Giugno 2014, 12:17:20 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #10 il: 30 Giugno 2014, 12:12:08 »
Hai ragione,ho trascritto male la funzione
nel codice sul Raspy è corretta
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.259
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #11 il: 30 Giugno 2014, 12:16:31 »
Sulla base dei sorgenti che hai inviato, mi sono ricreato ex-novo le due librerie condivise .so (le altre erano state generate per un sistema a 32-bit), e le due inizializzazioni mi pare che funzionino.
V'è da annotare che utilizzando la prima funzione
Codice: gambas [Seleziona]
wiringPiSetup()

però in console ottengo questo avviso/errore:
" wiringPiSetup: Must be root. (Did you forget sudo?) "
coerentemente con quanto affermato qui:
https://projects.drogon.net/raspberry-pi/wiringpi/functions/
e come hai anche tu ricordato:
anche gambas va avviato con sudo

in alternativa va usata
wiringPisetupSys()

e pertanto ho impostato quest'altra funzione:
Codice: gambas [Seleziona]
wiringPisetupSys()

che non mi dà errori strutturali se non questo:
piBoardRev: Unable to determine board revision from /proc/cpuinfo
 -> No "Revision" line
 ->  You may want to check:
 ->  http://www.raspberrypi.org/phpBB3/viewtopic.php?p=184410#p184410

ma verosimilmente perché non ho raspberry.  :-\
« Ultima modifica: 30 Giugno 2014, 12:23:29 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #12 il: 30 Giugno 2014, 12:28:04 »
stai provando su raspberry?
ora provo su questo Pc

« Ultima modifica: 30 Giugno 2014, 12:39:06 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.259
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #13 il: 30 Giugno 2014, 12:29:01 »
..... se non questo:
piBoardRev: Unable to determine board revision from /proc/cpuinfo
 -> No "Revision" line
 ->  You may want to check:
 ->  http://www.raspberrypi.org/phpBB3/viewtopic.php?p=184410#p184410

ma verosimilmente perché non ho raspberry.  :-\
Penso proprio che sia determinato dal fatto che non uso Raspberry; infatti se, dopo averlo compilato, lancio da terminale con sudo quel breve codice usando la funzione " wiringPiSetup() ", ottengo quel medesimo avviso.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.259
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: PiFace e wiringPi
« Risposta #14 il: 30 Giugno 2014, 12:31:44 »
stai provando su raspberry?
No, non ho raspberry, ma ho semplicemente provato il tuo codice Gambas usando le due librerie esterne condivise .so che ho generato dai sorgenti che hai passato.
« Ultima modifica: 30 Giugno 2014, 12:34:16 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »