Despre accesibilitatea produselor si programare in general

Diverse limbaje, programare, scripting, coduri, unelte specifice etc.
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Nu, dar poti crea cu el un cod sursa pe care sa il compilezi sub Linux cu un compilator de C care ruleaza sub Linux (cum e de exemplu gcc).
Asta bineinteles, daca nu folosesti anumite biblioteci care folosesc diverse elemente din Windows si care pot rula doar sub Windows.
BosGrigore
Plutonier
Mesaje: 145
Membru din: 22 Iul 2012, 21:48
Localitate: Cluj-Napoca

Mesaj de BosGrigore »

Ai instalat Linux pe pc pentru ca vreau sa imi compilezi ceva simplu pentru untest de accesibilizare. Daca reuseste testul o sa te rog sa-mi recomanzi un Linux dar care sa se impace cu Windows xp.
Grigore
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Am instalata local o distributie de Linux numita Vinux, care este de fapt Ubuntu pe care s-a instalat cititorul de ecran Orca. Nu este instalata direct pe PC, ci ruleaza ca imagine virtuala Vmware.
Nu functioneaza insa prea bine si m-am chinuit destul de mult sa o fac sa functioneze cat de cat, deci nu as putea spune ca o recomand, insa din pacate nu stiu una mai buna.
Eu accesez in fiecare zi Linux, dar nu acea distributie, ci accesez prin SSH servere pe care ruleaza Linux, direct de sub Windows, adica folosind JAWS. Folosesc pentru asta programul SecureCRT.

Problema este ca prin SSH nu pot sa testez decat programe care ruleaza in linia de comanda, nu si programe cu o interfata grafica, asa ca daca programul tau are o interfata grafica (fiindca spuneai despre accesibilitate), va trebui sa il compilez sub acea imagine Vinux care este destul de subreda. Cred ca nu am mai accesat-o de vre-un an... sper sa functioneze. :-)

Nu ma pricep insa aproape deloc la compilarea in C asa ca va trebui sa imi dai linia de comanda cu toti parametrii necesari. Daca este vorba despre un program cu interfata grafica, sincer ma astept sa nu functioneze, fiindca probabil are nevoie de bibliotecile grafice cu care trebuie sa creeze acea interfata. Daca sti ce biblioteci grafice foloseste, sa imi spui si eventual voi incerca sa le instalez cu apt-get inainte de a incerca sa compilez programul.
BosGrigore
Plutonier
Mesaje: 145
Membru din: 22 Iul 2012, 21:48
Localitate: Cluj-Napoca

Mesaj de BosGrigore »

Sa-ti spun pe scurt ce vreau sa fac. Am un receptor pentru satelit cu sistemul de operare Linux. Vreau sa pun pe un memorystick (USB) un mic program care sa dea un beep la fiecare apasare de tasta de pe telecomanda. Nu am nevoie de interfata grafica. Este un program asemanator cu cel postat de mine cu trei heading-uri mai sus. Pentru a ajunge la butonul de cautare trebuie sa fac mai multi pasi prin meniul receptorului si daca nu amun raspuns printr-un semnal acustic nu ajung cu precizie pe acest buton.
Grigore
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Atunci nu ai nevoie de o interfata grafica si ar trebui sa fie mai simplu.
Nu am inteles insa cum functioneaza acel sistem.
Adica nu am inteles de ce ai nevoie de un stick de memorie USB si unde trebuie sa il introduci. In acel receptor, sau in computer, si atunci care e legatura intre receptor si computer...
Daca spui ca acel receptor foloseste Linux, atunci ar trebui sa poti accesa acel Linux si sa rulezi programe sub el. Sau nu am inteles bine?
Iar daca poti rula programe probabil ca poti copia si fisiere pe acel sistem. Sau nu?
Iar daca vrei sa rulezi un program care sa scoata sunete, acel sistem cu Linux ar trebui sa aiba cel putin un difuzor propriu...
Nu stiu nici cum functioneaza acel receptor si cum poate fi configurat sa ruleze un program cand apesi o tasta. Ma gandesc ca daca pur si simplu poti rula un program, nu trebuie sa faci tu un program, ci ai putea folosi un program gata facut care sa redea un fisier .wav cu beep-urile dorite...
BosGrigore
Plutonier
Mesaje: 145
Membru din: 22 Iul 2012, 21:48
Localitate: Cluj-Napoca

