Vittorio
Risposte nei forum create
-
AutorePost
-
Agosto 29, 2011 alle 11:57 am in risposta a: Gestione convertitore Ethernet/seriale da pagina web #36915
Vittorio
PartecipanteSono ancora a disturbare per la comunicazione da pagina web al Convertitore ATC20000. Dopo notti insonni ho sistemato l’abilitazione dei Sockets in PHP (era una stupidaggine ma insidiosa: il salvataggio delle abilitazioni Sockets in PHP.ini avveniva nel file originario ad estensione.txt anziché in quello rinominato .php).
Ora il tuo Script gira (viene cioè eseguito sino alla fine) ma non funziona completamente nel senso che restituisce sempre e solo la stringa di input che io inserisco nell Form ma non restituisce la stringa di risposta ovvero una stringa concatenata composta dall’ input+la risposta come mi sembra tu abbia impostato nello Script.
Pensando in prima battuta ad una insufficienza del numero dei byt da leggere nella risposta, ho anche provato ad aumentare l’estensione dei byte letti nella istruzione :$Ch=socket_read da 1 a 15 ed oltre, ma pur ottenendo un allunganento del tempo di connessione aperta (la luce gialla che rileva la connessione all’ ATC 2000 tramite il Socket rimane accesa più a lungo) non ottengo la lstringa di risposta;
Ho anche provato a modificare la istruzione echo “Answer: della risposta nel campo value con =”$Ch” ovvero con=”$Ch.$Istring.” e similari ma ottengo sempre errori di sintassi. Non c’e sicuramente un blocco della Porta di comunicazione perché via Toolyy la connessione funziona e restituisce la risposta e perché credo altrimenti l’istruzione socket_set_nonblock(Skt) da te inserita nello script dovrebbe restituire falso al ciclo while e non consentire quindi l’esecuzione del ciclo della risposta.
Non capisco quindi se il problema è nel mancato funzionamento della funzione di lettura del Socket, Socket_read ($Skt, 1 , PHP_BINARY_READ) o nel passaggio di tale lettura all’echo di risposta tramite l’uso delle 2 variabili, IString=”” creata prima della scrittura nel Socket, e $Ch=socket_read, creata nel ciclo While per la lettura e la sua successiva restituzione; passaggio questo che, ignorante come sono in php, non riesco a comprendere pienamente.
Non so infine se ci possa essere invece un problema nellla scrittura della stringa nel socket (socket_write($Skt,$_REQUEST [‘Command’].”r”); o meglio nella concatenazione della parte .”r” alla stringa che credo serva ad inserire la simulazione del tasto invio e/o ritorno a capo; ma in effetti quando digito il comando da Vs.utility Toolly by ELSIST digito una stringa ATXXX + il Tasto Invio (che dovrebbe appunto corrispondere al tuo “.r” ).
Unico dubbio che mi rimane in mente e al quale non so dare una risposta è che mentre quando uso la comunicazione seriale diretta (Virtualcom da PC ) con Hyperterminal Windows la risposta all’invio dei comandi AT nel videoterminale avviene nella riga successiva a quella del comando, quando uso tcp ip client da Toolly o Hyper Terminal con impostazioneTCP/IP (Winsock) la risposta avviene nella stessa riga del comando. Può influire questo nella lettura della risposta del ATC20000 nel sockets ?
Agosto 22, 2011 alle 10:32 am in risposta a: Gestione convertitore Ethernet/seriale da pagina web #36894Vittorio
PartecipanteL’inghippo dell’indirizzamento sbagliato del Form l’avevo scoperto e risolto stanotte dopo tanta lettura. Ma lo script non funziona in seguito ad un altro problema.
La pressione del tasto send mi restituisce questo errore: “php fatal error: call to undefinited function socket_create () in c:/inetpub/wwwroot/Send Command on line 29 (riga della chiamata nello script)” che mi fa pensare ad un problema di configurazione di PHP ovvero della estension_sockets.dll.
ll problema è che ho ricontrollato tutto e sembra a posto. Infatti nel file php.ini ho settato estension dir_ e la Path corretta “c:phpext” (nel pc php è installato in c:php e iI modulo estension sockets.dll è presente sulla cartella ext); ho tentato anche ad inserire in alternativa la path “./ext” senza risultato; risulta correttamente tolto il “;” e risulterebbe quindi abilitato.
Il modulo sockets, estension=sockets.dll. Può essere un problema di come gira php ? O che altro ? Come posso verificare se le estensioni sockets sono effettivamente abilitate e funzionanti ?
Agosto 22, 2011 alle 6:34 am in risposta a: Gestione convertitore Ethernet/seriale da pagina web #36888Vittorio
PartecipantePrima di tutto “un Grazie infinito!!!” ma visto che ormai “hai fatto 30” se mi dai un ultimo aiutino per farmi funzionare il tutto (visto che non sono capace a farlo funzionare e che sono un emerito ignorante in materia di programmazione PHP).
Prima di tutto ho installato PHP sul mio Server locale IIS dove ho Windows XP Pro; ho verificato che sia correttamente indicata la Path delle extension_dir e abilitato extension=php_sockets.dll che è presente nella cartella Ext ; quindi lato PHP dovrebbe essere tutto a posto ed il test convenzionalmente usato per la verifica dell’interprete PHP (phpinfo()) funziona;
Salvo la pagina web che mi hai preparato contenente lo script, che modifico solo nell’indirizzo IP (192.168.1.5) e nel numero di Porta (50000) del mio ATC2000 nella directory “C:Inetpubwwwroot” con il nome “Send Command.php”.
Non so se questo basta o come o da quale altra parte devo salvare anche lo Script ovvero non so se devo creare una altra pagina collegata che debba essere richiamata o aperta per la risposta. Sta di fatto che quando lancio da broswer localhost/SendCommand.php mi si presenta prima correttamente il Form da te creato con la casella per l’input del comando AT ma dopo l’inserimento e alla pressione del pulsante Send mi si apre un messaggio di errore su una pagina con in indirizzo localhost/Procedures/ModbusSkt/ModbusSkt.php. Ma poiché per l’appunto /Procedures/ModbusSkt/ModbusSkt.php è la directory da te compilata nella funzione <form action=”/Procedures/ModbusSkt/ModbusSkt.php della prima parte HTML della pagina non so se ho mancato di effettuare altre modifiche necessarie o di creare qualche altra pagina collegata o non so cosa altro ancora non funziona. Dove sto sbagliando ?
Preciso per completezza che il convertitore ATC200 al momento del test è collegato al Router della rete di casa US Robotics con indirizzo IP fisso 192.168.1.5; porta 50000, è collegato al Pc dove risiede il Server IIS tramite Virtual Serial Comm com 20 attivata ed è perfettamente funzionante sia da locale che da remoto se interrogato da Hyper Terminal di Windows o da altro Client TCP.
Agosto 12, 2011 alle 3:31 pm in risposta a: Gestione convertitore Ethernet/seriale da pagina web #36883Vittorio
PartecipanteTra i links richiamati nei posts precedenti mi incuriosisce il contenuto della discussione riguardante lo Script PHP realizzato per la lettura di un dato dal Vs. convertitore TRP-C31 tramite protocollo Modbus over IP perché mi sembra sostanzialmente di intravederci una risposta ovvero una soluzione alla mia originaria domanda ed esigenza.
Mi e Vi domando: Quello script mi sembra di capire che mi consentirebbe – da pagina web – l’apertura di un Socket tramite cui stabilire la connessione al convertitore ATC2000 e l’invio allo stesso di una stringa di comando (che nel mio caso sarebbe il comando “AT XXX” del Modem) allo stesso modo come invierei quel comando al convertitore dalla videata di un programma Client TCP.
Chiedo però se sia possibile, ovvero come dovrebbe essere modificato quello script PHP, per avere in ritorno a quella stringa di comando inviata la stringa risposta del dispositivo Modem connesso alla seriale del convertitore ATC2000 e corrispondente al messaggio che sarebbe visualizzato nella finestra terminale del Client TCP in risposta al comando AT.
E’ possibile? ovvero sto sbagliando qualche cosa ovvero sto farneticando ?
-
AutorePost