Hallo Foraner, ich suche (immer noch) eine Moeglichkeit, RS-232 ueber Ethernet (oder sogar Internet) umzuleiten. Wobei ich mir die Moeglichkeiten Rechner-Rechner, Rechner-Mikrocontroller und Mikrocontroller-Mikrocontroller offen halten moechte. Fuer die Rechner-Rechner Methode habe ich schon mal http://sourceforge.net/projects/com0com/ und http://www.hw-group.com/products/hercules/index_de.html angeschaut. Fuer den Mikrocontroller habe ich mir schon mal ENC28J60-Module geholt, und eine paar Arduino-Nano liegen auch noch herum. Hat schon jemand Erfahrungen, ob solche Software mit Arduino-Libraries kompatibel sind? Ich habe leider wenig Erfahrung Ethernet (noch mit C) und moechte mich nicht verrennen in etwas, das eh nicht funktioniert. Vielen Dank fuer Eure Tipps! Gruss Chregu
Aha, XPort, ja, habe ich auch schon gesehen. Wie sieht denn die PC-Seite aus (Windows[XP])? Ich moechte da einen virtuellen COM-Port. Gruss Chregu
Es gibt von Lantronix eine Software, die einen Virtuellen COM Port zur Verfügung stellt.
Sowas? http://www.hw-group.com/products/hw_vsp/hw_vsp2_de.html Dazu müsste man "nur noch" dem Arduino das Protokoll beibringen.
Ja ja, genau! Ist das realistisch, auf der Arduino-Seite das Protokoll zu integrieren? Gruss Chregu
Ich habe vor Jahren mal mit den Modulen von Tibbo rumgespielt. Es waren wohl diese Orangen Tm100 Teile. Damit habe ich zwei Aufbauversionen getestet. Eine Seite ein Pc mit virtuellen Comport und auf der anderen Seite ein Tm100 mit Rs232 Ausgang und daran ein Messgerät das ich ferngesteuert habe. Beim zweiten Aufbau habe ich auf der PC Seite einen normalen Comport verwendet der auf ein zweites Tm100 ging das mit dem anderen Modue "gepaart" war. Beide Aufbauten liefen sowohl im lokalen Lan sowie über ein Lantolan Vpn mit zwei Dsl Anschlüssen problemlos. Bei der Vpn Lösung war natürlich die Übertragungsrate und die Antwortzeit schon recht beschränkt, was aber am Vpn lag
Telnet kann man mit den Lantronix- oder Tibbo-Dingern natürlich auch verwenden, das spart das Verwenden des virtuellen Treibers -- aber nicht jedes Programm, das dafür gebaut ist, serielle Schnittstellen anzusprechen, kann alternativ telnet resp. simplen Socket-I/O.
USB Lanport sharkoon 4-port http://www.sharkoon.com/?q=de/node/1797 hab ich und funktioniert an winXP prima mit USB Com Adapter sharkoon 1-port http://www.amazon.de/SHARKOON-USB-LANPort-100-Ethernet/dp/B002TXFVNC Christian Müller schrieb: > oder > sogar Internet leider nicht sondern nur lokal! Fernzugriff über Internet nur vom über Compi per VNC oder Remotedesktop im lokalen Netzwerk
:
Bearbeitet durch User
So nach heutigem Studium (soweit es geht neben den Kindern) werd ich ma folgende Loesung probieren: Server: ENC28J60 Module auf Arduino und Software: http://www.tweaking4all.com/hardware/arduino/arduino-enc28j60-ethernet/ verbunden ueber TCP/IP mit: Client: http://www.hw-group.com/products/hw_vsp/hw_vsp2_de.html Kann das wohl gehen? Gruss Chregu
wäre das für dich vielleicht eine Lösung? http://www.wiznet.co.kr/product-item/wiz550s2e-2/ Ich habe damit schon mal gearbeitet. Das ganze ist eigentlich ziemlich einfach. Auf der Controller Seite hat man nur eine Serielle Schnittstelle bei der die Daten direkt übertragen werden können. Über eine Software für den PC stellt man ip Adresse und andere Dinge ein. Auf der PC Seite hat man eine echte Ethernet Schnittstelle. Diese kann man zum Beispiel mit http://www.hw-group.com/products/hercules/index_en.html ansteuern. Auf der Internet Seite steht etwas von Support WIZ VSP (Virtual Serial Port) program also müsste es auch über einen Seriellen Port irgendwie gehen. Das hab ich aber selbst noch nicht versucht. Das hier könnte aber auch Funktionieren: http://www.hw-group.com/products/hw_vsp/hw_vsp2_de.html
Guten Abend! Ich habe nun mehr oder weniger erfolgreich folgendes System zum Laufen gebracht: Christian M. schrieb: > Server: ENC28J60 Module auf Arduino und Software: > http://www.tweaking4all.com/hardware/arduino/arduino-enc28j60-ethernet/ > > verbunden ueber TCP/IP mit: > > Client: http://www.hw-group.com/products/hw_vsp/hw_vsp2_de.html Der Code im Arduino Nano:
1 | #include <SPI.h> |
2 | #include <UIPEthernet.h> |
3 | |
4 | // network configuration. gateway and subnet are optional.
|
5 | // the media access control (ethernet hardware) address for the shield:
|
6 | byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; |
7 | //the IP address for the shield:
|
8 | byte ip[] = { 192, 168, 1, 99 }; |
9 | // the router's gateway address:
|
10 | byte gateway[] = { 10, 0, 0, 1 }; |
11 | // the subnet:
|
12 | byte subnet[] = { 255, 255, 0, 0 }; |
13 | |
14 | // telnet defaults to port 23
|
15 | EthernetServer server = EthernetServer(23); |
16 | |
17 | void setup() |
18 | {
|
19 | Serial.begin(9600); |
20 | Serial.println("Serielle Schnittstelle mit 9600baud"); |
21 | |
22 | // initialize the ethernet device
|
23 | Ethernet.begin(mac,ip); |
24 | |
25 | // start listening for clients
|
26 | server.begin(); |
27 | }
|
28 | |
29 | void loop() |
30 | {
|
31 | // if an incoming client connects, there will be bytes available to read:
|
32 | EthernetClient client = server.available(); |
33 | if (client == true) { |
34 | // lies Daten aus der seriellen Schnittstelle falls vorhanden
|
35 | // und schicke sie an den Client
|
36 | if (Serial.available() > 0) { |
37 | server.write(Serial.read()); |
38 | }
|
39 | // schicke vom Client empfangene Daten auf die serielle Schnittstelle
|
40 | Serial.write(client.read()); |
41 | }
|
42 | }
|
Vom Client gesendete Zeichen kommen sofort zur seriellen Schnittstelle des Arduino raus. Zurueckgesendete Zeichen kommen erst beim naechsten Transfer zurueck. Laut WireShark kommt jedesmal eine Antwort, bei keinem Zeichen /n. Kann man das umgehen? So wie ich Telnet verstehe, bleibt die Verbindung ja bestehen, nicht wie bei http. Oder wird sie fuer jedes Zeichen neu aufgebaut? Kann jemand das WireShark-Protokoll (im Anhang) anschauen. Es enthaelt 4 Pakete, die bei einem Zeichen uebertragen werden (Client -> Server "f", bekomme zurueck "g"). Interessant ist, dass das Virtual Serial Port Programm keinerlei Overhead-Daten uebertraegt, ausser beim oeffnen der (virtuellen) Schnittstelle auf der Client-Seite, ich habe das auch mal mitgeschnitten und analysiert:
1 | FF FA 2C 01 00 00 25 80 FF F0 |
2 | FF FA 2C 01 00 00 25 80 FF F0 |
3 | ^^ ^^ Baudrate |
4 | FF FA 2C 03 01 FF F0 |
5 | ^^ Parität |
6 | FF FA 2C 04 01 FF F0 |
7 | ^^ Stoppbits |
8 | FF FA 2C 02 08 FF F0 |
9 | ^^ Datenbits |
Aber es kommt nicht immer genau dieses Paket, manchmal fehlt die erste (oder zweite) Zeile, dann wiederholt es sich sofort mit dem Kompletten:
1 | FF FA 2C 01 00 00 25 80 FF F0 |
2 | FF FA 2C 01 00 00 25 80 FF F0 |
3 | FF FA 2C 03 01 FF F0 |
4 | FF FA 2C 04 01 FF F0 |
5 | FF FA 2C 02 08 FF F0 |
6 | |
7 | FF FA 2C 01 00 00 25 80 FF F0 |
8 | FF FA 2C 03 01 FF F0 |
9 | FF FA 2C 04 01 FF F0 |
10 | FF FA 2C 02 08 FF F0 |
11 | FF FA 2C 01 00 00 25 80 FF F0 |
12 | FF FA 2C 01 00 00 25 80 FF F0 |
13 | FF FA 2C 03 01 FF F0 |
14 | FF FA 2C 04 01 FF F0 |
15 | FF FA 2C 02 08 FF F0 |
Soweit der Stand hier. Ich muss noch pruefen, ob es fuer meine Anwendung ein Problem darstellt, wenn die Antwort nicht sofort kommt. Kann es auch am Sketch liegen? Gruss Chregu
Grad noch was Interessantes gesehen. WireShark kennt diese Kommandos fuer die serielle Schnittstelle:
1 | No. Time Source Destination Protocol Length Info |
2 | 63 2497.409865000 192.168.1.41 192.168.1.99 TELNET 85 Telnet Data ... |
3 | |
4 | Frame 63: 85 bytes on wire (680 bits), 85 bytes captured (680 bits) on interface 0 |
5 | Interface id: 0 (\Device\NPF_{77C2B386-320B-4171-A2DB-9090714A1385}) |
6 | Encapsulation type: Ethernet (1) |
7 | Arrival Time: Jun 28, 2015 19:37:09.572435000 Osteuropäische Sommerzeit |
8 | [Time shift for this packet: 0.000000000 seconds] |
9 | Epoch Time: 1435509429.572435000 seconds |
10 | [Time delta from previous captured frame: 0.000075000 seconds] |
11 | [Time delta from previous displayed frame: 0.000075000 seconds] |
12 | [Time since reference or first frame: 2497.409865000 seconds] |
13 | Frame Number: 63 |
14 | Frame Length: 85 bytes (680 bits) |
15 | Capture Length: 85 bytes (680 bits) |
16 | [Frame is marked: False] |
17 | [Frame is ignored: False] |
18 | [Protocols in frame: eth:ethertype:ip:tcp:telnet] |
19 | [Coloring Rule Name: TCP] |
20 | [Coloring Rule String: tcp] |
21 | Ethernet II, Src: AsustekC_0d:cc:2e (00:0e:a6:0d:cc:2e), Dst: de:ad:be:ef:fe:ed (de:ad:be:ef:fe:ed) |
22 | Destination: de:ad:be:ef:fe:ed (de:ad:be:ef:fe:ed) |
23 | Address: de:ad:be:ef:fe:ed (de:ad:be:ef:fe:ed) |
24 | .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default) |
25 | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) |
26 | Source: AsustekC_0d:cc:2e (00:0e:a6:0d:cc:2e) |
27 | Address: AsustekC_0d:cc:2e (00:0e:a6:0d:cc:2e) |
28 | .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) |
29 | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) |
30 | Type: IP (0x0800) |
31 | Internet Protocol Version 4, Src: 192.168.1.41 (192.168.1.41), Dst: 192.168.1.99 (192.168.1.99) |
32 | Version: 4 |
33 | Header Length: 20 bytes |
34 | Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport)) |
35 | 0000 00.. = Differentiated Services Codepoint: Default (0x00) |
36 | .... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00) |
37 | Total Length: 71 |
38 | Identification: 0x777c (30588) |
39 | Flags: 0x02 (Don't Fragment) |
40 | 0... .... = Reserved bit: Not set |
41 | .1.. .... = Don't fragment: Set |
42 | ..0. .... = More fragments: Not set |
43 | Fragment offset: 0 |
44 | Time to live: 128 |
45 | Protocol: TCP (6) |
46 | Header checksum: 0xff57 [validation disabled] |
47 | [Good: False] |
48 | [Bad: False] |
49 | Source: 192.168.1.41 (192.168.1.41) |
50 | Destination: 192.168.1.99 (192.168.1.99) |
51 | [Source GeoIP: Unknown] |
52 | [Destination GeoIP: Unknown] |
53 | Transmission Control Protocol, Src Port: 2639 (2639), Dst Port: 23 (23), Seq: 11, Ack: 1, Len: 31 |
54 | Source Port: 2639 (2639) |
55 | Destination Port: 23 (23) |
56 | [Stream index: 2] |
57 | [TCP Segment Len: 31] |
58 | Sequence number: 11 (relative sequence number) |
59 | [Next sequence number: 42 (relative sequence number)] |
60 | Acknowledgment number: 1 (relative ack number) |
61 | Header Length: 20 bytes |
62 | .... 0000 0001 1000 = Flags: 0x018 (PSH, ACK) |
63 | 000. .... .... = Reserved: Not set |
64 | ...0 .... .... = Nonce: Not set |
65 | .... 0... .... = Congestion Window Reduced (CWR): Not set |
66 | .... .0.. .... = ECN-Echo: Not set |
67 | .... ..0. .... = Urgent: Not set |
68 | .... ...1 .... = Acknowledgment: Set |
69 | .... .... 1... = Push: Set |
70 | .... .... .0.. = Reset: Not set |
71 | .... .... ..0. = Syn: Not set |
72 | .... .... ...0 = Fin: Not set |
73 | Window size value: 65535 |
74 | [Calculated window size: 65535] |
75 | [Window size scaling factor: -2 (no window scaling used)] |
76 | Checksum: 0x6a94 [validation disabled] |
77 | [Good Checksum: False] |
78 | [Bad Checksum: False] |
79 | Urgent pointer: 0 |
80 | [SEQ/ACK analysis] |
81 | [iRTT: 0.001171000 seconds] |
82 | [Bytes in flight: 31] |
83 | Telnet |
84 | Suboption COM Port Control |
85 | Command: Suboption (250) |
86 | Subcommand: COM Port Control |
87 | Baud Rate: Client Baud Rate: 9600 |
88 | Suboption End |
89 | Command: Suboption End (240) |
90 | Suboption COM Port Control |
91 | Command: Suboption (250) |
92 | Subcommand: COM Port Control |
93 | Parity: Client Parity: None |
94 | Suboption End |
95 | Command: Suboption End (240) |
96 | Suboption COM Port Control |
97 | Command: Suboption (250) |
98 | Subcommand: COM Port Control |
99 | Stop Bits: Client Stop: 1 |
100 | Suboption End |
101 | Command: Suboption End (240) |
102 | Suboption COM Port Control |
103 | Command: Suboption (250) |
104 | Subcommand: COM Port Control |
105 | Data Size: Client Data Size: 8 |
106 | Suboption End |
107 | Command: Suboption End (240) |
Guten Abend, nun funktioniert mein TCP <-> RS-232 Server fast perfekt. Code ist unten dran, ein Bild vom Print angefuegt. Ein kleiner Schoenheitsfehler gibt's noch. Die Daten kommen erst zum Client zurueck, wenn der etwas sendet. Kann man das aendern? Der Overhead am Anfang kann man abschalten, heisst NVT. Das erste Zeichen wird verschluckt. Gruss Chregu
1 | /*
|
2 | * UIPEthernet is a TCP/IP stack that can be used with a enc28j60 based
|
3 | * TCP server at 192.168.1.99 on port 23 (Telnet).
|
4 | */
|
5 | |
6 | |
7 | #include <SPI.h> |
8 | #include <UIPEthernet.h> |
9 | |
10 | // network configuration. gateway and subnet are optional.
|
11 | // the media access control (ethernet hardware) address for the shield:
|
12 | byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; |
13 | //the IP address for the shield:
|
14 | byte ip[] = { 192, 168, 1, 99 }; |
15 | // the router's gateway address:
|
16 | byte gateway[] = { 10, 0, 0, 1 }; |
17 | // the subnet:
|
18 | byte subnet[] = { 255, 255, 0, 0 }; |
19 | |
20 | // telnet defaults to port 23
|
21 | EthernetServer server = EthernetServer(23); |
22 | |
23 | void setup() |
24 | {
|
25 | Serial.begin(9600); |
26 | Serial.println("Serielle Schnittstelle mit 9600baud"); |
27 | Serial.setTimeout(100); |
28 | |
29 | // initialize the ethernet device
|
30 | Ethernet.begin(mac,ip); |
31 | |
32 | // start listening for clients
|
33 | server.begin(); |
34 | }
|
35 | |
36 | void loop() |
37 | {
|
38 | // if an incoming client connects, there will be bytes available to read:
|
39 | EthernetClient client = server.available(); |
40 | if (client == true) { |
41 | // liest Daten aus der seriellen Schnittstelle falls vorhanden
|
42 | // und schicke sie an den Client
|
43 | if (Serial.available() > 0) { |
44 | //server.write(Serial.read());
|
45 | client.print(Serial.readString()); |
46 | }
|
47 | // schicke vom Client empfangene Daten auf die serielle Schnittstelle
|
48 | // das funktioniert super
|
49 | Serial.write(client.read()); |
50 | }
|
51 | }
|
Mit atmel microcontrollern lässt sich das auch ganz gut mit dem ethersex-firmware framework machen. Hat den Vorteil, das man auch dhcp hat und für Änderung der IP nicht den controller wieder flashen muss. Näheres hier: http://old.ethersex.de/index.php/YPort Ich habe damit mal eine Ansteuerung für einen Belegdrucker zusammengebaut: http://seemstowork.blogspot.com/2015/03/will-it-print-part-1-for-friend-of-mine.html Basis war atmega1284 und enc28j60. Bequemlichkeitshalber auf dem avr-netio board von Pollin.
Zur Virtuellen Com gibts bei AK-Nord auch eine Version. Habe schon öfter eine benötigt und bin bisher immer gut damit klar gekommen. http://www.ak-nord.de unter Downloads. Und sehr schön zusammengebastelt der Arduino, Daumen hoch!
Christian M. schrieb: > Guten Abend, > > nun funktioniert mein TCP <-> RS-232 Server fast perfekt. wow gratuliere, nur wäre ein Pollin NETIO http://www.pollin.de/shop/dt/NjI5OTgxOTk-/Bausaetze_Module/Entwicklerboards/AVR_NET_IO_Fertigmodul.html?gclid=CjwKEAjwt_isBRDuisOm1dTQqGISJAAfRrEAK55P0jS2m8wPcV5sdSwr9s2U99WzkwCoeg0vmIfCXRoCSn_w_wcB selbst mit atmega1284p 16k RAM! bestückt wie meiner nicht schneller und billiger gewesen? (OK meine Wandler Recom 785-1.0A und Recom R7833-0.5A statt der linearen sind schon teuer aber dafür ohne Kühlkörper und stromsparend und laufen an 12V) oder wenn schon nano, dann doch mit so einem Modul http://www.ebay.de/itm/MAX3232-RS232-to-TTL-Converter-Module-Serial-Module-/201006697094?pt=LH_DefaultDomain_77&hash=item2ecceeca86
Hallo, ja habe jetzt alles zum Laufen gekriegt, an der Seriellen haengt die IntelliBox. Auf dem Natel, aehm Haendi, laeuft das "WiFi TCP/UDP Controller" Aepp. Mein Versuchsaufbau ist im Bild. Und ja, das ist ein konstruktives Chaos... Die Packete kommen fast verzoegerungsfrei an, man merkt nichts. Manchmal "haengt" es. Sekundenlang, dann kommt alles miteinander. Wo bleiben die Packete haengen? @Joachim: Das Breakoutboard hat ja gar keine Montageloecher :-)) @Frank: Danke! Gruss Chregu
Christian M. schrieb: > @Joachim: Das Breakoutboard hat ja gar keine Montage 1. Ich hasse Montage (die kürzeste Horrorgeschichte-> Montag) 2. Ich habe Schmelzkleber und Bohrmaschine
Ich wollte die Bridge TCP / IP bekommen, aber VSP2 hat nicht geholfen, weil es keine Version für Windows 10 gab, es hat mich traurig gemacht. Ich musste Geld für die https://www.serial-over-ethernet.com/de/ ausgeben, wodurch ich Daten von einem realen oder virtuellen COM-Port über Ethernet an das Netzwerk senden konnte. Ich bin kein Experte in all dem. Kann mir jemand eine kostenlose Option mit minimalen Programmierkenntnissen nennen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.