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: Pavel Masloff <[email protected]>
To: Wang Xiaoqiang <[email protected]>
Cc: EPICS Tech Talk <[email protected]>
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 <[email protected]> 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: [email protected]
> [mailto:[email protected]] 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 <[email protected]>
> 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 [[email protected]]
> 	
> 	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
> <[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:rivers
> @cars.uchicago.edu<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]><mail
> to:[email protected]<mailto:[email protected]>>
> [[email protected]<mailto:[email protected]><mai
> lto:[email protected]<mailto:[email protected]>>
> ] on behalf of Pavel Masloff
> [[email protected]<mailto:[email protected]><mailto:pavel.ma
> [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
> 	
>
>
>
>
> --
> 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  2021  2022  2023  2024 
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  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 ·