Gå til innhold

Hjelp til programmering av relekort via PHP...


Anbefalte innlegg

Hei. Jeg har kjopt meg et Ontrak ADU 208 USB relekort. Jeg har fatt broren min til a lage et program i VisualStudio.net som sjekker en tekstfil fra en webserver X antall ganger i minuttet.

 

post-13318-1143298250_thumb.jpg

 

Tekstfilen paa serveren inneholder et tall (1-15)

Jeg trenger hjelp av dere til a gjore en regneoperasjon.

 

Figur 1 har verdi 11

Figur 2 har verdi 12

Figur 3 har verdi 15

Figur 4 har verdi 7

 

Hvordan kan jeg i PHP "visualisere" en variabel som innholder tallet 15 og fa det til a vises en gruppe radiobutton eller checkbox slik som i Figur 3?

 

<form>
<input type="radio" name="status" value="1" checked>
<input type="radio" name="status" value="2" checked>
<input type="radio" name="status" value="4" checked>
<input type="radio" name="status" value="8" checked>
</form>

Jeg vet hva jeg onsker a oppna, men ikke hvordan jeg skal forklare det pa noen bedre mate..

Hvis der ikke forsto noe av dette innlegget sa ma jeg prove a forklare meg bedre..

 

Takk for hjelp forelobig..

Endret av lobster
Lenke til kommentar
Videoannonse
Annonse

function dec_bin_radio($num,$bits) {
$return = '';
$bin = str_pad(decbin($num),$bits,0,STR_PAD_LEFT);
for($i = 0; $i < $bits; $i++) {
 $value = pow(2,$bits-1-$i);
 $return .= ($bin{$i}==1) ? "<input type='radio' name='status$value' value='$value' checked />" : "<input type='radio' name='status$value' value='$value'/>";
}
return $return;
}

print dec_bin_radio(12,8);

 

Putt denne funksjonen ett sted. Du må bruke unike navn på radiobuttons, ettersom kun en av gangen kan være checked. Hvis dette skal brukes til noe mer enn å bare visualisere, men også redigere, så vil du få problem med og deselecte buttons. Checkbox, eller noen form for javascript må nok brukes da.

 

(Irriterende at indents i kode ikke kommer med... )

Endret av stiber
Lenke til kommentar

Takk for scriptet stiber.

http://oneclick.no/rele.php?status=255

 

Det jeg onsker a appna na er a ha en link:

 

<a href="http://oneclick.no/rele.php?status=4">Skru paa lampe</a>

(Utgang 3 pa releet)

 

La oss si at innholdet i tekstfilen var 11 (http://oneclick.no/rele.php?status=11)

Hvis jeg klikker pa "Skru paa lampe" linken vil jo utgang 1,2 og 4 slukkes.. Det vil jeg jo ikke skal skje. Jeg trenger derfor en mulighet for a regne ut om jeg skal legge til 4 eller ikke til den eksisterende verdien.. Gjor jeg ikke??

 

Huff, dette er vanskelig.....

Endret av lobster
Lenke til kommentar

Her kommer vel boolsk algebra inn i bildet...

Du må bruke "|" (or) med den verdien du har, med den verdien du ønsker å sette.

Så 11|4 = 15 mens f.eks 12, som allerede har 4, blir 12|4 = 12. Ingen forandring.

I pseudokode blir det noe som:

$new_state = $current | $_GET['status'];

Dårlig forklart fra min side, men jeg tror det er det du leter etter. Du kan slå opp "bitwise operators" i manualen om du lurer på noe.

 

Edit: Så du hadde problemer med 8 bit visualiseringa. Har oppdatert koden over litt.

Endret av stiber
Lenke til kommentar

Hmmm Jeg forstaar hva du vil frem til Stiber. men a programmere det har jeg dessverre null sjangs til... (Jeg er ikke ikke saa dyktig)hehehe

 

Jeg haper det er noen pa forumet som kan hjelpe meg videre med dette prosjektet..

 

Jeg kan nevne at det hele dreier seg om en kunstinstallasjon jeg gjor i forbindelse med studie jeg tar. Det kommer til a bli kjempestilig nar det blir ferdig. Det eneste du/dere far igjen for a hjelpe meg med aa komme i maal er cred.

 

:)

 

Jeg onsker innspill pa hvordan jeg kan optimalisere denne koden mest mulig (for a lare av den)

http://oneclick.no/rele.phps

Endret av lobster
Lenke til kommentar

Det er ikke store endringene som skal til for at du kan styre flere lamper uten å påvirke andre.

if (isset($output)) {
$current = trim(file_get_contents('releoutput.txt'),'MK');
$output = strip_tags(substr($output,0,255));
   $WriteOutput = fopen('releoutput.txt', 'w');
   fwrite($WriteOutput, "MK".((int)$current ^ (int)$output));
fclose($WriteOutput);
}

Lenke til kommentar

Jeg trenger hjelp til en ting til..

 

La oss si at verdien er satt til 131.

(Det betyr at rele 1,2,8 er skrudd paa)

Jeg trenger en funksjon for a sjekke om rele 2 er skrudd paa eller ikke.

 

Det som er fustrerende er at du har fortalt hvordan det gjores allerede. Jeg klarer bare ikke aa se logikken

 

Jeg har testet dette, men er ikke sikker paa om jeg er pa rett vei eller ikke

 

$checkoutput = 2;

$current = trim(file_get_contents('releoutput.txt'),'MK');

echo $current & $checkoutput;

 

Jeg far da verdien 2.. Er dette godt nok for a gjore sjekk?

 

Jeg skal nar denne funksonen virker lage en if sporring..

(DET KLARER JEG)

Lenke til kommentar

Du er helt klart på rett spor. Hvis du får null til svar, er bittet ikke satt. Ellers hvis du får f.eks 2 tilbake, så er bittet satt.

Du kan også sjekke flere bit samtidig. Om du f.eks vil sjekke om 1 og 2 og 4 er satt, så kan du bruke 7. Du vil da få 3 til svar, som betyr at 1 og 2 var satt av de.

 

& "og" operatoren:

Står det to ett tall ovenfor hverandre i "regnestykket", så får du ett i svaret.

1000 0011 131
0000 0010 & 2
------------
0000 0010 = 2
============

1000 0011 131
0000 0111 & 7
------------
0000 0011 = 3
============

 

Forhåpentligvis ble du ikke mer forvirret av dette ... :p

Lenke til kommentar

Hehe. Se paa relekortet som lysbrytere du kan styre fra datamaskinen.

Naar du gaar paa websiden min (sjekk link overnfor) og klikker av og paa brytere, skrur du faktisk av lyset i taket mitt og 3 andre lamper.

 

Relekortet kan brukes til a skru av og paa ting rett og slett..

 

--

 

Broren min lagde et program som gjorde det mulig for meg a styre kortet via websiden.

Stiber (fra dette forumet) har hjulpet til med a laget scriptet som sende de riktige kommandoene til kortet..

Endret av lobster
Lenke til kommentar

Jeg var nodt til aa sperre en av utgangene (som var taklyset). Det ble litt voldsomt til tider (folk har jo klikket som gale ett par dager naa) hehehehe

:D:D:D:D

 

Jeg er nesten nodt til aa sette opp en webcam feed slik at dere kan se hvor heftig dette er.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...