Forum: Mikrocontroller und Digitale Elektronik Per Php zum Rs232-Lan Wandler


von Sven (Gast)


Lesenswert?

Hallo
ich habe mir einen kleinen Tcp Rs232 Server gekauft. Ebay 281711995759
Sehr schönes Teil. Funktioniert super.

Nun aber zum Problem. Ich würde gerne Daten der Rs232 über Php einlesen. 
nur leider klappt das nicht.
Müssen die Daten ein bestimmtes Format haben damit sie eingelesen werden 
können?
Das ausgeben von Daten Php zu rs232 klappt hingegen super.
1
<?php
2
error_reporting(E_ALL);
3
4
echo "<h2>TCP/IP-Verbindung</h2>\n";
5
6
/* Den Port für den WWW-Dienst ermitteln. */
7
$service_port = 20108;
8
9
/* Die  IP-Adresse des Zielrechners ermitteln. */
10
$address = gethostbyname('192.168.1.7');
11
12
/* Einen TCP/IP-Socket erzeugen. */
13
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
14
if ($socket === false) {
15
    echo "socket_create() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error()) . "\n";
16
} else {
17
    echo "OK.\n";
18
}
19
20
echo "Versuche, zu '$address' auf Port '$service_port' zu verbinden ...";
21
$result = socket_connect($socket, '192.168.1.7', 20108);
22
if ($result === false) {
23
    echo "socket_connect() fehlgeschlagen.\nGrund: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
24
} else {
25
    echo "OK.\n";
26
}
27
28
$in = "Test";
29
$in .= "123\r\n";
30
$in .= "Connection: Close\r\n\r\n";
31
$out = '';
32
33
echo "HTTP HEAD request senden ...";
34
socket_write($socket, $in, strlen($in));
35
echo "OK.\n";
36
37
echo "Serverantwort lesen:\n\n";
38
while ($out = socket_read($socket, 20)) {
39
    echo $out;
40
}
41
42
echo "Socket schließen ...";
43
socket_close($socket);
44
echo "OK.\n\n";
45
?>

von abcdef (Gast)


Lesenswert?

Sven schrieb:
> Müssen die Daten ein bestimmtes Format haben damit sie eingelesen werden
> können?
Was sonst.
Steht normalerweise alles in der Doku, aber das Chinateil hat wie so oft 
keine, richtig?

Der Hersteller bietet support:
http://www.usrtechnology.com/sell-1676042-usr-tcp232-2-rs232-to-ethernet-server-tcp-ip-module-support-tcp-udp.html

von abcdef (Gast)


Lesenswert?

Dort gibts PDFs:
http://www.usriot.com/Product/24.html
Steht aber auch nicht wirklich was drinn, nur technische Daten und 
Screenshots von Testsoftware.

von Sven (Gast)


Lesenswert?

Jain der Wandler selbst hat kaum Dokumentation. Wozu auch kostet halt 
extra.
Eigentlich ist es ja egal wohin ich die Verbindung aufbauen möchte. Eine 
"normale" Tcp Ip Verbindung an eine bestimmte Ip mit bestimmten Port.

Nun Sendet der Php Script einige Byte und erwartet einige Byte. Senden 
klappt kommt am Rs232 an nur wenn ich Daten reingebe kommen diese nicht 
in der Php an

Der wandler selber klappt wenn ich mit c eine Verbindung öffne geht 
diese in beide Richtungen.

von Sven (Gast)


Lesenswert?

Wenn ich mich über einen Webbrowser auf den Server anmelde und am Rs232 
den Http Response absende bekomme ich den Inhalt auch auf dem Browser 
wiedergegeben. warum nur klappt das im Php nicht

von Felix Adam (Gast)


Lesenswert?

Es könnte sein, dass deine Anmeldung per Browser eine Seite mit 
JavaScript (Ajax?) startet und auf eine Antwort wartet. Dein PHP-Skript 
hingegen kommt vom Schreiben blitzschnell zum Lesen und da gibt es 
vielleicht einfach noch nichts. Damit beendet sich das Skript, ohne 
Daten bekommen zu haben.

von Sven (Gast)


Lesenswert?

Der Browser gibt nur den Response zum Server ab kein Java oder so

GET / HTTP/1.1
User-Agent: Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.16
Host: 192.168.1.7:20108
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, 
image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: de-DE,de;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Cookie: remeber=1; qtoken_account=YWRtaW4=; 
qtoken=88d22ec0aad520aaeb2e0f5d596b8dd0; showAllAp=true
Pragma: no-cache
Cache-Control: no-cache
Connection: Keep-Alive

Darauf antworte ich mit einem Avr am Rs232

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 55
Content-Type: text/html
Connection: Closed

<html>
<body>
<h1>Hallo, Welt!</h1>
</body>
</html>


Dadurch bekomme ich gewünschtes Hallo welt auf den Browser
Da das gerät aber nicht über den Avr die ganze Seite stellen soll kommt 
meine eigentliche Seite von einem Nas. Ich möchte lediglich einige 
Variablen per Php holen und diese in die Seite einbinden

von Felix Adam (Gast)


Lesenswert?

Ah, okay. Du meinst wohl Request (Anfrage) statt Response (Antwort).

Der Browser wartet ja auch auf eine Antwort. Er will schließlich eine 
Website vom Server erhalten.
Deinem PHP ist das aber egal. Es tut stumpf das, was du programmiert 
hast.

Du könntest eine Wartezeit zwischen Request und der Abfrage nach einer 
Antwort einfügen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.