čtečka RFID Gwiot 7941E
čtečka RFID Gwiot 7941E
Zdravím.
Rád bych se zeptal, zda nemá někdo zkušenosti s čtečkou karet Gwiot 7941E
Používám k ní tuto knihovnu https://github.com/gutierrezps/gwiot7941e a musím říct, že je to dobré, nicméně potřebuji těchto čteček k jednomu Arduinu připojit více (konkrétně 5).
Problém je v tom, že funguje vždy jen ta poslední definovaná čtečka v kódu. Vidím to na nějaké omezení v SerialSoftware, který to také používá.
Není tu někdo, kdo se tomu někdy věnoval?
Děkuju
Rád bych se zeptal, zda nemá někdo zkušenosti s čtečkou karet Gwiot 7941E
Používám k ní tuto knihovnu https://github.com/gutierrezps/gwiot7941e a musím říct, že je to dobré, nicméně potřebuji těchto čteček k jednomu Arduinu připojit více (konkrétně 5).
Problém je v tom, že funguje vždy jen ta poslední definovaná čtečka v kódu. Vidím to na nějaké omezení v SerialSoftware, který to také používá.
Není tu někdo, kdo se tomu někdy věnoval?
Děkuju
Re: čtečka RFID Gwiot 7941E
SoftwareSerial můžeš použít ve více instancích, ale v jeden okamžik můžeš číst právě z jednoho z nich.
Těžko říct, proč Ti funguje vždy jen ta poslední čtečka. Nepodařilo se mi odhadnout, jak to asi máš zapojené a pak jsem si představil asi 3 varianty kódu, které by mohly být špatně...
Těžko říct, proč Ti funguje vždy jen ta poslední čtečka. Nepodařilo se mi odhadnout, jak to asi máš zapojené a pak jsem si představil asi 3 varianty kódu, které by mohly být špatně...
Re: čtečka RFID Gwiot 7941E
Tak pak by neměl být problém, ty čtečky se používají s velmi malou frekvencí a na 99% se nikdy nepotkají se čtením ve stejný čas.SoftwareSerial můžeš použít ve více instancích, ale v jeden okamžik můžeš číst právě z jednoho z nich.
Kód: Vybrat vše
#include <Gwiot7941e.h>
//ČTEČKA HLAVNÍHO VSTUPU
#define pinCteckaHlVstup 62
Gwiot7941e cteckaHlVstup;
//ČTEČKA SKLO
#define pinCteckaSklo 63
Gwiot7941e cteckaSklo;
//ČTEČKA KANCELAR REDITELE
#define pinCteckaReditel 64
Gwiot7941e cteckaKancelarReditel;
//ČTEČKA TURNIKET VSTUP
#define pinCteckaTurniketVstup 65
Gwiot7941e cteckaTurniketVstup;
//ČTEČKA TURNIKET VYSTUP
#define pinCteckaTurniketVystup 66
Gwiot7941e cteckaTurniketVystup;
// ZAHAJENI SERIOVE LINKY
Serial.begin(115200);
------v sekci setup()---------
// ZAHAJENI SERIOVE LINKY PRO CTECKY
cteckaHlVstup.begin(pinCteckaHlVstup);
cteckaSklo.begin(pinCteckaSklo);
cteckaKancelarReditel.begin(pinCteckaReditel);
cteckaTurniketVstup.begin(pinCteckaTurniketVstup);
cteckaTurniketVystup.begin(pinCteckaTurniketVystup);
----ve smyčce loop----
if (cteckaHlVstup.update()){
Serial.print("otviram hl vstup...");
}
if pro každou čtečku .update();
Re: čtečka RFID Gwiot 7941E
Nestudoval jsem tu knihovnu nějak dlouze, ale zkoušel jsi:
?
Kód: Vybrat vše
------v sekci setup()---------
// ZAHAJENI SERIOVE LINKY PRO CTECKY
cteckaHlVstup.begin(pinCteckaHlVstup, 1);
cteckaSklo.begin(pinCteckaSklo, 2);
cteckaKancelarReditel.begin(pinCteckaReditel, 3);
cteckaTurniketVstup.begin(pinCteckaTurniketVstup, 4);
cteckaTurniketVystup.begin(pinCteckaTurniketVystup, 5);
Re: čtečka RFID Gwiot 7941E
Ahoj ano, to jsem zkoušel ale bez výsledku chybu to nevrátí ale stále funguje jen ta čtečka co je uvedená jako poslední
Re: čtečka RFID Gwiot 7941E
Ano, ta knihovna je prostě napsaná trochu blbě a souběh neřeší, ačkoliv by mohla.
Ty prostě můžeš číst právě z jednoho RX u SoftwareSerial. Ta knihovna by měla přepínat mezi piny, ze kterých chce číst:
https://www.arduino.cc/en/Reference/Sof ... rialListen
Já bych tu knihovnu zahodil a četl RFID přímo pomocí SoftwareSerial. V loopu si to pořešíš pomocí listen(). Z té čtečky určitě leze UART, tak to bude na pár řádků.
Ty prostě můžeš číst právě z jednoho RX u SoftwareSerial. Ta knihovna by měla přepínat mezi piny, ze kterých chce číst:
https://www.arduino.cc/en/Reference/Sof ... rialListen
Já bych tu knihovnu zahodil a četl RFID přímo pomocí SoftwareSerial. V loopu si to pořešíš pomocí listen(). Z té čtečky určitě leze UART, tak to bude na pár řádků.
Re: čtečka RFID Gwiot 7941E
Velká škoda, protože to funguje velmi dobře až na ten souběh vícero čteček.Ano, ta knihovna je prostě napsaná trochu blbě a souběh neřeší, ačkoliv by mohla.
Nebylo by lepší tu jeho knihovnu nějakým způsobem doplnit tak, aby to řešila? nebo je jednodušší si to zkusit napsat přímo z SS?
Re: čtečka RFID Gwiot 7941E
Úprava v té knihovně by neměla být o nic náročnější než to psát celé znovu, takže klidně v té knihovně a poslat PR autorovi.
Re: čtečka RFID Gwiot 7941E
Tak jsem to zkoušel a zdá se to být funkční. Chtěl jsem to zkusit přepsat do OOP ale asi budu muset zastudovat. Vůbec se mě to nedaří. Myslel jsem, že to bude snažší
Není možné ve VOIDu cti použít .available nebo cokoliv ze SoftwareSerial. Na to počítám bude nějaký fígl. Netušíte někdo? Plácám se s Arduinem pár týdnu a znalosti jsou nízké...
Kód: Vybrat vše
#include <Arduino.h>
#include <SoftwareSerial.h>
/***********************CLASS*******************************/
class Ctecka {
private:
int pinCtecky;
String jmenoCtecky;
public:
Ctecka(int, String );
void cti();
void start();
};
Ctecka::Ctecka (int p, String jm){
pinCtecky = p;
jmenoCtecky = jm;
}
void Ctecka::start(){
SoftwareSerial jmenoCtecky(pinCtecky, -1);
jmenoCtecky.begin(9600);
}
void Ctecka::cti(){
if (jmenoCtecky.available()){
Serial.print ("XY")
}
}
Ctecka cteckHlVstup(66, "cteckaHlVstup");
/*************************************************/
void setup() {
cteckHlVstup.start();
}
/************************************************/
void loop() {
cteckHlVstup.cti();
}
Re: čtečka RFID Gwiot 7941E
V ansi C nejsou "proměnné proměnné" (v některých jazycích "chameleoni"). Ale ani to vůbec není potřeba. V construkctoru vůbec nepotřebuješ jméno čtečky. Nezapomínej, že classa je pouze nějaký "předpis", ale instancováním vznikne objekt, který si nějak pojmenuješ. V rámci toho objektu to pak žije vlastním životem (atributy objektů se "nepřekrývají"). Takže "jmenoCtecky" může jít pryč, místo toho budeš mít:
Instance SoftwareSerial zde už bude jako atribut konstantního jména.
Kód: Vybrat vše
Ctecka cteckaH1vstup(pin);
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host