Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sterowanie USB
Forum PHP.pl > Forum > Przedszkole
gsmphone
Witam,

Mam taki problem. Mam w do usb kartę która ma 2 przekaźniki. Działa dobrze z aplikacjami Windows.. Tzn mam program gdzie ustawiam com a potem 2 przyciski włącz/wyłącz.
Problem w tym że chciałem napisać aplikacje pod www żeby robiło to samo. Podobno jak się podłączy urządzenie pod USB to windows przypisuje mu ścieżkę:

  1. /dev/ttyUSB0



Więc zrobiłem małą aplikacje www żeby to działało ale nie działa. Jakby ktoś mógłby mi w tym pomóc byłbym wdzięczny.

  1. $zmienna = $_POST['wybor'];
  2. echo ('Wyjscie '.$_POST['wybor']);
  3. switch ($zmienna) {
  4. case "1":
  5. echo system('echo -ne "1" > /dev/ttyUSB0');
  6. break;
  7. case "2":
  8. echo system('echo -ne "2" > /dev/ttyUSB0');
  9. break;
  10.  
  11. }
  12. echo (' zmienione!');
  13.  
  14.  
Fifi209
A jak wpiszesz to samo w konsoli to się włączy/wyłączy ?
gsmphone
Cytat(fifi209 @ 11.06.2010, 10:39:41 ) *
A jak wpiszesz to samo w konsoli to się włączy/wyłączy ?



tzn co i do jakiej konsoli??
wookieb
Cytat(gsmphone @ 11.06.2010, 10:20:45 ) *
Więc zrobiłem małą aplikacje www żeby to działało ale nie działa


Cytat
tzn co i do jakiej konsoli??

Więc jak zrobiłeś skoro nie wiesz o czym do Ciebie mówimy??
gsmphone
kurde.. ale to forum jest ********. Jeszcze nigdy tutaj nie dostałem odpowiedzi bez kogoś kto by nie dogadywał sciana.gif

Chodzi mi o to co mam wpisać:

system('echo -ne "2" > /dev/ttyUSB0');

czy

/dev/ttyUSB0

czy

dev/ttyUSB0

i do której konsoli?
erix
Cytat
Jeszcze nigdy tutaj nie dostałem odpowiedzi bez kogoś kto by nie dogadywał

Nie dziw się, że tak sporo osób reaguje, skoro wstawiasz coś, o czym - tak naprawdę - nie masz pojęcia, vide:
Cytat
i do której konsoli?


A co do tematu, przetłumaczę Ci pytanie na proste - czy tą samą komendą próbowałeś przełączać przekaźniki z Windows?

Poza tym:
Kod
/dev/ttyUSB0

To definicja działająca WYŁĄCZNIE w uniksach.
gsmphone
To znaczy to co napisałem w php nie zadziała mi na apachu?
czyli w jaki sposób mogę sterować przez php?
erix
Nie odpowiedziałeś na moje pytanie, a bez tego więcej się nie da powiedzieć.
gsmphone
no pod windows działa ale nie wiem czy z tą komendą bo to jest wszystko w gotowym już programie który tym steruje. Program napisany w bascomie.
erix
No to poszukaj teraz komendy, która Ci to z linii poleceń odpali, ew. parametrów do tego programu. Ale w tym Ci już raczej nie pomożemy.
gsmphone
Hmmm, a da się sterować programem przez www? Bo gdyby tak było to bym miał ułatwienie
thek
Powiem tak... Skoro możesz się dostać z poziomu windowsa do USB, to istnieje ścieżka określająca dostęp do urządzenia. Ale tu już polecam przejrzenie Menedżera urządzeń w Windowsie pod kątem słowa USBSTORE.
gsmphone
Cytat(thek @ 11.06.2010, 13:02:23 ) *
Powiem tak... Skoro możesz się dostać z poziomu windowsa do USB, to istnieje ścieżka określająca dostęp do urządzenia. Ale tu już polecam przejrzenie Menedżera urządzeń w Windowsie pod kątem słowa USBSTORE.



no to w menagerze mam coś takiego:

USB\ROOT_HUB\4&27228D47&0


ale to też nie działa
thek
To jest urządzenie pracujące jako koncentrator USB (root hub)... Nie jest to urządzenie podpięte do niego. Te mają swoje własne, o wiele dłuższe identyfikatory. Odczytaj sobie z managera jakie to konkretnie urządzenie, znajdź je na liście i zacznij grzebać przy danych sterownika.
gsmphone
Cytat(thek @ 11.06.2010, 13:23:18 ) *
To jest urządzenie pracujące jako koncentrator USB (root hub)... Nie jest to urządzenie podpięte do niego. Te mają swoje własne, o wiele dłuższe identyfikatory. Odczytaj sobie z managera jakie to konkretnie urządzenie, znajdź je na liście i zacznij grzebać przy danych sterownika.



