Ethernet - Serielle Verbindung

OP #3085026
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
Angehängte Dateien:
Persönliche Seite #3085056
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)
OP #3085106
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...
Angehängte Dateien:
(Firma: Ucore Fotografie www.ucore.de) Persönliche Seite #3085324
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
Gast #3085434
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...
Persönliche Seite #3085469
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.
OP #3086520
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....
Angehängte Dateien:
Gast #3086554
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.
Gast #3087579
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.
Persönliche Seite #3087592
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?
Gast #3088203
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...
Persönliche Seite #3088428
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 :-)
OP #3089026
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....
Angehängte Dateien:
OP #3089050
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...
Angehängte Dateien:
OP #3089704
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...
Angehängte Dateien:
Persönliche Seite #3089711
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...
Gast #3089792
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!
Persönliche Seite #3089817
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.
OP #3090095
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
Angehängte Dateien:
OP #3090135
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...)
Persönliche Seite #3090141
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren