Difficoltà ad usare una libreria ccalk

Sto usando una libreria cctalk per il protocollo di comunicazione di gettoniere ,lettori e hopper per la gestione del denaro, la libreria che ho trovato in rete funziona bene solo che non riesco ad usare tutte le funzioni della stessa.
Allego la libreria zip.arduino-cctalk-master.zip (8.4 KB)

Perdonami @WinGamesyun , ma noi cosa dovremmo rispondere ad una richiesta del genere?

Qual'é il metodo che non riesci a usare?
Un esempio di sketch su cui discutere?

1 Like

Allora ci stanno delle funzioni nella libreria che non riesco a richiamare ,come si vede nel unico esempio per comunicare con una gettoniera la resetta la inibisce e la prepara per accettare le monete e riconosce tranquillamente.,vorrei per esempio vedere il codice s/n della gettoniera ecc..
Se si va a vedere nella libreria ci stanno dei comandi da inviare sulla seriale o leggere delle informazioni come faccio ?

Ho dato un'occhiata alla libreria in questione, ma non mi sembra ci siano funzioni come quella a cui fai riferimento.

1 Like

Purtroppo non tenendo materiale hardware per fare delle prove non credo che riuscite a darmi una mano ,ma aprendo la libreria ci sta la parte dei comandi da inviare alla seriale che non riesco a capire cosa devo scrivere per avere risposte dallo slave.

Il protocollo cctalk è "byte oriented" e per tua sfortuna la libreria in questione è incompleta e molto poco user friendly.
L'unica cosa davvero implementata fino in fondo è la lettura del credito, per avere le altre funzionalità che il protocollo consentirebbe, di fatto devi scrivere tutto tu.

Per il numero seriale ti basterebbe inviare il comando (l'elenco lo trovi nel file headers.h)

cctsend(request_serial_number, 2, 0);

Il problema è che dopo devi implementare completamente il parsing della risposta in funzione della richiesta. Se dai un'occhiata al resto delle funzioni della libreria fa sempre una cosa del genere (bloccante, pessima idea secondo me, ma tant'è).

  while (RX_state < RXcomplete) {
    ccTalkReceive();
  }

Alla fine di questo while, ti ritrovi la risposta del dispositivo nell'array unsigned char RX_buffer[64], risposta che appunto devi elaborare tu con il resto del tuo codice.

Ricapitolando:


ccTalk SCA1(&mySerial);
....

  SCA1.cctsend(request_serial_number, 2, 0);
  while (SCA1.RX_state < SCA1.RXcomplete) {
    SCA1.ccTalkReceive();
  }

// La risposta ora è in SCA1.RX_buffer che è un array di unsigned char
1 Like

Grazie mille per aver perso un po' di tempo a vedere all interno della libreria .
Se vorrei implementare la parte Cpp con i void
devo per forza modificare anche la parte switch?