http://www.perlmonks.org?node_id=1011920


in reply to Need to detect continuity between 2 terminals

This is a pretty common thing to do. You should be able to detect RTS/CTS or DCD assuming as martell said the handshaking signals are supported by Device::SerialPort.

Update1: Looks like both modem control(DCD) and handshaking(RTS/CTS) are both supported.

if ($PortObj->can_wait_modemlines) { $rc = $PortObj->wait_modemlines( MS_RLSD_ON ); if (!$rc) { print "carrier detect changed\n"; } } if ($PortObj->can_modemlines) { $ModemStatus = $PortObj->modemlines; if ($ModemStatus & $PortObj->MS_RLSD_ON) { print "carrier detecte +d\n"; } }
# controlling outputs from the port $PortObj->dtr_active(T); # sends outputs direct to hard +ware $PortObj->rts_active(Yes); # return status of ioctl call # return undef on failure

James

There's never enough time to do it right, but always enough time to do it over...

Replies are listed 'Best First'.
Re^2: Need to detect continuity between 2 terminals
by redss (Monk) on Jan 07, 2013 at 02:10 UTC
    Yeah that code example is just what I was looking for.

    I did forget to mention that this is for Win32.

    Unfortunately, Device::SerialPort is not available for Windows, and the Win32::SerialPort module doesnt seem to be available in the Activestate ppm repository.

    Which module should I be using?

      Win32::SerialPort and Win32API::CommPort are both listed on CPAN. Maybe you can install them from there. I am not familiar with Active state.

      James

      There's never enough time to do it right, but always enough time to do it over...