Jump to content
php.lv forumi

RS232 vai USB + PHP


sharps
 Share

Recommended Posts

  • Replies 48
  • Created
  • Last Reply

Top Posters In This Topic

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 by sharps
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by sharps
Link to comment
Share on other sites

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 by briedis
Link to comment
Share on other sites

  • 2 years later...

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 8
Connection not working:"

Tagad tikai japacīnās ar kaut kādu datu nolasīšanu un ierakstīšanu.

Edited by sharps
Link to comment
Share on other sites

  • 1 year later...

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?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share


×
×
  • Create New...