Terminal se sériovou komunikaci
Re: Terminal se sériovou komunikaci
Nebo dalo by se to třeba přes Bluetooth a mobil? Že bych si pořídil Bluetooth modul?
Re: Terminal se sériovou komunikaci
Pak by jsi potřeboval nějakou terminálovou apku. Možná něco takového existuje, nevím.
Re: Terminal se sériovou komunikaci
Ale psal jsi, že údaje o uživateli by se doplnily na PC. Takže nějaké spojení s PC tam je, nebo ne? Těžko se hledá řešení, když neznáme kontext a odkrýváš ho postupně.
Vytvářet nějaký HW terminál bude samozřejmě vývoj prodražovat. I následný servis, protože každá oprava = přehrátí firmware.
Pokud tomu nic nebrání (a zatím není jasné, zda ano), skutečně bych zvážil udržování databáze mimo čip. I aplikace na správu půjde napsat mnohem rychleji, tím i levněji. Aktualizovatelná bude také snadněji.
Rozhodně by mě nebavilo zakládat 10 nových uživatelů a točit nějakým enkoderem a listovat v abecedě, když na PC to bude naťukaný za 10 vteřín...
Vytvářet nějaký HW terminál bude samozřejmě vývoj prodražovat. I následný servis, protože každá oprava = přehrátí firmware.
Pokud tomu nic nebrání (a zatím není jasné, zda ano), skutečně bych zvážil udržování databáze mimo čip. I aplikace na správu půjde napsat mnohem rychleji, tím i levněji. Aktualizovatelná bude také snadněji.
Rozhodně by mě nebavilo zakládat 10 nových uživatelů a točit nějakým enkoderem a listovat v abecedě, když na PC to bude naťukaný za 10 vteřín...
Re: Terminal se sériovou komunikaci
Tady je pro ukázku jedno menu, které slouží pro nastavení jednotky. Je to z rozsáhlejšího programu, takže spousta věcí tam není definovaná, ale názvy jsou celkem výstižné.
Jednotka se připojí na PC přes převodník sériového portu na USB. Na PC si pustím terminálový program na COM toho převodníku a už to jede.
Jednotka se připojí na PC přes převodník sériového portu na USB. Na PC si pustím terminálový program na COM toho převodníku a už to jede.
Kód: Vybrat vše
//---------------- Setup mode
// V setup modu se vzdy komunikuje na 9600bd pres terminal, radio je vypnute, nekontroluje se stav baterie
if(digitalRead(Setup)==LOW){ //setup mode
char MMChoice;
digitalWrite(RadioReset,LOW);
delay(5); //nechame RM resetovane, protoze se bude komunikovat jen pres terminal
digitalWrite(LedB,HIGH); //indikacni led fialova
digitalWrite(LedR,HIGH);
do{
MMChoice=MainMenu();
switch(MMChoice){
case '1': //nastaveni mericiho kanalu baterii
Menu1();
break;
case '2': //nastaveni adresy modulu
Menu2();
break;
case '3': //kontrola vystupu z GPS modulu
Menu3();
break;
}
}while(MMChoice!='0');
digitalWrite(LedR,LOW);
digitalWrite(LedB,LOW); //indikacni led zhasnout
ResetArduino(); //SW reset arduina
}//---------------- End Setup mode
//***************************************************************************************************
char MainMenu(){ //zobrazi nabidku a vrati znak vyberu
char Choice=0;
Serial.println();
Serial.println(F("#################### SETUP HLAVNI MENU ######################\n"));
Serial.println(F(" 1 Kalibrace mereni napeti baterie."));
Serial.println(F(" 2 Nastaveni adresy."));
Serial.println(F(" 3 Kontrola vypisu dat z GPS modulu"));
Serial.println(F(" 0 Exit a restart.\n\n"));
Serial.println(F("Zadejte volbu."));
while(Serial.available()>0) Serial.read();
do{
if(Serial.available()>0){
Choice=Serial.read();
}
}while(Choice<'0' || Choice>'3');
return Choice;
}; //End of MainMenu()
//***************************************************************************************************
void Menu1(void){ // podmenu nastaveni mericiho kanalu
char ch=0;
float VBatt,VInput;
do{
Serial.println();
Serial.println(F("#################### MENU KALIBRACE ######################"));
Serial.println(F("Nastaveni korekce mereni napeti Li-ion akumulatoru.\n"));
Serial.print(F("Nekorigovana hodnota napeti="));
VBatt=GetRAWVoltage(BatterySense);
Serial.println(VBatt,3);
Serial.print(F("Korigovana hodnota napeti="));
Serial.println(VBatt*CorrectionMeasure,3);
Serial.print(F("Korekcni konstanta="));
Serial.println(CorrectionMeasure,4);
Serial.println();
Serial.println(F(" 1 Zadani zmereneho napeti akumularoru."));
Serial.println(F(" 2 Ulozeni korekcni konstanty do EEPROM."));
Serial.println(F(" 3 Periodicke mereni napeti akumulatoru."));
Serial.println(F(" 0 Zpet do hlavniho menu."));
Serial.println(F("Zadej neco jineho pro aktualizaci stranky."));
while(Serial.available()>0) Serial.read();
while(Serial.available()==0) delay(1);
ch=Serial.read();
if(ch=='1'){
while(Serial.available()>0) Serial.read();
Serial.println();
Serial.println(F("############### SKUTECNE NAPETI #################"));
Serial.println(F("Zadej zmerene napeti akumulatoru ve tvaru X.XXX, napr. 3.605"));
while(Serial.available()==0) delay(1);
VInput=Serial.parseFloat();
if(VInput<2.0 || VInput>4.5){
Serial.println(F("Chybne zadani, bude ignorovano!!"));
digitalWrite(Beep,HIGH); //chybu zvukove signalizujeme
delay(1000);
digitalWrite(Beep,LOW);
delay(5000);
}else{
CorrectionMeasure=VInput/VBatt;
}
}
if(ch=='2'){
Serial.println();
Serial.println(F("############### ULOZENI KONSTANTY #################"));
while(Serial.available()>0) Serial.read();
if(CorrectionMeasure>MaxCorr || CorrectionMeasure<MinCorr){
Serial.println(F("Korekcni konstanta mimo povolenou toleranci!! Nemohu ji ulozit!!"));
digitalWrite(Beep,HIGH); //chybu zvukove signalizujeme
delay(1000);
digitalWrite(Beep,LOW);
delay(10000);
}else{
EEPROM.put(NVBaseAdr+1,CorrectionMeasure);
Serial.println(F("Korekcni konstanta byla ulozena."));
}
}
if(ch=='3'){
Serial.println();
Serial.println(F("############### MERENI NAPETI #################"));
Serial.println(F("Pro ukonceni zadejte cokoli."));
while(Serial.available()>0) Serial.read();
do{
Serial.print(F("Napeti akumulatoru="));
Serial.println(GetVoltage(BatterySense),3);
delay(250);
}while(Serial.available()==0);
while(Serial.available()>0) Serial.read();
}
}while(ch!='0');
}; // END podmenu nastaveni mericiho kanalu
Re: Terminal se sériovou komunikaci
No, počítač bych měl jen já... Ostatní by ho určitě netahali s sebou... A mně upřímně se taky s ním nechce tahat všude... Prostě dejme tomu, že potkám uživatele, kterému chci umožnit vstup... Tak bych vzal administratorsky čip, načetl bych ho na RFID čtečce a třeba na 10 s by bylo možné přidat dalšího uživatele (buď by se dalo ručně - přes ten terminál). Nebo mě napadlo, že by během těchto 10 sekund daný uživatel přiložil taky kartu (uložilo by se číslo čipu a ostatní by se nastavilo na nějaké vychozí hodnoty a zbytek bych doladil časem v PC) - hlavně že by mu ta karta fungovala...KamilV píše: ↑27 led 2021, 19:51Ale psal jsi, že údaje o uživateli by se doplnily na PC. Takže nějaké spojení s PC tam je, nebo ne? Těžko se hledá řešení, když neznáme kontext a odkrýváš ho postupně.
Vytvářet nějaký HW terminál bude samozřejmě vývoj prodražovat. I následný servis, protože každá oprava = přehrátí firmware.
Pokud tomu nic nebrání (a zatím není jasné, zda ano), skutečně bych zvážil udržování databáze mimo čip. I aplikace na správu půjde napsat mnohem rychleji, tím i levněji. Aktualizovatelná bude také snadněji.
Rozhodně by mě nebavilo zakládat 10 nových uživatelů a točit nějakým enkoderem a listovat v abecedě, když na PC to bude naťukaný za 10 vteřín...
Re: Terminal se sériovou komunikaci
A online, nebo alespoň v dosahu lokální sítě, to místo není?
Re: Terminal se sériovou komunikaci
Je v dosahu lokální sítě, ale kdysi jsem chtěl zprovoznit WiFi modul, ale nějak mi to nefungovalo... Jako wifi byla vidět, připojil jsem se na ni bez problémů, ale to bylo vše.. Na modulu začala blikat modrá led, jako že jsem připojený.. A pak jak jsem ten modul studoval, tak jsem zjistil, že potřebuji nějaký programátor a ten jsem neměl.. Tak jsem si říkal, že se k tomu vrátím, až vyřeším důležitější věci.. Mám modul ESP 8266, 01.
Re: Terminal se sériovou komunikaci
Já jsem tu wifi chtěl použít jen kvůli bezdrátovému přehrávání programu.. Nic víc.. Prostě abych nemusel propojovat arduino s notebookem pomocí kabelu.
Re: Terminal se sériovou komunikaci
To už jsem psal 2x.
Pokud by do bylo na síti, nemuselo by se ke čtečce připojovat žádné PC, ale mohla se kontaktovat databázi někde na síti a ověřovat karty tam.
Na administraci databáze pak půjde velmi rychle napsat třeba i pěkná grafická administrace, pro PC, pro mobily... Nebo, pokud na to není čas a rozpočet, vezme se nějaký již existující sql tool a bude se administrace karet dělat přes něj. V čipu bych si pak již třeba jen uchovával ID povolených karet, kdyby náhodou čtečka byla na chvíli offline, aby fungovala i v nějakém nouzovém režimu.
Pokud by do bylo na síti, nemuselo by se ke čtečce připojovat žádné PC, ale mohla se kontaktovat databázi někde na síti a ověřovat karty tam.
Na administraci databáze pak půjde velmi rychle napsat třeba i pěkná grafická administrace, pro PC, pro mobily... Nebo, pokud na to není čas a rozpočet, vezme se nějaký již existující sql tool a bude se administrace karet dělat přes něj. V čipu bych si pak již třeba jen uchovával ID povolených karet, kdyby náhodou čtečka byla na chvíli offline, aby fungovala i v nějakém nouzovém režimu.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů