EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: [Scopes] BMP image record??
From: Rod Nussbaumer <[email protected]>
To: Pavel Masloff <[email protected]>
Cc: EPICS Tech Talk <[email protected]>
Date: Sun, 29 Apr 2012 13:24:39 -0700
In principle, you should be able to read the binary data just as if you were receiving a binary formatted waveform. The EPICS waveform record will need to be set to an unsigned char data type. The trick will be to properly handle ending the transmission. Since your Python code seems to use a timeout to determine the end of the file, you could do that in streamDevice, too, by setting ' InTerminator = "" ' & setting some reasonable number for the 'ReadTimeout' in the protocol for the image file reader. Perhaps Dirk can confirm this.

You will need to set the NELM field to something large enough to hold the largest image file that can be transmitted. I do not know how you could automatically get the image data from the waveform record into a file without some assistance from a host-based tool.

Rod Nussbaumer
ISAC Controls, TRIUMF
Vancouver, Canada.


Pavel Masloff wrote:
Why can't I?
In Hyperterminal (as well as in Python) you simply send a command and
receive bytes, which you forward to a binary file. Sth like this:

|import sys
import os
import time
import serial

# create target file
print os.getcwd()
f = open('hardcopy.png', 'wb')

# configure the serial connection
ser = serial.Serial()
ser.port = 0
ser.timeout = 0
ser.baudrate = 9600

ser.open()

# configure the hardcopy settings
cmd = ':HARDCOPY:FORMAT PNG;PALETTE NORMAL;PORT RS232;LAYOUT PORTRAIT;\
PREVIEW 0;INKSAVER 0;COMPRESSION 0\n'
a = ser.write(cmd)
print "bytes sent: {:d}".format(a)

# start hardcopy
a = ser.write("HARDCOPY START\n")
print "bytes sent: {:d}".format(a)

# begin receiving data and writing to file
total_bytes = 0;
a = ser.inWaiting()
while a>0:
     time.sleep(0.5)
     data = ser.read(a)
     total_bytes += a
     f.write(data)
     time.sleep(0.5)
     a = ser.inWaiting()
     sys.stdout.write(".")

# close file and serial port
sys.stdout.write("\n")
f.close()
ser.close()

print "bytes read: {:d}".format(total_bytes)
print "script completed"|


Are you sure StreamDevice won't write the input to a waveform record?


On Sun, Apr 29, 2012 at 7:47 PM, Mark Rivers <[email protected]
<mailto:[email protected]>> wrote:

    I don't think you can get the image into a waveform record from the
    scope with StreamDevice.  You would have to write another driver
    that does what you were doing with Hyperterminal and Python.  You
    could perhaps use an SNL program for this.

    To display an image in BOY you use the Intensity Plot widget.  The
    waveform record is 1-D, but you tell the BOY widget the actual X and
    Y dimensions of the array.

    Mark


    ________________________________
    From: Pavel Masloff [[email protected]
    <mailto:[email protected]>]
    Sent: Sunday, April 29, 2012 9:22 AM
    To: Mark Rivers
    Cc: EPICS Tech Talk
    Subject: Re: [Scopes] BMP image record??

    Is there any working example on how to get the image into a waveform
    record using StreamDevice? I haven't used the waveform record yet,
    reading up on this in the db reference manual, not that
    comprehensible :(

    Another question is how to read a waveform (image type) in BOY?

    Pavel

    On Sat, Apr 28, 2012 at 5:53 PM, Mark Rivers
    <[email protected]
    <mailto:[email protected]><mailto:[email protected]
    <mailto:[email protected]>>> wrote:
    If you can get the image into a waveform record, using streamDevice
    for example, then you can display that waveform as in image in EDM,
    CSS BOY, ImageJ or other applications.  You need to create a few
    other records that tell the client what the actual image dimensions are.

    It may be just as easy to implement reading the actual waveforms
    into waveform records, and display those with Cartesian plot widgets
    in your display manager.

    Mark

    ________________________________
    From: [email protected]
    <mailto:[email protected]><mailto:[email protected]
    <mailto:[email protected]>>
    [[email protected]
    <mailto:[email protected]><mailto:[email protected]
    <mailto:[email protected]>>] on behalf of Pavel Masloff
    [[email protected]
    <mailto:[email protected]><mailto:[email protected]
    <mailto:[email protected]>>]
    Sent: Saturday, April 28, 2012 2:17 AM
    To: EPICS Tech Talk
    Subject: [Scopes] BMP image record??

    Hello again,


    As I mentioned earlier we are running a series of experiments with
    our high current switches. I have written simple support ("...with a
    little help from my friend" Dirk Zimoch) for the Tektronix TPS2000
    over RS232 using StreamDevice and ASYN, so now I can remotely arm
    the scopes, set its properties, save waveforms on to the CF card,
    etc. But...

    In order to not run back and forth and see if everything went OK
    (which is rather tiresome and time consuming), we need a
    confirmation from the scopes. I don't want to deal with the
    implementation of the waveform records for now, all I have got so
    far is that I save them on the flash card.
    As such a confirmation I see transferring the BMP (or PNG) image
    from the scope (sort of Print screen) on to the operator PC somehow.

    There is a special SCPI command "Hardcopy start". Which mimics the
    Print button on the scope's front panel. I have tried to transfer a
    BMP file via Hyperterminal (and Python script) and it worked out
    well (more or less).
    How could this be ported to the EPICS database from the IOC and
    client standpoint, so an operator could see the oscillogram on the
    screen and decide whether the experiment went well, so she will save
    the waveforms and move on to the next experiment?

    The image file is maximum ~ 46Kb (20Kb on average).
    Any thoughts?


    --
    Best regards,


    Pavel Maslov, MS
    Controls Engineer at Pulsed power Lab
    Efremov Institute for Electro-Physical Apparatus
    St. Petersburg, Russia

    Mobile: +7 (951) 672 22 19
    Landline: +7 (812) 461 01 01



    --
    Best regards,


    Pavel Maslov, MS
    Controls Engineer at Pulsed power Lab
    Efremov Institute for Electro-Physical Apparatus
    St. Petersburg, Russia

    Mobile: +7 (951) 672 22 19
    Landline: +7 (812) 461 01 01




--
Best regards,


Pavel Maslov, MS
Controls Engineer at Pulsed power Lab
Efremov Institute for Electro-Physical Apparatus
St. Petersburg, Russia

Mobile: +7 (951) 672 22 19
Landline: +7 (812) 461 01 01


Replies:
Re: [Scopes] BMP image record?? Pavel Masloff
References:
[Scopes] BMP image record?? Pavel Masloff
RE: [Scopes] BMP image record?? Mark Rivers
Re: [Scopes] BMP image record?? Pavel Masloff
RE: [Scopes] BMP image record?? Mark Rivers
Re: [Scopes] BMP image record?? Pavel Masloff

Navigate by Date:
Prev: Re: [Scopes] BMP image record?? Pavel Masloff
Next: RE: [Scopes] BMP image record?? Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: [Scopes] BMP image record?? Pavel Masloff
Next: Re: [Scopes] BMP image record?? Pavel Masloff
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·