a właśnie... bo to urządzenie jak podłącze do usb wykrywa jako USB Serial PORT pod COM5. Sterowniki do tego urządzenia też mam. Link do sterowników:
http://www.plikos.pl/16pe/ster.zip.html

Jak byś mógł zerknąć czy o to chodzi
erix
To pobaw się hyperterminalem, otwórz ten port i NAJPIERW ustal, jakimi komendami trzeba aktywować poszczególne wyjścia.

Potem już z górki.
gsmphone
Jak się połączyłem hyperterminalem to co sekunde się 0 pokazuje w okienku. Może jakoś inaczej to mam zrobić?

Znalazłem takie coś:
ser_open( "COM4", 2400, 8, "None", "1", "None" );
ser_write("1");


co ma niby odpowiadać linuksowego:
echo system('echo -ne "4" > /dev/ttyUSB6');

tylko że wyskakuje błąd:

Fatal error: Call to undefined function ser_open()


bo całość znalazłem tutaj:
http://www.thebyteworks.com/phpserial/php_ser_reference.html


wiem że jestem już blisko tylko coś nie tak.
erix
Żeby to rozszerzenie działało, trzeba je najpierw zainstalować...
gsmphone
No instalowałem całość, oprócz tego php.ini bo nie ma nigdzie takiego pliku.
erix
Samo skopiowanie dll nie wystarczy, poczytaj o instalacji PECL.

Jak nie ma php.ini, to go stwórz, ale o tym na Sieci.
gsmphone
ok, dzięki.

Tak dla upewnienia się... to jest ten plik? No i gdzie mam go skopiować jak serwer mam na apache'u?

  1. [PHP]
  2. engine = On
  3. zend.ze1_compatibility_mode = Off
  4. short_open_tag = On
  5. asp_tags = Off
  6. precision = 14
  7. y2k_compliance = On
  8. output_buffering = 4096
  9. ;output_handler =
  10. zlib.output_compression = Off
  11. ;zlib.output_handler =
  12. implicit_flush = Off
  13. unserialize_callback_func=
  14. serialize_precision = 100
  15. allow_call_time_pass_reference = Off
  16. disable_functions =
  17. disable_classes =
  18. expose_php = Off
  19. max_execution_time = 60 ; Maximum execution time of each script, in seconds
  20. max_input_time = 120 ; Maximum amount of time each script may spend parsing request data
  21. memory_limit = 128M ; Maximum amount of memory a script may consume (8MB)
  22. error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
  23. display_errors = Off
  24. display_startup_errors = Off
  25. log_errors = On
  26. log_errors_max_len = 1024
  27. ignore_repeated_errors = Off
  28. ignore_repeated_source = Off
  29. report_memleaks = On
  30. track_errors = Off
  31. arg_separator.output = "&"
  32. variables_order = "GPCS"
  33. register_globals = Off
  34. register_long_arrays = Off
  35. register_argc_argv = Off
  36. post_max_size = 40M
  37. magic_quotes_gpc = Off
  38. magic_quotes_sybase = Off
  39. auto_prepend_file =
  40. auto_append_file =
  41. default_mimetype = "text/html"
  42. default_charset = "UTF-8"
  43. include_path = ".:/usr/local/share/smarty:/usr/local/lib/php/pear"
  44. doc_root =
  45. user_dir =
  46. extension_dir = /usr/local/lib/php/20050922
  47. enable_dl = Off
  48. cgi.force_redirect = 1
  49. ; cgi.nph = 1
  50. ; cgi.redirect_status_env = ;
  51. ; fastcgi.impersonate = 1;
  52. ;cgi.rfc2616_headers = 1
  53. file_uploads = On
  54. upload_tmp_dir = /usr/local/www/php/tmp
  55. upload_max_filesize = 40M
  56. allow_url_fopen = On
  57. user_agent="PHP"
  58. default_socket_timeout = 60
  59.  
  60. [Syslog]
  61. define_syslog_variables = Off
  62.  
  63. [mail function]
  64. ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
  65. ;sendmail_path =
  66. ;mail.force_extra_parameters =
  67.  
  68. ; Allow or prevent persistent links.
  69. mysql.allow_persistent = On
  70. mysql.max_persistent = 20
  71. mysql.max_links = -1
  72. mysql.default_port = 3306
  73. mysql.default_socket =
  74. mysql.default_host = localhost
  75. mysql.connect_timeout = 60
  76. mysql.trace_mode = Off
  77.  
  78. [MySQLI]
  79. mysqli.max_links = -1
  80. mysqli.default_port = 3306
  81. mysqli.default_socket =
  82. mysqli.default_host = localhost
  83. mysqli.reconnect = Off
  84.  
  85. [PostgresSQL]
  86. pgsql.allow_persistent = On
  87. pgsql.auto_reset_persistent = Off
  88. pgsql.max_persistent = 20
  89. pgsql.max_links = 40
  90. pgsql.ignore_notice = 0
  91. pgsql.log_notice = 0
  92.  
  93. [dbx]
  94. dbx.colnames_case = "lowercase"
  95.  
  96. [bcmath]
  97. bcmath.scale = 0
  98.  
  99. [Session]
  100. session.save_handler = files
  101. session.save_path = "/tmp"
  102. session.use_cookies = 1
  103. session.name = PHPSESSID
  104. session.auto_start = 0
  105. session.cookie_lifetime = 0
  106. session.cookie_path = /
  107. session.cookie_domain =
  108. session.serialize_handler = php
  109. session.gc_probability = 1
  110. session.gc_divisor = 1000
  111. session.gc_maxlifetime = 1440
  112. session.bug_compat_42 = 0
  113. session.bug_compat_warn = 1
  114. session.referer_check =
  115. session.entropy_length = 0
  116. session.entropy_file =
  117. session.cache_limiter = nocache
  118. session.cache_expire = 180
  119. session.use_trans_sid = 0
  120. session.hash_function = 1
  121. session.hash_bits_per_character = 5
  122. url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
  123.  
  124.  
  125. [Sockets]
  126. sockets.use_system_read = On
  127.  
  128. [com]
  129. ; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
  130. ;com.typelib_file =
  131. ; allow Distributed-COM calls
  132. ;com.allow_dcom = true
  133. ; autoregister constants of a components typlib on com_load()
  134. ;com.autoregister_typelib = true
  135. ; register constants casesensitive
  136. ;com.autoregister_casesensitive = false
  137. ; show warnings on duplicate constat registrations
  138. ;com.autoregister_verbose = true
  139.  
  140. [mbstring]
  141. ;mbstring.language = Japanese
  142. ;mbstring.internal_encoding = EUC-JP
  143. ;mbstring.http_input = auto
  144. ;mbstring.http_output = SJIS
  145. ;mbstring.encoding_translation = Off
  146. ;mbstring.detect_order = auto
  147. ;mbstring.substitute_character = none;
  148. ;mbstring.func_overload = 0
  149.  
  150.  
  151. [exif]
  152. ;exif.encode_unicode = ISO-8859-15
  153. ;exif.decode_unicode_motorola = UCS-2BE
  154. ;exif.decode_unicode_intel = UCS-2LE
  155. ;exif.encode_jis =
  156. ;exif.decode_jis_motorola = JIS
  157. ;exif.decode_jis_intel = JIS
  158.  
  159. [Tidy]
  160. ;tidy.default_config = /usr/local/lib/php/default.tcfg
  161. tidy.clean_output = Off
  162.  
  163. [soap]
  164. soap.wsdl_cache_enabled=1
  165. soap.wsdl_cache_dir="/tmp"
  166. soap.wsdl_cache_ttl=86400
  167.  
  168. ; Local Variables:
  169. ; tab-width: 4
  170. ; End:
  171.  
  172. [Zend]
  173. zend_extension_manager.optimizer=/usr/local/lib/php/20050922/Optimizer
  174. zend_extension_manager.optimizer_ts=/usr/local/lib/php/20050922/Optimizer_TS
  175. zend_optimizer.version=3.0.0
  176. zend_extension=/usr/local/lib/php/20050922/ZendExtensionManager.so
  177. zend_extension_ts=/usr/local/lib/php/20050922/ZendExtensionManager_TS.so
erix
A zajrzałeś do manuala? To naprawdę zostało opisane już wystarczająco wiele razy... Bez sensu jest więc pisać n-ty raz to samo...
gsmphone
Teraz działa. W końcu się udało:)

Jeszcze jak byś mógł mi napisać co mam wpisać w tym przykładnie żeby dostać taki sam efekt jak tu:

case "1":
echo system('echo -ne "1" > /dev/ttyUSB0');
break;

Czyli naciskając 1 (czy wybierając 1), moja karta z przekaźnikami która jest podpięta do usb która jest wykrywana przez windowsa jako com5, spowoduje uruchomienie się pierwszego przekaźnika.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.