Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Võrgust püütud numbri järgi on vaja http päring saata märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
raxz
HV Guru

liitunud: 27.07.2003




sõnum 07.07.2017 14:57:49 Võrgust püütud numbri järgi on vaja http päring saata vasta tsitaadiga

Mure selline, et saan mikrofoni nupu vajutuse peale numbri, mille järgi on vaja juhtida kaamera õigele positsioonile. Number on võrgus olemas, aga ma ei oska seda kätte saada.
Süsteemi kiire tutvustus: http://resource.boschsecurity.com/documents/DCN_NG_OI_Quick_Installation_Guide_enUS_11873966731.pdf
LK 5 2.4 Monitoring microphone activities
Mul on vaja saata mikrofoni numbri järgi HTTP päring. Näiteks kui number on 1, siis tuleb minna aadressile http://192.168.0.XX/cgi-bin/aw_ptz?cmd=%23RYY&res=1 kus XX on vastav kaamera ning YY mikrofoni number-1.
Pikem süsteemi tutvustus: http://resource.boschsecurity.com/documents/DCN_NG_OI_Installation_Manual_enUS_9007211128703755.pdf
Kas keegi oskab öelda, kuidas alustada või tahab ise mingi skripti valmis kirjutada ja raha küsida, mille jaoks peaks see teema vist töövahenduses olema? Samas tahaks ise ka nokitseda, kui see väga keeruline ei ole.
Kommentaarid: 46 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 45
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 07.07.2017 16:25:55 vasta tsitaadiga

Kiire häkk on selle CCU_DDTK.exe väljundist number kätte saada. Ilusam lahendus on ennast sellest protokollist läbi närida ja ise klient kirjutada. Aga kuna paistab et tegemist on suhteliselt spetsiifilise asjaga, siis vaevalt see kellelgi siin käpas on.
Esimene lahendus ehk proge väljundi kinnipüüdmine võiks teoorias näiteks php proc_open funktsiooniga suhteliselt lihtne olla.
Kommentaarid: 76 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum
raxz
HV Guru

liitunud: 27.07.2003




sõnum 11.07.2017 11:40:05 vasta tsitaadiga

napoleon kirjutas:
Kiire häkk on selle CCU_DDTK.exe väljundist number kätte saada. Ilusam lahendus on ennast sellest protokollist läbi närida ja ise klient kirjutada. Aga kuna paistab et tegemist on suhteliselt spetsiifilise asjaga, siis vaevalt see kellelgi siin käpas on.
Esimene lahendus ehk proge väljundi kinnipüüdmine võiks teoorias näiteks php proc_open funktsiooniga suhteliselt lihtne olla.
Saan ma õigesti aru, et proc_open kasutamiseks pean PHPd jooksutama samas masinas kus see .exe jookseb?

edit: Sain midagi käima, aga PHP skript peaks kuidagi ühe faili veel kätte saama, aga see jääb kätte saamata. CCU_DDTK.exe kaustas on ka FNID.DEF fail, mida PHP skript ei leia. CCU_DDTK leiab. Ehk on kellelgi soovitusi, kuidas see fail ka tööle saada?

CCU_DDTK.exe
Dos Toolkit version 4.61.4241
Loading definition file: FNID.DEF ...  319 Functions present.
Using COM2: for serial communication
   Baudrate = 19200, Protocol = Full

Function ==>

PHP väljund:
Dos Toolkit version 4.61.4241
Loading definition file: FNID.DEF ...Can't open defintion file: FNID.DEF


PHP kood:
<?php
set_time_limit(1800);
ob_implicit_flush(true);
$exe_command = 'C:\\DDTK\\CCU_DDTK.exe';
$descriptorspec = array(
    0 => array("pipe", "r"),  // stdin
    1 => array("pipe", "w"),  // stdout OK
    2 => array("pipe", "w")   // stderr
);
$process = proc_open($exe_command, $descriptorspec, $pipes);
if (is_resource($process)) {
    while( ! feof($pipes[1])) {
        $return_message = fgets($pipes[1], 1024);
        if (strlen($return_message) == 0) break;

        echo $return_message.'<br />';
        ob_flush();
        flush();
    }
}
?>
Kommentaarid: 46 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 45
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 11.07.2017 12:37:02 vasta tsitaadiga

Proovi nii
$process = proc_open($exe_command, $descriptorspec, $pipes, 'C:\\DDTK');
Kommentaarid: 76 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum
raxz
HV Guru

liitunud: 27.07.2003




sõnum 11.07.2017 13:38:57 vasta tsitaadiga

napoleon kirjutas:
Proovi nii
$process = proc_open($exe_command, $descriptorspec, $pipes, 'C:\\DDTK');
Seda proovisin, jääb lehte laadima kuni timeout tuleb.
Ma saan ka käsitsi anda selle FNID.DEF fail programmile kaasa, aga selle peale ütleb Windows kohe, et CCU_DDTK.exe stopped working. Kui on vale fail või tee selleni, siis ütleb, et ei leia, aga kui annan talle õige faili, siis crashib.

