Serial Port Monitoring

Mike Klinke lsomike at futzin.com
Wed Oct 13 03:50:22 UTC 2004


On Tuesday 12 October 2004 09:57, Neil Marjoram wrote:
> Has anyone got any software that can monitor all data  from a
> serial port?
>
> I have looked around and found a couple of projects, but I can't
> find anything that can time stamp the data as well as log it.
>
> I am currently looking at slsnif-0.4.3, which seems to be able to
> do it only I am getting an error :
>
> Serial Line Sniffer. Version 0.4.3
>         Copyright (C) 2001 Yan Gurtovoy (ymg at dakotacom.net)
>
> Failed to open a pty: No such file or directory
>
> Can anyone tell me what this may be?
>
> I am in a race with an MS system to deliver the output - the
> project found the Winblows box to be unreliable (funny that!),
> and big mouth here said why don't you use a proper system!
>
> Thanks,
>
> Neil.
>
 
You didn't say, but if your serial communication is based on lines 
of text you can easily use something like tclsh or expect as 
follows:

############## serial_capture.sh ##############

#!/usr/bin/expect

proc Reader { pipe } {
  global done

  if {[eof $pipe]} {
    catch {close $pipe}
    set done 1
    return
  }
  gets $pipe line
  set tagxmitdate [clock seconds]
  #puts $line $tagxmitdate
  puts "$tagxmitdate $line"
}

set pipe [open "|cat /dev/ttyS0" r]
fileevent $pipe readable [list Reader $pipe]
vwait done

####### End serial_capture.sh #########

This was done on FC1 with expect:

$rpm -qa expect
expect-5.39.0-96.0.1

The line with "set pipe" shows ttyS0 but you can specify which 
serial device you want to use. The output will be as follows:

$./serial_capture.sh

1097638625 Line 1
1097638625 Line 2 
1097638625 Line 3
1097638625 etc...

which shows the number of seconds since Jan 01, 1970 for each line 
of text your received.  In order to save this to a file simply 
redirect the output: i.e.

$./serial_capture.sh > serial.log

Regards, Mike Klinke  




More information about the fedora-list mailing list