Mesaj de BosGrigore »

Este un receptor pentru programe tv si radio transmise prin satelit (Eutelsat 16a 16 grade est).
Pe windows functioneaza codul urmator:
inceput cod
//Beep in receptor
#include <windows.h>
#include <iostream>
using namespace std;
int main (void)
{
int i;
short key1 = 0;
if (!key1)
{
Sleep (100);
Beep (2300, 100);
Beep (2500, 100);
Beep (210000, 500);
Beep (2300, 100);
Beep (2500, 100);
Beep (210000, 500);
}
while (!key1)
{
key1 = GetAsyncKeyState ( 2 ); //key code=2 este pentru tasta 1. Oprire
if (key1)
{
Beep (2300, 100);
Beep (2500, 100);
Beep (210000, 500);
Beep (2300, 100);
Beep (2500, 100);
Beep (210000, 500);
}
for (i=0; i<256; i++) //verificam tastele cu ajutorul buclei for
{
if (GetAsyncKeyState (i)) //verificam codul pentru fiecare tasta apasata
{
Beep (4000, 100);
printf ("Codul tastei este: %d=0x%x\n", i, i);
}
}
Sleep (50); //pauza 50 milisecunde
}
return 0;
}
sfarsit cod
Key code = 2 conteaza mai putin pana ce voi afla codurile pentru fiecare tasta. Am inteles ca Linux nu respecta key codes din Windows.
Sa vad solutia ta cu un fisier audio. Poate solutia ta ar fi mai buna pentru ca receptorul reda video si audio. Nu cred ca reda fisiere wav.
Trimite fisierele compilate pe:
bosgrigore@yahoo.com
Grigore
BosGrigore
Plutonier
Mesaje: 145
Membru din: 22 Iul 2012, 21:48
Localitate: Cluj-Napoca

Mesaj de BosGrigore »

Receptorul este standalone, nu este conectat la pc, are boxe separate si este conectat la televizor. Eu il folosesc doar cu boxe, daca nu vad. Aparatul nu are legatura cu pc-ul.
Grigore
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

OK, dar cum accesezi sistemul de operare Linux de pe acel receptor? Ii poti conecta si o tastatura si un monitor? Sau cum altfel?
BosGrigore
Plutonier
Mesaje: 145
Membru din: 22 Iul 2012, 21:48
Localitate: Cluj-Napoca

Mesaj de BosGrigore »

Pot sa-l conectez la pc prin usb, pentru ca are un port usb unde pot pune un card de memorie. Exista si un program pentru incarcare care se instaleaza in windows.
Receptorul pentru satelit are un meniu asemanator cu a unui televizor smart led. Tipuri de fisiere utilizate: .abs, .udf, etc. Are si doua jocuri Sudocu si ottelo. Aici la jocuri cred ca ar trebui pus softul pentru beep.
Deci se poate utiliza un cablu usb.
Grigore
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Din cate inteleg nu este un sistem deschis, adica nu ai acces la sistemul de operare Linux, nu ii poti vedea fisierele si nu poti rula pe el un program, ci poti doar accesa programele pe care le are deja instalate.
Am inteles si ca il poti conecta la computer printr-un cablu USB si ca poti sa transferi pe el programe cu ajutorul unui program.

Or asta nu prea cred ca iti este de mare folos.
Pentru a putea incarca un program care sa ruleze la fel ca acele jocuri trebuie sa sti cum au fost create acele jocuri si ce interfata folosesc, ce biblioteci sunt deja instalate sub acea distributie de Linux etc.
Insa chiar daca ai putea rula un program ca pe un joc, tot nu vad cum l-ai putea face sa scoata un beep cand manevrezi telecomanda...