EDIT: Panin nii exe kui ka .DEF faili htdocs kausta. Kui programm leiab selle FNID.DEF faili üles, siis jääb lehte laadima ja midagi ei toimu. Kui ei leia, siis annab veateate, et ei leia seda faili. Samas CCU_DDTK.exe protsessi tuleb Task Manageri järjest juurde...
Kommentaarid: 46 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 45
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 11.07.2017 13:45:52 vasta tsitaadiga

Võibolla asi selles ongi, et proc_close on sul skripti lõpus puudu ja rippu jääb selleks, et eelmine protsess hoiab faili lukus. Tapa task manageris need protsessid maha ja proovi uuesti.
Kommentaarid: 76 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum
raxz
HV Guru

liitunud: 27.07.2003




sõnum 11.07.2017 14:07:59 vasta tsitaadiga

napoleon kirjutas:
Võibolla asi selles ongi, et proc_close on sul skripti lõpus puudu ja rippu jääb selleks, et eelmine protsess hoiab faili lukus. Tapa task manageris need protsessid maha ja proovi uuesti.
Nii on jah. Aga nüüd oleks vaja see tekst kätte saada, mida seal minule nähtamatus protsessis tehakse. Skript jääb vist ootama, aga kuna tegevust ei lõpetata vaid see on pidev, siis ei ole ka tulemust?
Kommentaarid: 46 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 45
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 11.07.2017 15:09:45 vasta tsitaadiga

Seal samas while tsükli sees see $return_message ongi see tekst.
Tõenäoliselt pead enne muidugi mikrofonide jälgimise sisse lülitama, see oleks siis enne while tsüklit umbes nii:
fputs($pipes[0],"vajalik käsk \r\n");
Võimaik, et see tsükkel on ka hetkel vale. while( ! feof($pipes[1]) viskab vist lusika nurka kui protsess parajasti mingit väljundit ei anna. Lõpuks peaks sul seal pigem while(true) olema, AGA see tekitab lõputu tsükli, seega peab tekitama ka mingi mooduse selle trükli katkestamiseks.
Kommentaarid: 76 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum
raxz
HV Guru

liitunud: 27.07.2003




sõnum 11.07.2017 16:06:36 vasta tsitaadiga

Kuhu reale ma selle fputs panema peaksin?
proc_open avab programmi ja fputs annab siis parameetrid pärast programmi käivitamist? A la nagu serveriga ühendumine ja mikrofonide kuulamise avamine?

Edit:Kui ma avan “DDTK.exe -help” siis tuleb kogu nimekiri asjadest, mida teha saan. Kui annan aga IP aadressi kaasa, siis jääb ühendama ja programm avatuks. Vastust mulle ei anta. Seejärel tuleks veel mm_c_start_mon_mm käsk programmi sisestada ja reaalajas vastust kuulata.
Kommentaarid: 46 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 45
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 11.07.2017 17:31:06 vasta tsitaadiga

see fputs ongi sama mis käsu andmine ehk siis:
php:
  1.  
  2. <?php
  3. $exe_command = 'C:\\DDTK\\CCU_DDTK.exe';
  4. $descriptorspec = array(
  5.     0 => array("pipe", "r")// stdin
  6.     1 => array("pipe", "w")// stdout OK
  7.     2 => array("pipe", "w")   // stderr
  8. );
  9. $process = proc_open($exe_command, $descriptorspec, $pipes);
  10. if (is_resource($process)) {
  11.     fput($pipes[0],"mm_c_start_mon_mm\r\n");
  12.         while(...
  13.  


PS. tulevikus on seda skripti nutikam CLI modes jooksutada, aga praegu võid ju veebiserveri kaudu ka katsetada kui see mugavam tundub.
Kommentaarid: 76 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum
raxz
HV Guru

liitunud: 27.07.2003




sõnum 12.07.2017 13:34:37 vasta tsitaadiga

Pmst on nii, et kui ma programmi käsurealt käivitan ja tahan väljundit näiteks faili kirjutada, siis avab küll protsessi, aga midagi liikuma ei hakka. "CCU_DDTK.exe -i192.168.0.100>out.txt" viskab tühja rea ja ootab. Ctrl+C lõpetab ära. Kui ma selle ">out.txt" ära jätan, siis programm töötab. PHPga on vist sama probleem. Kui ma midagi kaasa panen, siis ta ei hakka tööle. Kas sellest saab kuidagi ümber?
Kommentaarid: 46 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 45
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 12.07.2017 15:03:32 vasta tsitaadiga

Üldiselt see väljund faili nagu toimiks. Võibolla selle proge kiiks. Võid proovida nii, et tee fail test.bat ja sinna sisse pane
CCU_DDTK.exe -i192.168.0.100
ja siis käivita test.bat > out.txt
kas php windowsis pipe-ga töötab, ei saa hetkel proovida, teoorias võiks töötada. Aga php-ga võid asjast alati nii mööda saada, et kirjutad juba php-ga huvipakkuva info faili. Kui veebiserveri kaudu php-d jooksutada, siis peab muidugi enne kontrollima, kas sellel kasutajal mille alt veebiserver jookseb on ikka õigus vastavasse kausta kirjutada.
Kommentaarid: 76 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Võrgust püütud numbri järgi on vaja http päring saata
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.