Toon posts:

[PHP] serieele muis gebruiken

Pagina: 1
Acties:

Onderwerpen


  • Chesta
  • Registratie: November 2004
  • Laatst online: 20-02 21:42
Ik probeer met php een serieele muis te gebruiken. Dit is de eerste keer dat ik iets met dit protocol doe en op internet is er alleen wat basis info over het gebruik van compoorten te vinden. Het probleem is dat ik geen data krijg. Als ik de lengte van fget op iets anders dan 1 zet, blijft php daarop hangen. Ook als ik lengte helemaal weghaal. Dit is me code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?

`mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off`;

$fp = fopen("COM1","rw");

if($fp)
{
    echo "COM1 is geopend<BR>";
    
    $stoptijd = mktime() + 3;
    $leeg = 0;
    
    while(!feof($fp)) 
    { 
        $input = fgets($fp); 
        
        if($input <> "")
        {
            echo $input."<BR>";
        }
        else
        {
            $leeg++;
        }
        
        if(mktime() > $stoptijd)
        {
            echo "stop.. ".$leeg." lege pakketjes ontvangen";
            break;
        }
        
    }
        
    fclose($fp);
}

?>


Weet iemand wat ik fout doe?

End of Transmission


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 28-03 09:33

Super_ik

haklust!

fgets -- Gets [b]line[b] from file pointer

volgens de manual wacht fgets op een newline of eof en die verstuurd je muis niet

daarnaast moet je je compoort binair uitlezen en niet in ascii

en trouwens php om een muis uit te lezen...... _/-\o_

[Voor 22% gewijzigd door Super_ik op 29-08-2006 19:59]

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


Anoniem: 45234

fopen is bedoeld voor files en url's

http://nl2.php.net/fopen

  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 24-03 10:24
Chesta schreef op dinsdag 29 augustus 2006 @ 19:57:
[...]


als je denkt dat het niet kan wil ik graag argumenten horen :)
PHP is vooral gemaakt voor webscripting.
Dan is dat niet echt de meest voor de hand liggende taal :9

Portfolio


  • AW_Bos
  • Registratie: April 2002
  • Nu online

AW_Bos

Liefhebber van nostalgie... 🕰️

Ben wel benieuwd hoezo de TopicStarter dit doet...?
Of gewoon, just testeing, en een eerste gedachte gang om iets 'aparts' te proberen?

☀️ Goedemorgen zonneschijn! ☀️
☀️Ja, je maakt me zo gelukkig, en door jou voel ik me fijn! ☀️


  • mimic
  • Registratie: Februari 2002
  • Niet online

mimic

O ja joh?

Als je dit werkend krijgt wil ik graag weten wat er aangepast is aan de server ;)

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Ik zie zo snel geen wrappers voor de COM-poorten staan, vraag me serieus af waar de TS mee bezig is en of ie überhaupt enig idee heeft wat PHP is enzo.

Nu schijn je wel je eigen wrappers te kunnen maken in PHP, maar ik zie daar zo snel geen mogelijkheid voor een COM-poort ofzo.

Overigens is je muis onder Linux simpelweg een dev-node zoals `/dev/input/mouse0`, dus ZO gek is het nou ook weer niet. Maar dan moet je 't wel goed aanroepen.

Oh en 'rw' is geen geldige mode voor fopen ;)

[Voor 22% gewijzigd door Osiris op 29-08-2006 20:11]


  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 14:43

DataGhost

iPL dev

voor zover "rw" al een geldige mode is (r+ was het dan dacht ik, dan neem ik aan dat dit het equivalent ervan is) zal het bestand COM1 geopend worden, en als het niet bestaat wordt het aangemaakt. Het is dan 0 bytes groot, nogal logisch dat je dan niks vindt.

