Forum: Mikrocontroller und Digitale Elektronik Ethernet - Serielle Verbindung


von Alexander A. (alex0815)


Angehängte Dateien:

Lesenswert?

Hi,
ich habe ein AVR NET IO an eine serielle Schnittstelle hängen. Dieses 
funktioniert mit einem "normalen" USB auf Seriell-Adapter einwandfrei!

Jetzt will ich aber das Ganze über Netzwerk machen, somit habe ich mir 
eine Ethernet auf Seriell Adapter gekauft:
http://www.exsys.ch/index.php?main_page=product_info&cPath=48_49&products_id=638&zenid=69626f21d5418e15f71521028aaa5365

die Verbindung zu dem AVR will jetzt aber noch nicht klappen, er 
(Terminal) kann zwar die COM4 öffnen, sendet nur keine Daten hin un 
her...

Die Einstellungen zu dem ExSys Gerät sieht man in Bild 1 (s.Anhang)

In Bild 2 sieht man wie "vernünftig" das Gerät im Gerätemanager 
angezeigt wird. Auf Bild 3 sieht man die Einstellungen des normalen USB 
auf Seriell-Adapter, welcher funktioniert.

Hat jemand ein Tip warum das noch nicht geht?!?!


PS. Einmal ist es COM4 und einmal COM5, das habe ich im Terminal 
natürlich auch angepasst...

Alex

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hast Du schon den üblichen Loopback-Test gemacht?

RxD und TxD der ansonsten mit nichts verbundenen seriellen Schnittstelle 
miteinander verbinden, mit einem Terminalprogramm gesendete Daten müssen 
wieder empfangen werden.

Geht das nicht, könnte es am Hardware-Handshake liegen, das zu 
deaktivieren ist.

Wie sehen denn die Einstellungen im Gerätemanager aus?
(Rechtsklick auf "Eltima Virtual Serial Port", im Kontexmenü 
"Eigenschaften" auswählen)

von Alex (Gast)


Lesenswert?

Hi,
Danke für deine Antwort, ich meld mich morgen...hab den Rechner schon 
aus...

von Alexander A. (alex0815)


Angehängte Dateien:

Lesenswert?

Da habe ich den Rechner doch nochmal angeschmissen....

Also unter Eigenschaften gibts nicht viel einzustellen. S.Anhang

Ich glaube auch, dass der Loopback - Test nicht so viel bringt, da ich 
ja an der Verlängerung die am ExSys hängt, direkt mein 
USB-Seriell-Adapter hänge. Damit geht das dann!
Das sieht stark danach aus das es am ExSys und/oder an den Einstellungen 
liegt...??? Weiss aber auch nicht...

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Mach zu erst mal einen Loopback-Test, also RX und TX-Leitung direkt 
hinter dem Ethernet/Seriell-Adapter verbinden. Wenn dann die Zeichen 
nicht zurückkommen, also im Hyperterminal angezeigt werden, stimmt bei 
dem Adapter etwas nicht...

Hast du vielleicht irgendwo einen "Kabeldreher" drin, bzw. hast du zwei 
mal TX/TX und RX/RX verbunden anstatt RX/TX?

Es gibt ferner noch Programme, wie z.B. "WIRESHARK", damit kannst du 
sehen was über das Ethernet gesendet wird. Eventuell siehst du da auch 
einen Fehler...

Gruß,
Alex

von Alex (Gast)


Lesenswert?

Hi Namensvetter,

Das mit dem Wireshark ist noch einmal ein guter Tip! Das probiere ich 
mal aus.
Das mit nen Kabeldreher kann ich eigentlich ausschliessen!
An dem ExSys hängt eine 1m RS232 Verlängerung die auf das NET IO geht, 
wenn ich diese Verlängerung vom ExSys abmache und an meinem PC über 
einen RS232-USB Adapter verbinde (COM5)funktioniert die Verbindung ja... 
Somit ist das ja ausgeschlossen... Das muss eigentlich zwangslüfig ein 
Software/Einstellungsbug noch sein.

Ich werde mal mit Wireshark suchen und den Loop-Test dabei machen...

Ich meld mich...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Alexander Alexander schrieb:
> Ich glaube auch, dass der Loopback - Test nicht so viel bringt, da ich
> ja an der Verlängerung die am ExSys hängt, direkt mein
> USB-Seriell-Adapter hänge. Damit geht das dann!

