Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP obsługuje port COM[x] :)
Widmo
post
Post #1





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 25.05.2003

Ostrzeżenie: (0%)
-----


Witam,
potrzebuje dostać się do mojego urzadzenia przez port COM.
Znalazlem DLLke która obsługuje porty COM z poziomu PHP.

( http://www.easyvitools.com/phpserial/php_ser_SMS.html )

Mam manual do urządzenia ale brakuje mi troche doświadczenia z obsługą hardwaru.

http://widmo.biz/tmp/rw_protocol_eng.pdf

Oto moje wypociny (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

  1. <?php
  2. ser_open('COM1', 9600, 8, 'none', 1, 'none' ); 
  3.  
  4. $str = ser_isopen();
  5. echo "Otwarte: $str<hr>";
  6.  
  7. echo ser_write( "0x02" ); // STX
  8.  
  9. echo ser_readbyte() . '<hr>'; // TU POWINNO BYĆ ACK
  10.  
  11. $seq = '0x00'; // kolejny numer
  12. $cmd = '0x60'; // komenda ( buzzer )
  13. $len = '0x00'; // dlugosc $dat
  14. $dat = '0x00'; // data
  15. $bcc = $seq xor $cmd xor $len xor $dat; // wyliczenie XOR
  16.  
  17. echo 'BCC: ' . $bcc . '<hr>';
  18.  
  19. ser_write( "x00x60x00x00" . $bcc . "x03"); // wyslanie komendy
  20.  
  21.  
  22. echo ser_readbyte() . '<hr>';
  23. ?>


Wynikiem jest to:
  1. Otwarte: COM1 9600 8 None 1 None
  2. ---------
  3. 21
  4. ---------
  5. BCC: 0x00
  6. ---------
  7. 21
  8. ---------


Czy nie znalazł by się ktoś kto pokazał by mi wzorzec jak powinna wyglądać pełna komenda z komentarzami?
Aktualnie w przykładzie wyżej staram się zmusić urzadzenie do wydania dziwięku ( 0x06 )

Wielkie dzięki za wszelką pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Widmo 21.08.2008, 14:58:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Widmo
post
Post #2





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 25.05.2003

Ostrzeżenie: (0%)
-----


Jak zwykle zmodyfikowałem troche (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


  1. <?php
  2. ser_open('COM1', 9600, 8, 'none', 1, 'none' );
  3.  echo "Otwarte: " . ser_isopen() . '<hr>';
  4.  
  5.  //  stx seq cmd len rsv 480ms  3x bxx etx
  6. ser_write("x02");
  7. echo '1: ' . ser_readbyte() . "<br>";
  8. ser_write("x00x60x04x00x20x20x03x67x03");
  9. echo '2: ' . ser_readbyte() . "<br>";
  10. echo '3: ' . ser_readbyte() . "<br>";
  11. echo '4: ' . ser_readbyte() . "<br>";
  12. ?>


zwraca '6' czyli ACK a potem już tylko -1...

  1. 1: 6
  2. 2: -1
  3. 3: -1
  4. 4: -1


To moze jeszcze dodam tyle:

http://thebyteworks.com/articles/ws2300/ws2300_php.html

Gosciu mowi ze napisal obsluge stacji pogodowej, moze to cos naprowadzi:

http://thebyteworks.com/articles/ws2300/ws2300_php.zip

Ten post edytował Widmo 22.08.2008, 21:55:53
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 01:36