TS: Je probeert met een hamer een schroef in te DRAAIEN (niet hameren :P), ik zou je aanraden met een andere taal aan de slag te gaan (C ofzo, of zelfs visual basic denk ik).
Ook geef je aan dat je 'alleen maar basisinformatie over het gebruik van compoorten' hebt kunnen vinden, dit is natuurlijk de reinste onzin. Seriele poorten zijn al heel oud en worden nog steeds voor ongelofelijk veel zaken gebruikt, er is zo gigantisch veel informatie over te vinden dat jij die van je leven lang niet helemaal door kan lezen.
[20:08:08] (DataGhost): compoorten kan je zegmaar nog meer over vinden dan over geld
[20:10:23] (cavje): <DataGhost> compoorten kan je zegmaar nog meer over vinden dan over geld << 260.000.000 tegen 101.000.000 op google :P
Ik bedoel maar.

hee sletjes hier boven mij, ik paste het op irc, dan wacht je tot ik een reply heb gemaakt ja! :+

[Voor 34% gewijzigd door DataGhost op 29-08-2006 20:15]


  • Chesta
  • Registratie: November 2004
  • Laatst online: 20-02 21:42
Super_ik schreef op dinsdag 29 augustus 2006 @ 19:58:
fgets -- Gets [b]line[b] from file pointer

volgens de manual wacht fgets op een newline of eof en die verstuurd je muis niet

daarnaast moet je je compoort binair uitlezen en niet in ascii

en trouwens php om een muis uit te lezen...... _/-\o_
ik had ook al via binair uitgelezen met rwb, maar dit werkte ook niet. Op de meeste voorbeelden op het web stond het zonder, maar dit MOET dus?

en wat moet ik inplaats van fgets gebruiken? fread en fgetc werken ook niet...
als je een stukje naar beneden scrollt bij de reacties zie je dat het ook op com poorten werkt
AW_Bos schreef op dinsdag 29 augustus 2006 @ 20:00:
Ben wel benieuwd hoezo de TopicStarter dit doet...?
Of gewoon, just testeing, en een eerste gedachte gang om iets 'aparts' te proberen?
Leuk om te proberen :) Ik wil de knoppen voor alternatieve dingen gebruiken, de x en y-as misschien later ook nog

End of Transmission


  • Chesta
  • Registratie: November 2004
  • Laatst online: 20-02 21:42
Osiris schreef op dinsdag 29 augustus 2006 @ 20:08:
Ik zie zo snel geen wrappers voor de COM-poorten staan, vraag me serieus af waar de TS mee bezig is en of ie überhaupt enig idee heeft wat PHP is enzo.

Nu schijn je wel je eigen wrappers te kunnen maken in PHP, maar ik zie daar zo snel geen mogelijkheid voor een COM-poort ofzo.

Overigens is je muis onder Linux simpelweg een dev-node zoals `/dev/input/mouse0`, dus ZO gek is het nou ook weer niet. Maar dan moet je 't wel goed aanroepen.

Oh en 'rw' is geen geldige mode voor fopen ;)
ik ben het aan het ontwikkelen op een windows bak en dus is het gewoon COM1: :)

End of Transmission


  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 14:43

DataGhost

iPL dev

en mocht het mogelijk zijn een hint: je hebt je voorbeeld niet goed gelezen en mist een teken in je fopen-commando.
Ook vraag ik me sterk af of het mogelijk is te lezen, in het voorbeeld wordt enkel geschreven.

[Voor 29% gewijzigd door DataGhost op 29-08-2006 20:19]


  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Je moet officieel de volgende device gebruiken: "\\.\COMx". Dus bijv. "\\.\COM1".

Echter, als Windows deze muis al gebruikt, dan zul je de poort niet kunnen openen.

Edit: deze notatie geldt onder Windows uiteraard. Verder zou je "COM1:" t/m "COM9:" ook direct moeten kunnen benaderen, vanaf de 10e poort is de notatie "\\.\COM10" verplicht.

[Voor 35% gewijzigd door Stamgastje op 29-08-2006 20:36]


  • Chesta
  • Registratie: November 2004
  • Laatst online: 20-02 21:42
Stamgastje schreef op dinsdag 29 augustus 2006 @ 20:31:
Je moet officieel de volgende device gebruiken: "\\.\COMx". Dus bijv. "\\.\COM1".

Echter, als Windows deze muis al gebruikt, dan zul je de poort niet kunnen openen.

Edit: deze notatie geldt onder Windows uiteraard. Verder zou je "COM1:" t/m "COM9:" ook direct moeten kunnen benaderen, vanaf de 10e poort is de notatie "\\.\COM10" verplicht.
De officieele notatie geeft precies hetzelfde resultaat. En dat de muis niet door windows gebruikt mag worden had ik al opgemerkt, die muis staat daarom uitgeschakeld bij apparaatbeheer :)

End of Transmission


  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 14:43

DataGhost

iPL dev

Chesta schreef op dinsdag 29 augustus 2006 @ 20:38:
[...]


De officieele notatie geeft precies hetzelfde resultaat. En dat de muis niet door windows gebruikt mag worden had ik al opgemerkt, die muis staat daarom uitgeschakeld bij apparaatbeheer :)
Lees je zelf ook documentatie of wat? Misschien was mijn hint niet duidelijk genoeg: Er mist een dubbele punt na COM1 in je fopen-statement. Ook is je mode "rw" gewoon hartstikke ongeldig, lees alsjeblieft de function reference van fopen.
Heb je uberhaupt al ervaring met php?

[Voor 6% gewijzigd door DataGhost op 29-08-2006 20:59]


  • Chesta
  • Registratie: November 2004
  • Laatst online: 20-02 21:42
DataGhost schreef op dinsdag 29 augustus 2006 @ 20:54:
[...]

Lees je zelf ook documentatie of wat? Misschien was mijn hint niet duidelijk genoeg: Er mist een dubbele punt na COM1 in je fopen-statement. Ook is je mode "rw" gewoon hartstikke ongeldig, lees alsjeblieft de function reference van fopen.
Heb je uberhaupt al ervaring met php?
- even voor de duidelijkheid: ja ik heb genoeg ervaring met php. Ik kan beter php dan Nederlands (@Super_ik :P)
- die dubbele punt en rwb had ik ook allang geprobeert. Ik heb alleen een heleboel verschillende (niet kloppende) voorbeelden gezien die ik ook allemaal geprobeert heb, net als deze

End of Transmission


  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 14:43

DataGhost

iPL dev

Chesta schreef op dinsdag 29 augustus 2006 @ 21:00:
[...]


- even voor de duidelijkheid: ja ik heb genoeg ervaring met php. Ik kan beter php dan Nederlands (@Super_ik :P)
Ja dat zegt helemaal niks dus. Vervoegingen van de basisschool snap je al niet 8)7 en je spreekt iemand die iets correct zegt over een functie die in elk php-boek duidelijk wordt uitgelegd tegen 8)7
- die dubbele punt en rwb had ik ook allang geprobeert. Ik heb alleen een heleboel verschillende (niet kloppende) voorbeelden gezien die ik ook allemaal geprobeert heb, net als deze
Nou, zeg dat dan en verwijs niet naar een bron waar het (kennelijk) wel werkt en waar het anders staat. Zo kunnen we je ook niet helpen, als we constant oplossingen aandragen die je allang geprobeerd hebt. Ook de 'officiele' (zie iets hierboven) notatie van de compoort geprobeerd? Kan je met hyperterminal uitlezen wat er op die poort gebeurt?

edit: wat ik uit een eerdere post heb weggedit, maar wat kennelijk toch weer van belang is aangezien de file pointer wel geldig wordt: EOF is dus niet geset, je programma komt dus in een oneindige loop? Die loop is een beetje onhandig gecode, waardoor de parser 100% cpu gaat trekken. Wellicht dat er dan geen signalen van de compoort worden doorgegeven aan je programma? <- dit klinkt een beetje als onzin... whoa, edit2: fgets is blocking! dus geen 100% cpu
Sowieso zou ik fread gebruiken, niet fgets. Kijk maar in de php function reference voor de verschillen.

[Voor 22% gewijzigd door DataGhost op 29-08-2006 21:08]


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 27-03 19:49
Jammer dat sommige roepen dat dit niet kan met PHP, omdat het maar een webtaaltje zou zijn. Kennen duidelijk de kracht van de PHP engine niet.

Allereerst ben je opzoek naar fsockopen, en niet naar fopen.
Je probleem dat hij blijft hangen als je meer dan 1 byte wilt uitlezen heeft te maken met de blockingmode. Zie stream_set_blocking()

Kijk ook eens naar de overige functies welke je tot je beschikking hebt op http://nl2.php.net/stream en je zou er wel uit moeten kunnen komen.

[Voor 10% gewijzigd door frickY op 29-08-2006 21:12]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14:37

Creepy

Tactical Espionage Splatterer

Modbreak:Goed.. ik heb even wat replies getrasht. Kunnen we nu weer ontopic please?

Zie o.a. http://nl2.php.net/manual/en/function.fopen.php#20935

als je w+ verandert naar r dan zou het prima moeten werken lijkt me. Binary hoeft in principe niet, je kan prima karakters lezen vanaf de compoort.

@frickY: met fsockopen open je een socket via een internet protocol. Dat lijkt me niet bruikbaar voor een COM poort.

[Voor 135% gewijzigd door Creepy op 29-08-2006 21:22]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have star problems" --Kevlin Henney


  • Hydra
  • Registratie: September 2000
  • Laatst online: 10:42
Ik vraag me erg af of je uberhaupt muisinfo uit kunt lezen via een compoort. Voor zover ik weet zijn je COMx poorten alleen beschikbaar als je in datatransfer modus zit, en je dus character data krijgt. COMx poorten in windows zijn compleet softwarematig. Als windows vindt dat hij daar geen data op hoeft te zetten (want hey, wat er aanhangt is duidelijk een muis), komt er geen data op. probeer maar eens data van die poort naar een text file te pipen, die blijft ook leeg.

https://niels.nu


  • Chesta
  • Registratie: November 2004
  • Laatst online: 20-02 21:42
Het werkt! Ik had de poortinstellingen in documentatie van de muis gevonden, maar deze bleek niet te kloppen :?


dit is de werkende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?

`mode com1: BAUD=1200 PARITY=N data=7 stop=1 xon=off`;

$fp = fopen("\\.\COM1","r");

if($fp)
{
    echo "COM1 is geopent<BR>";
    
    stream_set_blocking($fp,false);
    
    $stoptijd = mktime() + 3;
    
    while(mktime() < $stoptijd) 
    { 
    
        $input = fread($fp,1);
        
        if(! empty( $input ) )
        {
            echo $input."<BR>";
        }
    }
        
    fclose($fp);
    
    echo "Poort is weer gesloten..";
}

?>

End of Transmission


  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Gefeliciteerd! Blijft de vraag wat je ermee wilt. ;)
Wil je dit soort replies voortaan achterwege laten a.u.b.?

[Voor 106% gewijzigd door RobIII op 30-08-2006 17:55]


  • mithras
  • Registratie: Maart 2003
  • Niet online
Stamgastje schreef op woensdag 30 augustus 2006 @ 17:48:
Gefeliciteerd! Blijft de vraag wat je ermee wilt. ;)
[mbr]Wil je dit soort replies voortaan achterwege laten a.u.b.?[/]
Leuk om te proberen :) Ik wil de knoppen voor alternatieve dingen gebruiken, de x en y-as misschien later ook nog
Maar het lag dus niet aan de code (mits je \\.\COM1 gebruikt en de mode r :p) van fopen?
Wel een leuk projectje dan, en ben ook benieuwd wat je hiervan gaat maken ;)

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 30-01 07:22
Hmm interessant. Ik zou het ook wel graag aan de praat willen krijgen, maar met m'n Logitech USB muis met convertertje naar PS/2 doetie helemaal niks. Hij blijft waarschijnlijk hangen op fread want hij stopt ook niet na 3 seconden.

De reden waarom ik het interessant vind is omdat ik zoek naar een manier om direct toetsaanslagen op het toetsenbord in PHP-CLI wil afvangen, dus zonder dat je steeds een ENTER hoeft te geven, en dat het script ook niet stopt als je geen toets indrukt.

Omdat dat ik dat niet aan de praat kreeg heb ik toen maar een klein C programmaatje geschreven welke de keyboardstate in een bestandje wegschrijft en waaruit PHP-CLI dan weer leest...maar dat is wel erg met de botte bijl :+