Du sollst mit dem Loopback-Test die Schnittstelle am 
Ethernet-Device-Server überprüfen, nicht Deine µC-Schaltung.

Alex schrieb:
> Das mit nen Kabeldreher kann ich eigentlich ausschliessen!

Vorausgesetzt, daß das Ding nicht DCE/DTE durcheinanderbringt.

Ansonsten ist das Thema Handshake ungeklärt.

Da man anscheinend bei dem Ethernet-Device-Server das Hardwarehandshake 
nicht abschalten kann, wirst Du es durch entsprechende Lötbrücken am 
Stecker überlisten müssen -- also RTS mit CTS verbinden sowie DSR mit 
DCD und DTR.

Bevor Du das aber machst, machst Du erst mal den Loopbacktest.

Wenn der nicht funktioniert, machst Du o.g. Handshakemanipulation und 
wiederholst den Loopbacktest.

Deine Testbuchse, die Du in das Gerät steckst, muss also folgende 
Brücken aufweisen:

2 - 3
7 - 8
1 - 4 - 6

Wenn das dann funktioniert, musst Du die Brücke zwischen 2 und 3 durch 
den Anschluss Deines µC ersetzen, die anderen Brücken aber beibehalten.

von Alex (Gast)


Lesenswert?

Vielen Dank, super erklärt!

von Alexander A. (alex0815)


Angehängte Dateien:

Lesenswert?

Hi,
leider hat das nicht geklappt. Nur der Loop-Test (Bild 2) und auch 
einmal der Loop-Test + Handshakemanipulation (Bild 3) haben nichts 
gebracht...
Terminal ist eingestellt wie im Bild 1 zu sehen.

Ich probiere jetzt mal mit Wireshark mehr raus zu bekommen, wenn jemand 
aber noch einen anderen Tip hat...ich bin sehr dankbar dadrüber....

von usuru (Gast)


Lesenswert?

> leider hat das nicht geklappt. Nur der Loop-Test (Bild 2) und auch
> einmal der Loop-Test + Handshakemanipulation (Bild 3) haben nichts
> gebracht...

Was heist das, kamen die Zeichen zurück oder nicht. Wenn sie nicht 
zurück kamen, hat Dein Adapter eine Macke.

von Alex (Gast)


Lesenswert?

Es kahm nichts zurück!
Ich glaube nicht, dass der hardwaremäßig kaputt ist... der ist ganz 
neu..Ichmeine, das wäre sehrunwahrscheinlich.

von Alex (Gast)


Lesenswert?

Und ich Teste es morgen mal an meinem Laptop...evtl liegst auch am 
Rechner?!?!

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Wie genau testest du überhaupt? Kann man den auf der ETH Seite eventuell 
einfach per Telnet ansprechen? Hast du ein Oszi oder Logikanalysator um 
mal zu schauen wo was an kommt? Was sagt die Anleitung dazu. Wozu muss 
man ein ein Ethernetfähiges Gerät einen RS232 zu Ethernet Bridge 
dranhängen? :-)

von Alex (Gast)


Lesenswert?

Hi,
ich teste durch ausprobieren ob es läuft ;-)
Nen Oszi habe ich auch.

>Kann man den auf der ETH Seite eventuell
>einfach per Telnet ansprechen?

Das weiss ich nicht, was soll das genau heißen bzw bringen?!?!?!?

Will vom TablePC über W-LAN das NET IO per Seriell erreichen, alternativ 
auch übern PC per LAN.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Alex schrieb:
> was soll das genau heißen bzw bringen?!?!?!?

Um eventuell ein Treiberproblem auszuschließen, das Ding ist in erster 
Linie ja ein Ethernetdevice.

Alex schrieb:
> Will vom TablePC über W-LAN das NET IO per Seriell erreichen

Wieso nutzt du nicht die schon vorhandene LAN Schnittstelle?

Alex schrieb:
> Das weiss ich nicht

Dann einfach mal die Anleitung studieren...
Hast du das den schon wie in der Anleitung beschrieben mit dem 
"CentosSEC Virtual COM Software" konfiguriert? Und wie sieht die Konfig 
aus? Kannst du das Gerät anpingen?

Was gibt es den noch bei dem "Packet-Mode" so einzustellen?