Gandeste-te ca si iPhone-ul il poti conecta la computer si poti transfera pe el fisiere si programe printr-un cablu USB cu ajutorul unui program, si ca pe el ruleaza sistemul de operare iOS care este o varianta de Free BSD, doar ca nu poti copia si rula pe el un program care ruleaza sub BSD, sau Mac OS X, sau iOS, ci doar daca respecta o anumita interfata.
BosGrigore
Plutonier
Mesaje: 145
Membru din: 22 Iul 2012, 21:48
Localitate: Cluj-Napoca

Mesaj de BosGrigore »

Am un televizor LCD care reda o melodie scurta atit la pornirea cat si la oprirea din telecomanda. Acesta are in meniu un buton de control numit sunet in/out si cand este activat genereaza melodia respectiva. De aici a aparut si ideia cu receptorul pentru satelit. Cred ca abandonam problema.
Ce reprezinta in "c++ 2008 express" atunci cand la inceputul unui exemplu de cod apare:
// compile with: /EHsc /W3 /c
Grigore
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Toate compilatoarele sunt programe care ruleaza in linia de comanda, inclusiv cele pentru C++ sau C#.
Mediile de programare de genul Visual Studio sau Eclipse sunt doar interfete grafice cu care editezi programele, dar cand compilezi programele, ele nu fac altceva decat sa ruleze compilatorul cu o multime de parametrii, in functie de optiunile alese, de optiunile implicite, de bibliotecile folosite in program etc.

Dupa cate pare, acel mesaj spune ca trebuiie sa compilezi programul cu acei parametrii, asta daca faci compilarea in linia de comanda. Probabil ca daca compilezi programul in Visual Studio acei parametrii vor fi adaugati implicit.
BosGrigore
Plutonier
Mesaje: 145
Membru din: 22 Iul 2012, 21:48
Localitate: Cluj-Napoca

Mesaj de BosGrigore »

pb = pa++ este acelasi lucru cu pb = pa+1? Daca da de ce adresa variabilei incrementata nu este aceeasi cu valoarea pa+1 din urmatoru cod:
inceput cod
#include <iostream>
using namespace std;
int main (void)
{
int a;
int *pa, *pb;
cout <<"&a="<<&a<<'\n'; //Afisam adresa variabilei a
pa = &a; //Variabilei pointer ii atribuim adresa variabilei a
cout <<"pa="<<pa<<'\n'; //Afisare pa
pb = pa++; //atribuim pa incrementat variabilei pointer pb
cout <<"pb="<<pb<<'\n'; // de ce nu se incrementeaza adresa?
//pb = pa+1;
//cout <<"pb="<<pb<<'\n'; //adresa creste cu 4
}
sfarsit cod
Ce este gresit in cod?
Grigore
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

"pb = pa++ este acelasi lucru cu pb = pa+1?"

Dupa cum ziceam, nu stiu C/C++, dar in mod normal nu ar trebui sa fie egale.

++ este un operator denumit si post-increment cand se foloseste ca variabila++, adica incrementeaza valoarea "dupa".
In Perl exista si un operator ++ numit pre-increment, care incrementeaza valoarea "inainte" daca se foloseste ca ++variabila. Daca exista si in C/C++, ceea ce este foarte probabil, de acela ai nevoie, adica sa pui ++ inaintea variabilei.


Altfel, pb va fi egal cu pa, si abia apoi pa va fi incrementat.
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Iar de fapt in loc de
pb = pa++
ar trebui sa folosesti simplu:
pb = pa + 1
fiindca este mai usor de inteles.
Sau daca ai nevoie sa incrementezi mai intai pa, este mai bine sa faci intai incrementarea cu pa++, si abia apoi sa faci pb = pa.
Programul nu trebuie doar sa functioneze ci si sa fie usor de intretinut de altii.
Scrie răspuns