=edit=

Nou even een ouwe seriele muis eraan gehangen, maar nu krijg ik Permission Denied bij het openen van de poort...

[Voor 8% gewijzigd door Genoil op 30-08-2006 18:44]


  • Chesta
  • Registratie: November 2004
  • Laatst online: 20-02 21:42
Mithras86 schreef op woensdag 30 augustus 2006 @ 18:20:
[...]


[...]
Maar het lag dus niet aan de code (mits je \\.\COM1 gebruikt en de mode r :p) van fopen?
Wel een leuk projectje dan, en ben ook benieuwd wat je hiervan gaat maken ;)
heb net ff getest:

$fp = fopen("COM1:","rwb");

werkt ook gewoon. Dat 'rwb' mag officieel niet natuurlijk maar het werkt blijkbaar wel. Fgets werkt niet, je moet fread gebruiken en de goede compoort instellingen hebben :)

Op dit moment hangt er een drieknops muis aan. Knop1 opent tweakers.net, knop2 me favo muziekstream en knop3 een spel. De uiteindelijke bedoeling is om 2 muizen te verwerken in een casemod zodat ik previous pause play stop next knopjes op me kast heb ;)
Genoil schreef op woensdag 30 augustus 2006 @ 18:21:
Hmm interessant. Ik zou het ook wel graag aan de praat willen krijgen, maar met m'n Logitech USB muis met convertertje naar PS/2 doetie helemaal niks. Hij blijft waarschijnlijk hangen op fread want hij stopt ook niet na 3 seconden.

De reden waarom ik het interessant vind is omdat ik zoek naar een manier om direct toetsaanslagen op het toetsenbord in PHP-CLI wil afvangen, dus zonder dat je steeds een ENTER hoeft te geven, en dat het script ook niet stopt als je geen toets indrukt.

Omdat dat ik dat niet aan de praat kreeg heb ik toen maar een klein C programmaatje geschreven welke de keyboardstate in een bestandje wegschrijft en waaruit PHP-CLI dan weer leest...maar dat is wel erg met de botte bijl :+

=edit=

Nou even een ouwe seriele muis eraan gehangen, maar nu krijg ik Permission Denied bij het openen van de poort...
Permission denied betekend dat de poort al in gebruik is. Dat kan komen doordat er nog een php draait die hem open heeft, die kun je bij taskmanager afsluiten. Anders komt het omdat windows een driver voor de muis heeft geinstalleerd, in dat geval moet je die uitschakelen bij apparaatbeheer :)

End of Transmission


  • Room42
  • Registratie: September 2001
  • Niet online
Wat je ermee wilt? Man! De mogelijkheden zijn legio!
Denk aan: het besturen van een schakel controller op de RS323-port voor bijvoorbeeld de verwarming, verlichting etc via PHP, Het maken van een belletje met een serieel modem via PHP, noem maar op!
Echt, dit is super vet dat het kan! :D

Zou het ook gaan werken op Linux? Of heeft PHP daar niet genoeg rechten voor, standaard. (Ik kan het ff niet testen... ik mis een muis :) )

[Voor 19% gewijzigd door Room42 op 30-08-2006 20:33]

Blokkeert alle ads en trackers met:
- uBlock Origin
- uMatrix
- en Pi-Hole voor de rest van het netwerk.


  • Chesta
  • Registratie: November 2004
  • Laatst online: 20-02 21:42
Room42 schreef op woensdag 30 augustus 2006 @ 20:31:
Wat je ermee wilt? Man! De mogelijkheden zijn legio!
Denk aan: het besturen van een schakel controller op de RS323-port voor bijvoorbeeld de verwarming, verlichting etc via PHP, Het maken van een belletje met een serieel modem via PHP, noem maar op!
Echt, dit is super vet dat het kan! :D

Zou het ook gaan werken op Linux? Of heeft PHP daar niet genoeg rechten voor, standaard. (Ik kan het ff niet testen... ik mis een muis :) )
Ja op linux kan het ook, alleen open je /dev/nogiets in plaats van COM1:

Dat is het enige verschil.

End of Transmission


  • Room42
  • Registratie: September 2001
  • Niet online
Cool! Met /dev/ttyS0 (voor COM1) werkt het inderdaad! Ik was eigenlijk bang dat ie niet door de `mode...` zou komen, maar dat werkt dus ook gewoon.

Edit: Krijg jij wel een beetje bruikbare data? Ik ben er nog niet helemaal uit, geloof ik.

Edit2: On the other hand, "werken"... Heb niet echt het idee dat er veel regelmaat in zit :) Nouja, kan er ook weinig over vinden op Google. Wel op Windows, maar niet op Linux.

[Voor 51% gewijzigd door Room42 op 30-08-2006 21:36]

Blokkeert alle ads en trackers met:
- uBlock Origin
- uMatrix
- en Pi-Hole voor de rest van het netwerk.


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 30-01 07:22
Chesta schreef op woensdag 30 augustus 2006 @ 19:31:
Permission denied betekend dat de poort al in gebruik is. Dat kan komen doordat er nog een php draait die hem open heeft, die kun je bij taskmanager afsluiten. Anders komt het omdat windows een driver voor de muis heeft geinstalleerd, in dat geval moet je die uitschakelen bij apparaatbeheer :)
Ok dat is nu idd opgelost...maar hij blijft hangen op fread. nouja zo belangrijk is het ook allemaal niet voor mij :)

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 28-03-2022
Echt supervet om dit te zien werken. Ik was al een beetje opgefokt aan het raken door de gasten die beweren dat het niet mogelijk is om via fopen een verbinding te leggen naar een compoort. Beter gaan ze eerst eens beter hun huiswerk doen. Zelf wou ik dit gaan gebruiken om stappenmotoren aan te sturen voor een pan/tilt webcam ! 8) Hoef ik eerst geen dingen meer in VB te maken en dat via één of andere ranzige manier te laten communiceren met PHP en vice versa.

  • Rob
  • Registratie: Februari 2000
  • Niet online
Room42 schreef op woensdag 30 augustus 2006 @ 20:31:
Wat je ermee wilt? Man! De mogelijkheden zijn legio!
Denk aan: het besturen van een schakel controller op de RS323-port voor bijvoorbeeld de verwarming, verlichting etc via PHP, Het maken van een belletje met een serieel modem via PHP, noem maar op!
Echt, dit is super vet dat het kan! :D

Zou het ook gaan werken op Linux? Of heeft PHP daar niet genoeg rechten voor, standaard. (Ik kan het ff niet testen... ik mis een muis :) )
Op deze manier begrijp ik het nut wel, maar dus niet op de muis manier.

PHP is niet bedoeld om constant een waarde uit te lezen. PHP zal op een gegeven moment een timeout geven.
Een opdracht geven aan een serieel apparaat is dus goed te doen, ook als dit apparaat een status teruggeeft na de opdracht. Maar het teruggeven van de status moet niet te lang duren.

Een muis geeft bij beweging constant een status terug, maar het php script zal op een gegeven moment een time-out genereren. Het script zal dan opnieuw moeten worden uitgevoerd.

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14:37

Creepy

Tactical Espionage Splatterer

Rob schreef op donderdag 31 augustus 2006 @ 21:46:
PHP is niet bedoeld om constant een waarde uit te lezen. PHP zal op een gegeven moment een timeout geven.
Een opdracht geven aan een serieel apparaat is dus goed te doen, ook als dit apparaat een status teruggeeft na de opdracht. Maar het teruggeven van de status moet niet te lang duren.

Een muis geeft bij beweging constant een status terug, maar het php script zal op een gegeven moment een time-out genereren. Het script zal dan opnieuw moeten worden uitgevoerd.
Je weet dat je PHP ook prima via de commandline kan uitvoeren en zo een script kan maken dat continu blijft draaien zonder ook maar 1 timeout te genereren?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have star problems" --Kevlin Henney


  • simon
  • Registratie: Maart 2002
  • Laatst online: 14:25
Je kan zelfs Win32 api gebruiken met php, :D http://nl3.php.net/manual/nl/ref.w32api.php