von Alex (Gast)


Lesenswert?

Läubi .. schrieb:
> Um eventuell ein Treiberproblem auszuschließen, das Ding ist in erster
> Linie ja ein Ethernetdevice.

Habe es gerade an meinen XP Laptop ausprobiert, das Gleiche...es geht 
leider beides nicht (ohne + mit Handshakeman.) Mein PC hat W7

> Alex schrieb:
>> Will vom TablePC über W-LAN das NET IO per Seriell erreichen
>
> Wieso nutzt du nicht die schon vorhandene LAN Schnittstelle?
Nutze ich auch, habe aber auch eine VB-Visualisierung. Die kommuniziert 
mit RS2323


> Dann einfach mal die Anleitung studieren...
In der Anleitung steht auch nicht viel. Sieh:
http://www.exsys.ch/download/catalog/ex_6030.pdf
http://www.exsys.ch/download/manuals/EX-6030.pdf?zenid=69626f21d5418e15f71521028aaa5365


> Hast du das den schon wie in der Anleitung beschrieben mit dem
> "CentosSEC Virtual COM Software" konfiguriert?
Natürlich, so hat sich ja auch erst der "Virtuelle" Com Port 
eingetragen.

>Und wie sieht die Konfig
> aus? Kannst du das Gerät anpingen?
Auch ja, die blaue Eigenschaftseite im der ersten Post ist lokal auf der 
192.168.178.32

> Was gibt es den noch bei dem "Packet-Mode" so einzustellen?

Nur Enable oder Disable. Hatte es gerade mal disabled, leider auch 
nichts...
Das muss doch gehen, Software lässt sich ohne Fehlermeldung 
installieren, das Gerät ist frisch aus der Verpackung...

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Ich würde mal auf Disable stellen und den TCP Server Mode aktivieren, 
dann müsstest du über Telnet auf Port 100 an der IP Adresse Daten senden 
können (oder halt per Socket aus VB heraus).

Alex schrieb:
> In der Anleitung steht auch nicht viel
Nun gut bei knapp 60€ für so ein Teil war ich davon ausgegangen, dass 
wenigstens eine etwas ausführlichere Anleitung beiliegt...

Alex schrieb:
> Das muss doch gehen
Im Zweifel mal an den Hersteller wenden... Ich hab hier leider nur einen 
XPORT rumliegen kann dir also hier nicht "live" probieren. Eventuell 
können die dir Wenigstens noch ein Dokument schicken wo alle Optionen 
Beschrieben sind.

Alex schrieb:
> Nur Enable oder Disable. Hatte es gerade mal disabled,
> leider auch nichts...
Wie viele Zeichen sendest du denn? Es kann nämlich sein, das sowohl 
Windows als auch das Gerät zunächst puffert bevor ein Paket an die reale 
Schnittstelle rausgeht.

Alex schrieb:
> Nutze ich auch, habe aber auch eine VB-Visualisierung.
> Die kommuniziert mit RS2323
Kannst du die nicht auch auf ETH umstricken? so ist das etwas doppelt 
gemoppelt :-)

von Alex (Gast)


Lesenswert?

Was meinst du mit TCP Server Mode? Wo kann ich den einstellen?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

"Socket Port of Serial IO" wenn man der Anleitung glauben darf.

von Alex (Gast)


Lesenswert?

Ok, probiere ich mal aus. Das doofe ist, dass ich mich nicht mit telnet 
auskenne. Unter W7 gibt's zum Glück genug im i-net zu finden, wie man 
den einrichtet!
Muss mich da ersteinmal einlesen...

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Du kannst auch Putty im Raw mode oder wie gesagt jede beliebige 
Programmiersprache welche Sockets unterstützt nutzen.

von Alexander A. (alex0815)


Angehängte Dateien:

Lesenswert?

Hallo,

habe jetzt auch mal Telnet rumprobiert! Leider auch ohne Ergebnis, ich 
bekomme nicht einmal eine Verbindung hin. Die Einstellungen im ExSys 
habe ich wie Bild 2 gemacht.
Ich versuche jetzt mal über den Hersteller irgendwelche Info zu kriegen. 
Irgendetwas mache ich verkehrt.
Wenn aber noch jemand ein Tip hat, gerne her damit....

von Alexander A. (alex0815)


Angehängte Dateien:

Lesenswert?

Ich habe gerade noch mal die Software deinstalliert und installiert, da 
ist mit aufgefallen, dass man dort noch Type (Server, Client, UDP) und 
Net. Protocoll (Telnet , Raw) auswählen kann. Standart Einstellung ist 
wie im Bild 1. Damit hatte ich es jetzt auch getestet!
Muss ich für meinen Anwendungsfall etwa was anderes auswählen? Kenn mich 
mit den Protokollen nicht so gut aus...

von Alexander A. (alex0815)


Lesenswert?

Es geht jetzt, weiss aber noch nicht genau warum...Melde mich später

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

RAW und TCP sollte die korrekte Einstellung sein. UDP würde auch gehen 
aber nur wenn du eine eigene Software schreibst und Datenpaketverluste 
verkraften kannst.

von Alex (Gast)


Lesenswert?

Also du meinst  "Client" und Raw?
Wofür steht Raw denn eigentlich, selbst google gibt nicht viel Preis!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

In diesem Kontext dürfte Raw soviel bedeuten wie "ohne interpretierte 
Steuerzeichen, ohne zusätzliches Protokoll, alles transparent 
durchreichen".

von Alex (Gast)


Lesenswert?

Ah, ok also rohdaten...

von Alexander A. (alex0815)


Angehängte Dateien:

Lesenswert?

Hallo,
also ich habe mir nur die aktuelle Sofware vom Hersteller runter 
geladen, damit geht es jetzt. Komisch... naja... ein Fehler habe ich 
aber noch evtl. könnt Ihr mir da auch noch helfen???

Wenn ich Daten mit dem Terminal Programm zum Atmega schicke kommen die 
Daten 100% richtig an, die Antworten vom Net IO werden auch 100% 
empfangen. Also alles OK!

Nehme ich aber mein VB-Projekt (s. Code im Anhang) dann kann ich aus VB 
richtig senden, das NET IO liest und versteht es auch richtig, nur die 
Daten die dann das NET schickt werden im VB-Projekt falsch 
interpretiert, also da werden ganz falsche Empfangen. Als ob da 
irgendetwas im Puffer hängt was dann erst abgerufen wird, das ist aber 
nur eine Vermutung...also es kommen keine Hyroglyphen an, sondern alles 
"bekannte" Zeichenfolgen.
Ich kriegs irgenwie nicht hin...

In der USART.c und .h ist es die USART0 die für diese Kommunikation 
verantworltich ist...

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Etwas mehr Details was falsch ist wäre schon nett ;-)
Sind die Zeichen "durcheinander", fehlen Daten ... Was mir auffällt ist, 
das du einerseits Flusskontrolle ausschaltest, dann aber das RTS setzt, 
soll das so sein?

Ich würde im VB einfach mal alle Daten so ausgeben wie sie kommen, dann 
sieht man auch oft schon was falsch sein dürfte. Das Programm scheint ja 
noch weiter zu gehen...

von Alex (Gast)


Lesenswert?

Läubi .. schrieb:
> Etwas mehr Details was falsch ist wäre schon nett ;-)
> Sind die Zeichen "durcheinander", fehlen Daten ... Was mir auffällt ist,
> das du einerseits Flusskontrolle ausschaltest, dann aber das RTS setzt,
> soll das so sein?
Sind keine Hyroglyphen! Als ob er nach 100 Strings z.B. ("11|22|33|44") 
einfach aufhört zu lesen...Wo schalte ich die flusskontrolle denn aus?
> Ich würde im VB einfach mal alle Daten so ausgeben wie sie kommen, dann
> sieht man auch oft schon was falsch sein dürfte. Das Programm scheint ja
> noch weiter zu gehen

Ich muss noch sagen, dass es im Terminal Programm 100%tig funktioniert, 
also muss es an dem Vb Programm liegen!

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Deswegen sag ich ja: Schreib dir ein VB Programm, was nichts anderes 
macht als alle EMpfangenen Strings auf die Konsole zu schreiben. Wenn 
das Problemlos tut, musst du entweder immer mehr Funktion 
drumrumstricken bis es nicht mehr geht, oder in deinem aktuellem 
Programm auf die Suche gehen nach Sachen wie Schnittstelle schließen, 
buffer zurücksetzen und/oder overflow Behandlung...

Alex schrieb:
> Wo schalte ich die flusskontrolle denn aus?
>>SerialPort1.Handshake = IO.Ports.Handshake.None
Und hier wird irgendwas mit RTS gemacht
>>SerialPort1.RtsEnable = True
Das ausschalten ist auch okay, solange du die Statusleitungen nicht 
bedienst und kein XON/XOFF machst.

von Alexander A. (alex0815)


Angehängte Dateien:

Lesenswert?

Hi,

ich habe jetzt mal nur eine Form geschrieben, die nichts anderes macht 
als die Serielle...und immer noch das Gleiche.
Sie liest genau 158 Zeilen ein, dann ist Schluss!
Mit den Einstellungen, Timeouts etc. die auf Bild 1 zu sehen sind habe 
ich auch gespielt, leider ohne irgendeine Änderung!

Hast Du noch eine Idee?

Hier einmal der Code der Forms:
1
Public Class Form1
2
    Dim SerialInput As String = ""
3
4
5
6
7
8
9
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
10
11
        '   SerialPort1.PortName = "COM4"
12
        '   SerialPort1.BaudRate = 9600
13
        '   SerialPort1.Parity = IO.Ports.Parity.None
14
        '   SerialPort1.DataBits = 8
15
        '   SerialPort1.StopBits = IO.Ports.StopBits.One
16
        '    SerialPort1.Handshake = IO.Ports.Handshake.None
17
        ' SerialPort1.RtsEnable = True
18
        SerialPort1.Open()
19
20
        If SerialPort1.IsOpen Then
21
            Label1.Text = "...verbunden"
22
            SerialPort1.Write("11|22|33|44" + Chr(13))
23
        Else
24
            Label1.Text = "...getrennt"
25
        End If
26
    End Sub
27
28
   
29
30
31
32
    Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
33
34
35
        SerialInput = SerialPort1.ReadLine()
36
        Me.Invoke(New EventHandler(AddressOf DoUpdate))
37
38
39
    End Sub
40
41
    Public Sub DoUpdate()
42
43
        ListBox1.Items.Insert(0, "Recv: " & SerialInput)
44
        TextBox1.Text = TextBox1.Text + 1
45
46
    End Sub
47
48
49
50
    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
51
        SerialPort1.Write(TextBox5.Text & Convert.ToChar(13) & Chr(13))
52
    End Sub
53
54
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
55
        ListBox1.Items.Clear()
56
        TextBox1.Text = 0
57
    End Sub
58
59
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
60
        If SerialPort1.IsOpen = True Then
61
            SerialPort1.Close()
62
        End If
63
64
        Me.Close()
65
66
    End Sub
67
68
End Class

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Warum sind in Form1_Load alle Einstellungen der Schnittstelle 
auskommentiert?

von Alexander A. (alex0815)


Lesenswert?

Weil ich die Testweise in den "Application Settings" (siehe Bild 1), 
angepasst habe. Habe damit dann gespielt....

von Alexander A. (alex0815)


Lesenswert?

Wenn ich

SerialInput = SerialPort1.ReadExisting()
anstelle
SerialInput = SerialPort1.ReadLine()

schreibe dann liest er mir alles ein, schreibt es nur nicht nach jedem 
"\r\n" in einer neuen Zeile der Listbox, sondern alle einfach bis ans 
Ende und fängt dann eine neue Zeile an (Insgesamt dann 78 Zeilen...)

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Am besten macht du da einen Neuen Thread mit verweis auf diesem in PC 
Programmierung auf, mit dem Adapter an sich scheint es ja nix zu tun zu 
haben, folgende Dinge dir mir auffallen:
- Wenn kein Newline gesendet wird hängt dein SerialPort1.ReadLine() für 
immer
- kommt SerialPort1.ReadLine() mit allen Zeichen klar (also z.B. auch 
0 bytes, steuerzeichen etc...?)
- die Kommunikation über die globale Variable 'SerialInput' kann sich im 
schlimmsten Fall selbst überschreiben, kann man dem Event kein Objekt 
mitgeben, sodass du nicht über eine Globale Variable kommunizieren 
musst?

Alexander Alexander schrieb:
> Wenn ich
Vermutlich fehlt dann ein abschließendes Newline irgendwo...

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.