sharps Posted September 21, 2011 Report Share Posted September 21, 2011 (edited) Labdien! Vai ar PHP palīdzību ir iespējams pa tiešo nolasīt Datora seriālo vai USB portus? Vai arī tomēr būs nepieciešama starpniekprogramma, kas to visu ieraksta kādā failā un pēc tam ar PHP to failu nolasa? Edited September 21, 2011 by sharps Quote Link to comment Share on other sites More sharing options...
daGrevis Posted September 21, 2011 Report Share Posted September 21, 2011 Nu Tu vari nolasīt Sava servera portus un tā. PHP ir nepareizajā pusē. :D Quote Link to comment Share on other sites More sharing options...
briedis Posted September 21, 2011 Report Share Posted September 21, 2011 Visdrīzāk būs nepieciešama kaut kāda bibliotēka piekodēta klāt, nez vai ar standarta rīkiem šo izdosies izdarīt. Vēl jau variants ir ar exec() laist kādu konsoles programmu ar parametriem un apstrādāt izdoto rezultātu... Quote Link to comment Share on other sites More sharing options...
sharps Posted September 21, 2011 Author Report Share Posted September 21, 2011 (edited) Nē nu tas ir skaidrs ka tikai servera portus. Tā jau tas ir domāts. Paguglējot tā informācija arī tāda nekonkrēta. It kā ir kaadī gatavi scripti portu lasīšanai, bet kaut kas vienalga nelīmējas kopā. Tas izskatās kaut kā tā datu rakstīšanas gadījumā: set_time_limit(0); exec('mode COM1: baud=9600 data=8 stop=1 parity=n xon=on'); $fd = dio_open('COM1:', O_RDWR); if(!$fd) { die("Error when open COM1"); } .... Edited September 21, 2011 by sharps Quote Link to comment Share on other sites More sharing options...
codez Posted September 21, 2011 Report Share Posted September 21, 2011 Var nolasīt, tikai USB gadījumā viss ir nedaudz sarežģītāk. Priekš serial, peim., šī bibliotēka: http://code.google.com/p/php-serial/ Bet vispār ar šiem jautājumiem ļoti labi tiek galā python. Pythonā esmu lasījis/rakstījis gan serial, gan USB portos, protams izmantojot attiecīgās python bibliotēkas. Vislābāk šādā gadījumā būtu uztaisīt mazu python web serverīti, kuram tad attiecīgi slēdzies klāt ar PHP izmantojot socketus vai citā gadījumā aizvietot PHP pilnībā, taisot arī web interfeisu izmantojot kādu python FW, piem., webpy. Quote Link to comment Share on other sites More sharing options...
sharps Posted September 21, 2011 Author Report Share Posted September 21, 2011 (edited) Ok pagaidām aktuāls ir RS323. USB mazliet vēlāk. Kas tajā python tāds īpašs? Pieķēros klāt manis augstāk minētajam kodam. Mēģinu to padarbināt, bet tiek izmests errors: Fatal error: Call to undefined function: dio_open() in D:\WEB\sharps.lv\test\test.php on line 5 Kādēļ dio_open ir nedefinēta funkcija??? Kur problēma varētu būt? Edited September 21, 2011 by sharps Quote Link to comment Share on other sites More sharing options...
briedis Posted September 21, 2011 Report Share Posted September 21, 2011 (edited) Varbūt nav iespējota tāda bibliotēka dio? Skaties php.ini Izej cauri: http://www.php.net/manual/en/book.dio.php Edited September 21, 2011 by briedis Quote Link to comment Share on other sites More sharing options...
sharps Posted September 21, 2011 Author Report Share Posted September 21, 2011 Izskatās ka nē. Nekur arī tada neparādās. Requirements No external libraries are needed to build this extension. Quote Link to comment Share on other sites More sharing options...
briedis Posted September 21, 2011 Report Share Posted September 21, 2011 (edited) No external libraries are needed to build this extension. Jā, tev tik jāatrod source un jānokompilē. Pēc tam jāpievieno pie php (ieliekot attiecīgajās mapēs un pievienojot php.ini rindiņu). Ņem vērā, ka šī bibliotēka darbojas tikai uz win. Source ir šeit: http://pecl.php.net/package/dio Edited September 21, 2011 by briedis Quote Link to comment Share on other sites More sharing options...
sharps Posted September 22, 2011 Author Report Share Posted September 22, 2011 Ok pacīnīšos. Quote Link to comment Share on other sites More sharing options...
sharps Posted January 26, 2014 Author Report Share Posted January 26, 2014 Sveicināti! Ir pagājis zināms laiciņs. Pieķēros vecajai lietai no jauna. Ideja tehniskai pusei ir sekojoša. Ir mikrokontrolieris ar USART portu. Caur līmeņu pārveidotāju mikreni tas pievienosts pie datora RS232 porta. Uz datora griežas Apache+PHP. No web lapas jāvar aizsūtīt datus kontrolierim un arī nolasīt informāciju no kontroliera. Respektīvi jāsaskaras ar veselu gūzmu sīku un ne tik sīku problēmu. Ilgi dikti googlējos. Meklēju risinājumus. Risinājumi ir relatīvi daudz. Tikai daži ir dārgāki citi ne tik dārgi finasiālajā plāksnē un arī tehniskajā izpildījumā dažādas sarežģītības pakāpes. Galu galā apstājos pie viena interesanta risinājuma. Šeit arī padomos izskanēja par ko līdzīgu. http://www.easyvitools.com/phpserial/index.html. Diemžēl ta ir tikai Trial versija ar zinamiem nepatīkamiem ierobezojumiem. Tomēr testiem tīri labi noderēja. Tātad. Uz datora uzkrāmēju Apache (v2.4.4) + PHP (v5.4.9). Kādu laiciņu pacīnījos ar tām versiju saderībām un iepazinos ar to kas VC6, VC9 utt. Šeit cik noprotu kompilatoru versiju saskaņai ir liela nozīme. Tad nu izvēlējos atbilstošo bibliotēku un nokonfigurēju Apache un PHP. Patestēju piedāvātos kodus un pats proveju ko rakstīt. Sākumā no kontroliera sūtīju vienkārši taimera signālu ar sekundēm. Jā lieliski nolasa. Tikai demo versijas ierobežojumi to ļauj izdarīt ar zināmu aizkavejuma laiku. Arī datu sūtīšana uz kontrolieri notiek lieliski. Tikai lūk Trial versijas ierobežojumi. Neceļās pagaidām roka pirkt full versiju. Paralēli šim visam pētīju iespējas kodu dzenāt "reālajā laikā". Respektīvi reizi sekundē nolasīt konstroliera nolasīto analogo signālu izvest iekšs web lapas. Cik esmu izpētījis, tad pastāvot PHP+Ajax tehnologija. Tas ir kas saistīts ar java cik noprotu. Vai kāds ko sīkāk var par šo pastāstīt un ko tas ziemā īsti ēd? Meklējumi turpinājās. Atdūros pret vēl vienu līdzīgu ideju - Direct input output DIO bibliotēkas. To arī iedabūju iekšs PHP. Diemžēl kodēšanas lietas jau vairs tik gludi neiet, jo COM ports neatsaucas. ...Mazliet vēlāk paturpināšu savu gaitu izklāstu. Ja kadam ir interese par šo tēmu, tad varu sīkak padalīties ar pieredzi un protams pieņemšu arī jūsu padomus. Quote Link to comment Share on other sites More sharing options...
briedis Posted January 26, 2014 Report Share Posted January 26, 2014 Paralēli šim visam pētīju iespējas kodu dzenāt "reālajā laikā". Respektīvi reizi sekundē nolasīt konstroliera nolasīto analogo signālu izvest iekšs web lapas. Nu kā, tev fonā griežas skripts (cron/screen), kas ik pa sekundei prasa datus no porta, un kaut kur tos pieglabā (failā, datubāzē, whatever). Tad lietotājs weblapā ar ajax (tīrs javascript) paprasa citas skriptas svaigākos datus. Quote Link to comment Share on other sites More sharing options...
codez Posted January 27, 2014 Report Share Posted January 27, 2014 Ja esi uz linuxa, nedomāju, ka vajag baigās bibliotēkas. Uzkonfigurē portu un lasi/raksti kā no parasta faila. Varētu noderēt šis: http://systemsarchitect.net/connecting-php-with-arduino-via-serial-port-on-linux/ Quote Link to comment Share on other sites More sharing options...
sharps Posted January 27, 2014 Author Report Share Posted January 27, 2014 (edited) Diemžēl neesmu linuxā. Skatos ka tomēr tas DIO aizgājis. $output = array(); exec ('mode COM1: baud=19200 data=8 stop=1 parity=n',$output); $fd = dio_open('COM1:', O_RDONLY); if(!$fd) { echo "Connection not working"; } else { echo "Connection working"; } Beigās webs nobļaustās "Connection working". Visa lieta bija tajā ka iepriekšs bija jāslēdz konekcija ar COM1. Tikai tad viss aizgāja. Tikko palaižu putty un mēģinu webā konektēties klāt, tā nobļaustās. "Warning: dio_open(): cannot open file COM1: with flags 0 and permissions 0: Permission denied in F:\WEB\TEST\test.php on line 8Connection not working:" Tagad tikai japacīnās ar kaut kādu datu nolasīšanu un ierakstīšanu. Edited January 27, 2014 by sharps Quote Link to comment Share on other sites More sharing options...
sharps Posted August 3, 2015 Author Report Share Posted August 3, 2015 Sveicināti zināma pārtraukuma! RS232 lasīšanu/rakstīšanu izmantojot PHP esmu apmuļājis. Nemaz tik traki neizskatās .Ir savas nianses ujn knifi. Tagad radusies cita veida problēma. Principā sistēma ir klasiska, kas izskatās šādi. PC (web+mysql serveris) => USB/RS232 => Mikrokontrolieris+sensors. Principā izveidoju COM porta nolasīšanu un datu ierakstīšanu mysql datu bāzē. Atverot lapu dati sāk ierakstīties. Aizverot lapu ieraksts pārtrūkst. Kā panākt datu ierakstīšanu nepātraukti? Kurā virzienā rakt? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.