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  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 
<== Date ==> <== Thread ==>

Subject: Re: [Scopes] BMP image record??
From: Pavel Masloff <pavel.masloff@gmail.com>
To: Wang Xiaoqiang <Xiaoqiang.Wang@psi.ch>
Cc: EPICS Tech Talk <tech-talk@aps.anl.gov>
Date: Mon, 30 Apr 2012 14:08:35 +0400
Thanks! And how to open the image before sending it to the waveform record?

On 4/30/12, Wang Xiaoqiang <Xiaoqiang.Wang@psi.ch> wrote:
> The code to write your data string to the waveform record,
>
> from CaChannel import CaChannel
>
> chan = CaChannel('file')
> chan.searchw()
> chan.putw(data)
>
> To load an image from the waveform record,
>
> from CaChannel import CaChannel
> import StringIO
> import Image
>
> chan = CaChannel('file')
> chan.searchw()
> data = chan.getw() # data is a list of int
> sdata = ''.join(chr(x) for x in data) # convert it to string
>
> sfile = StringIO.StringIO(sdata)
> im = Image.open(sfile)
> im.show()
>
> Best
> Xiaoqiang
> ________________________________
>
> From: tech-talk-bounces@aps.anl.gov
> [mailto:tech-talk-bounces@aps.anl.gov] On Behalf Of Pavel Masloff
> Sent: Monday, April 30, 2012 11:18 AM
> To: Mark Rivers
> Cc: EPICS Tech Talk
> Subject: Re: [Scopes] BMP image record??
>
>
> Thank you guys!
>
> Yeah I am going to try this on Wednesday since we are having holidays
> now. In the meantime I want to emulate my scope+StreamDevice by taking a
> regular image file and putting it into the waveform record, then display
> the waveform in BOY (or save the image to file).
>
> So I have got Python 2.6, PIL, pyepics, numpy.
> How can I copy the image into EPICS waveform?
>
> I have created a soft IOC with the following waveform record:
>
> record(waveform, file) {
>     field(DTYP,"Soft Channel")
>     field(SCAN, "Passive")
>     field(NELM, "600")
>     field(FTVL, "UCHAR")
> }
>
> What's next?
>
>
>
> On Mon, Apr 30, 2012 at 3:05 AM, Mark Rivers <rivers@cars.uchicago.edu>
> wrote:
>
>
> 	I didn't realize the HARDCOPY command would send the data over
> the serial port automatically, I assumed you have to transfer it with
> FTP or something.
> 	
> 	In that case you should be able to use the waveform record with
> StreamDevice as Rod suggested.  In addition to setting NELM you will
> need to set the environment variable EPICS_CA_MAX_ARRAY_BYTES to a value
> at least as large as the largest image, on both the IOC and client
> machines.
> 	
>
> 	Mark
> 	
> 	________________________________
> 	From: Pavel Masloff [pavel.masloff@gmail.com]
> 	
> 	Sent: Sunday, April 29, 2012 11:18 AM
> 	
> 	To: Mark Rivers
> 	Cc: EPICS Tech Talk
> 	Subject: Re: [Scopes] BMP image record??
> 	
> 	
> 	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
> <rivers@cars.uchicago.edu<mailto:rivers@cars.uchicago.edu>> 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
> [pavel.masloff@gmail.com<mailto:pavel.masloff@gmail.com>]
> 	
> 	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
> <rivers@cars.uchicago.edu<mailto:rivers@cars.uchicago.edu><mailto:rivers
> @cars.uchicago.edu<mailto:rivers@cars.uchicago.edu>>> 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:
> tech-talk-bounces@aps.anl.gov<mailto:tech-talk-bounces@aps.anl.gov><mail
> to:tech-talk-bounces@aps.anl.gov<mailto:tech-talk-bounces@aps.anl.gov>>
> [tech-talk-bounces@aps.anl.gov<mailto:tech-talk-bounces@aps.anl.gov><mai
> lto:tech-talk-bounces@aps.anl.gov<mailto:tech-talk-bounces@aps.anl.gov>>
> ] on behalf of Pavel Masloff
> [pavel.masloff@gmail.com<mailto:pavel.masloff@gmail.com><mailto:pavel.ma
> sloff@gmail.com<mailto:pavel.masloff@gmail.com>>]
> 	
> 	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
> 	
>
>
>
>
> --
> 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?? Matt Newville
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
RE: [Scopes] BMP image record?? Mark Rivers
Re: [Scopes] BMP image record?? Pavel Masloff
RE: [Scopes] BMP image record?? Wang Xiaoqiang

Navigate by Date:
Prev: Re: [Scopes] BMP image record?? Pavel Masloff
Next: 9th NOBUGS conference announcement - registration open Tobias.Richter
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 
Navigate by Thread:
Prev: Re: [Scopes] BMP image record?? Pavel Masloff
Next: Re: [Scopes] BMP image record?? Matt Newville
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 
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 ·