За последние 24 часа нас посетили 16610 программистов и 1594 робота. Сейчас ищут 896 программистов ...

Программирование COM портов на PHP

Тема в разделе "Прочие вопросы по PHP", создана пользователем Rainwork, 14 авг 2008.

  1. Rainwork

    Rainwork Активный пользователь

    С нами с:
    25 апр 2008
    Сообщения:
    10
    Симпатии:
    0
    Привет, всем.
    Кто может помочь с сабжем?
    Дело вот в чем работать с com портами у меня получается, только почему-то через раз.
    А именно, если я запустил перед работой HyperTerminal то все будет ок.
    Иначе виснит на fclose();
    Вот исходник
    Код (Text):
    1.  
    2. <?php
    3. exec("mode com4: BAUD=9600 PARITY=N data=8 stop=1 xon=off");
    4.  
    5. function SendSms($port="com4",$Phone,$Message)
    6. {
    7.     $handle = fopen ($port, "rwt+");
    8.     if (is_resource($handle))
    9.     {
    10. //      print fputs($handle,"AT+CSMS=1\r\n");
    11. //      sleep(1);
    12. //      print fputs($handle,"at+cnmi=1,2\r\n");
    13. //      sleep(1);
    14. //      print fputs($handle,"at+clip=1\r\n");
    15.         sleep(1);
    16.         print fputs($handle,"ATZ\r\n");
    17.  
    18.         sleep(1);
    19.         print fputs($handle,"AT+CMGF=1\r\n");
    20.         //print "GET:".fgets($handle);
    21.         print '<br>';
    22.         sleep(1);
    23.         print fputs($handle,"AT+CPMS=sm,sm,sm\r\n");
    24.         //print "GET:".fgets($handle);
    25.         print '<br>';
    26.          for ($i=1;$i<3;$i++)
    27.             {
    28.                 //Удаляем все сообщения
    29.         //          print fputs($handle,"AT+CMGD=".$i."\r\n");
    30.                     print '<br>';
    31.             }
    32.        
    33.         sleep(1);
    34.         print fputs($handle,"AT+CMGW=\"".$Phone."\"\r\n");
    35.         sleep(1);
    36.         print fputs($handle,$Message."\x1A\r\n");
    37.         sleep(1);
    38.         //print "GET:".fgets($handle);
    39.         //print '<br'.fread($handle,100).'<br>';
    40.         print '<br>';
    41.         print 'Send:'.fputs($handle,"AT+CMSS=1\r\n");
    42.         sleep(5);
    43.         print 'Send:'.fputs($handle,"AT+CMGD=1\r\n");
    44.         sleep(1);
    45.         //print "GET:".fgets($handle);
    46.         @fclose($handle);
    47.     }
    48. }
    49. SendSms('com4','1234567890','Test tet');
    50. //sleep(5);
    51. //ReadSms('com4');
    52. //print 'Readed';
    53. ?>
    Это работает, шлет смс через подключенный телефон на COM4.
    Может какие есть предложения или примеры на C++,Delphi?
     
  2. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    /* Shocked */

    upd: да в принципе, этот код легко портировать на другие языки. Тут же не задействуется ничего специфического для PHP.
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    А оно не обязательно. PHP сам закроет все открытые ресурсы. Правда непонятна причина зависания.