Serielle Schnittstelle Win32::SerialPort, DTR und RTS setzen ?

Serielle Schnittstelle Win32::SerialPort, DTR und RTS setzen ?

am 07.10.2006 12:49:22 von Markus Vogel

Hallo *,

012345678901234567890123456789012345678901234567890123456789 012345678901234

ich versuche gerade ein Gerät über die serielle Schnittstelle mit Perl
abzufragen. Mit Win32::SerialPort funktioniert das grundsätzlich ohne
Probleme.
Das externe Gerät das ich ansteuern will verlangt aber, dass die DTR
Leitung auf High und gleichzeitig die RTS Leitung auf Low (oder umgekehrt)
gesetzt wird. Wie kann ich das mit Perl realisieren ?
Mit
$PortObj->handshake("rts");
oder
$PortObj->handshake("dtr");

kann man zwar grundsätzlich den Status von DTR und RTS steuern, verwende
ich
einen der beiden genannten Befehle dann sind die Zustände von RTS oder DTR
immer gleich. Also beide auf High oder beide auf Low, ich brauche aber
unbedingt unterschiedliche Zustände.
Hat irgend jemand eine Idee wie man die Zustände explizit setzen kann ?

Vielen Dank,
Markus Vogel

Re: Serielle Schnittstelle Win32::SerialPort, DTR und RTS setzen ?

am 07.10.2006 14:52:49 von df4or

Markus Vogel wrote:

>
012345678901234567890123456789012345678901234567890123456789 012345678901234

Huh?


>
> ich versuche gerade ein Gerät über die serielle Schnittstelle mit Perl
> abzufragen. Mit Win32::SerialPort funktioniert das grundsätzlich ohne
> Probleme.
> Das externe Gerät das ich ansteuern will verlangt aber, dass die DTR
> Leitung auf High und gleichzeitig die RTS Leitung auf Low (oder umgekehrt)
> gesetzt wird. Wie kann ich das mit Perl realisieren ?
> Mit
> $PortObj->handshake("rts");
> oder
> $PortObj->handshake("dtr");
>
> kann man zwar grundsätzlich den Status von DTR und RTS steuern, verwende
> ich
> einen der beiden genannten Befehle dann sind die Zustände von RTS oder DTR
> immer gleich. Also beide auf High oder beide auf Low, ich brauche aber
> unbedingt unterschiedliche Zustände.
> Hat irgend jemand eine Idee wie man die Zustände explizit setzen kann ?

man Device::SerialPort

Operating Methods inherited from Win32API::CommPort
write_bg write_done read_bg
read_done reset_error suspend_tx
resume_tx dtr_active rts_active
break_active xoff_active xon_active
purge_all purge_rx purge_tx
pulse_rts_on pulse_rts_off pulse_dtr_on
pulse_dtr_off ignore_null ignore_no_dsr
subst_pe_char abort_on_error output_xoff
output_dsr output_cts tx_on_xoff
input_xoff get_tick_count

rts_active z.B. wird wohl das sein was Du suchst, oder?

Gruß,
Ekki

Re: Serielle Schnittstelle Win32::SerialPort, DTR und RTS setzen ?

am 07.10.2006 15:42:36 von Torsten Mohr

Hallo,

> Hat irgend jemand eine Idee wie man die Zustände explizit setzen kann ?

per $obj->dtr_active(0/1)
bzw. $obj->rts_active(0/1)


Grüße,
Torsten.

Re: Serielle Schnittstelle Win32::SerialPort, DTR und RTS setzen ?

am 07.10.2006 17:59:59 von Markus Vogel

Hi,

[...]

> man Device::SerialPort
>
> Operating Methods inherited from Win32API::CommPort
> write_bg write_done read_bg
> read_done reset_error suspend_tx
> resume_tx dtr_active rts_active
> break_active xoff_active xon_active
> purge_all purge_rx purge_tx
> pulse_rts_on pulse_rts_off pulse_dtr_on
> pulse_dtr_off ignore_null ignore_no_dsr
> subst_pe_char abort_on_error output_xoff
> output_dsr output_cts tx_on_xoff
> input_xoff get_tick_count
>
> rts_active z.B. wird wohl das sein was Du suchst, oder?
>

Danke, es klappt, mit

$PortObj->dtr_active(1);
$PortObj->rts_active(0);

bekomme ich genau den Zustand den ich brauche.
Danke für den Hinweis auf die geerbten Methoden aus Win32API::CommPort.

Gruß,
Markus Vogel