plusminus
11.04.2007, 00:58
Moin, ich bin hier schon seit einiger Zeit am rumprobieren und ich bekomme es einfach nicht hin von meinem PDA (Acer n50) über RS232 Daten zu senden.
Empfangen klappt absolut problemlos :!:
Folgende Einstellungen werden getätigt:
RS232.PortName = "COM1"
RS232.Parity = IO.Ports.Parity.None
RS232.DataBits = 8
RS232.StopBits = IO.Ports.StopBits.One
RS232.Handshake = IO.Ports.Handshake.None
RS232.RtsEnable = False
RS232.DtrEnable = False
RS232.ReceivedBytesThreshold = 1
und natürlich RS232.open()
Zum senden benutze ich folgenden Code
If RS232.IsOpen Then
Debug.WriteLine("Trying to write: " + Message)
Bytes_Sent += Message.Length
RS232.Write(Message)
Debug.WriteLine("Bytes to write: " + RS232.BytesToWrite.ToString)
End If
Also Ausgabe bekomme ich:
Trying to write: test!
Bytes to write: 0
Senden von PC zu PDA funktioniert, wie gesagt, einwandfrei.
Die RS232-Schnittstelle am Laptop (über PCMCIA-Card) funktioniert auch komplett. Habe bei "kurzegschlossenen" RX/TX-Leitungen das empfangen, was ich gesendet habe :arrow: da liegt das Problem nicht :!:
Muss es also am PDA, an der Verbindung (Cradle, DOckingstation) oder an der Software liegen.
Ich benutze für die ganze Sache das hTerm-Terminal und da gibt es so 4 Lämpchen: CTS, DSR, RI und DCD
Wenn ich bei den Einstellungen:
RS232.Handshake = IO.Ports.Handshake.None
ändere auf:
RS232.Handshake = IO.Ports.Handshake.RequestToSend
dann geht das CTS-Lämpchen im hTerm an.
Soweit funktioniert das also schonmal ^^
\:D/ \:D/ \:D/
oh siehe da, während des schreibens habe ich noch ein wenig rumgefummelt und plötzlich gehts und zwar mit folgenden Einstellungen kann ich nun auch empfangen:
RS232.PortName = "COM1"
RS232.Parity = IO.Ports.Parity.None
RS232.DataBits = 8
RS232.StopBits = IO.Ports.StopBits.One
RS232.Handshake = IO.Ports.Handshake.RequestToSend
RS232.RtsEnable = False
RS232.DtrEnable = True 'Hieran hats gelegen !
DTR bedeutet: Data Terminal Ready
Über diese Leitung signalisiert der PC dem Gerät, dass er betriebsbereit ist. Damit kann ein Gerät eingeschaltet oder zurückgesetzt werden. (Üblicherweise schaltet ein Gerät z.B. Modem diese Leitung auf DSR durch, wenn es einsatzbereit ist)
irgendwie logisch 8-[
was mich noch wundert, dass die BytesToWrite angeblich 0 waren...
Empfangen klappt absolut problemlos :!:
Folgende Einstellungen werden getätigt:
RS232.PortName = "COM1"
RS232.Parity = IO.Ports.Parity.None
RS232.DataBits = 8
RS232.StopBits = IO.Ports.StopBits.One
RS232.Handshake = IO.Ports.Handshake.None
RS232.RtsEnable = False
RS232.DtrEnable = False
RS232.ReceivedBytesThreshold = 1
und natürlich RS232.open()
Zum senden benutze ich folgenden Code
If RS232.IsOpen Then
Debug.WriteLine("Trying to write: " + Message)
Bytes_Sent += Message.Length
RS232.Write(Message)
Debug.WriteLine("Bytes to write: " + RS232.BytesToWrite.ToString)
End If
Also Ausgabe bekomme ich:
Trying to write: test!
Bytes to write: 0
Senden von PC zu PDA funktioniert, wie gesagt, einwandfrei.
Die RS232-Schnittstelle am Laptop (über PCMCIA-Card) funktioniert auch komplett. Habe bei "kurzegschlossenen" RX/TX-Leitungen das empfangen, was ich gesendet habe :arrow: da liegt das Problem nicht :!:
Muss es also am PDA, an der Verbindung (Cradle, DOckingstation) oder an der Software liegen.
Ich benutze für die ganze Sache das hTerm-Terminal und da gibt es so 4 Lämpchen: CTS, DSR, RI und DCD
Wenn ich bei den Einstellungen:
RS232.Handshake = IO.Ports.Handshake.None
ändere auf:
RS232.Handshake = IO.Ports.Handshake.RequestToSend
dann geht das CTS-Lämpchen im hTerm an.
Soweit funktioniert das also schonmal ^^
\:D/ \:D/ \:D/
oh siehe da, während des schreibens habe ich noch ein wenig rumgefummelt und plötzlich gehts und zwar mit folgenden Einstellungen kann ich nun auch empfangen:
RS232.PortName = "COM1"
RS232.Parity = IO.Ports.Parity.None
RS232.DataBits = 8
RS232.StopBits = IO.Ports.StopBits.One
RS232.Handshake = IO.Ports.Handshake.RequestToSend
RS232.RtsEnable = False
RS232.DtrEnable = True 'Hieran hats gelegen !
DTR bedeutet: Data Terminal Ready
Über diese Leitung signalisiert der PC dem Gerät, dass er betriebsbereit ist. Damit kann ein Gerät eingeschaltet oder zurückgesetzt werden. (Üblicherweise schaltet ein Gerät z.B. Modem diese Leitung auf DSR durch, wenn es einsatzbereit ist)
irgendwie logisch 8-[
was mich noch wundert, dass die BytesToWrite angeblich 0 waren...