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
chan = CaChannel('file')
chan.searchw()
data = "" # 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.
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 =
""> 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
-- 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
- 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
- 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?? Pavel Masloff
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
<2012>
2013
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
<2012>
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|