[Voor 14% gewijzigd door simon op 31-08-2006 22:11]

|>


  • Rob
  • Registratie: Februari 2000
  • Niet online
Creepy schreef op donderdag 31 augustus 2006 @ 22:05:
[...]

Je weet dat je PHP ook prima via de commandline kan uitvoeren en zo een script kan maken dat continu blijft draaien zonder ook maar 1 timeout te genereren?
Ja, maar je wilt niet remote apparaten aansturen via commandline, dat wil je via een website.
Daarom begreep ik, en vele anderen, het nut niet van het uitlezen van de muis.

Mooie quote van de PHP site: PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


  • Room42
  • Registratie: September 2001
  • Niet online
Je kan met je CLI-php scriptje bijvoorbeeld een database vullen met actuele info en die weer met een web-PHP script uitlezen en gebruiken :)

@platvoet: True! Ik zou het niet zo snel in een productie omgeving proberen, hahaha

[Voor 28% gewijzigd door Room42 op 01-09-2006 11:39]

Blokkeert alle ads en trackers met:
- uBlock Origin
- uMatrix
- en Pi-Hole voor de rest van het netwerk.


Anoniem: 49627

Je kunt met een hamer een schroef in de muur slaan...

Gewoon de right tool voor de right job denk ik dan. Leuk om te experimenteren wat de mogelijkheden zijn maar ook een mooi moment om je horizon te verbreden en hier een andere taal voor te gebruiken. Het feit dat iets kan rechtvaardigt nou eenmaal nog niet het gebruik.

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 30-01 07:22
Anoniem: 49627 schreef op vrijdag 01 september 2006 @ 11:30:
Je kunt met een hamer een schroef in de muur slaan...

Gewoon de right tool voor de right job denk ik dan. Leuk om te experimenteren wat de mogelijkheden zijn maar ook een mooi moment om je horizon te verbreden en hier een andere taal voor te gebruiken. Het feit dat iets kan rechtvaardigt nou eenmaal nog niet het gebruik.
Mja het enige wat je er in C bij krijgt is gezeik met pointers. I vinnet wel mooi...dingen gebruiken waarvoor ze niet bedoeld zijn...een iets creatievere manier van je horizon verbreden zeg maar ;)

jeej bij mij werkt het nu ook!!

[Voor 3% gewijzigd door Genoil op 01-09-2006 15:43]


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 30-01 07:22
Misschien heeft hier iemand nog wat aan, een manier om ook de x en y values van de muis uit te lezen (Microsoft 2 knops-serieel of compatible). De middelste knop wilde bij mij niet...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?
`mode com1: BAUD=1200 PARITY=N data=7 stop=1 xon=off`;

$fp = fopen("\\.\COM1","r");

if($fp)
{  
    stream_set_blocking($fp,false);
    $bytes = array();
    $input = "00";
    while(1) 
    { 
        $input.= fread($fp, 3 - strlen($input));      
        if(strlen($input) == 3) {
            for($i=0;$i < 3;$i++) {
                $bytes[$i]= ord(substr($input, $i,1));
            }
            $l = ($bytes[0] & 32) / 32;
            $r = ($bytes[0] & 16) / 16;
            $x = (($bytes[0] & 3)  << 6) | $bytes[1];
            $y = (($bytes[0] & 12) << 4) | $bytes[2];   
            if($x > 127) $x = itc($x);
            if($y > 127) $y = itc($y);
            
            echo $l."\t".$r."\t".$x."\t".$y."\n";
            $input = "";
        }
    }
        
    fclose($fp);
    
}

function itc($byte) {
    $oc = 0;
    for($i = 0; $i < 8; $i++) {
        $m   = 1 << $i;
        $oc |= $byte & $m ? 0 : $m;
    }
    return -($oc+1);
}

?>


Bij wijze van experiment heb ik een CLI appje geschreven waarin je een ASCII-muis kunt besturen. Totaal onbruikbaar overigens, maar daar gaat het niet om :+. De screenshot is mooier dan in het echt, waarbij je helemaal gek wordt van de tearing...

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee