[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Newbie question

Kroeger, Simon (ext)

1/6/2006 9:30:00 AM

Welcome mac,

your code below should be more or less equal to:
(no chance of testing obviously)

def ae_6 session
pdu, pduLen = session.read(5).unpack('cN')
buffer = session.read(pduLen)

calledAETitle, callingAETitle, itemType, itemLength =
buffer.unpack('x4A16A16x35Cxn')

start = 72+itemLength
contextName=buffer.slice(72...start)

while start < pduLen
start = getNextPresentationContext(start, pdu[start..-1]) + 1
print "Finish = ",start-1," outside proc\n"
end
end

def getNextPresentationContext(start, pdu)
it, itemLength, presContextId, itemType, itemLength =
pdu.unpack('CxnCx3Cxn')

start = 12 + itemLength
abstractSyntax=pdu[12...start]
itemType=pdu[start]

while itemType == 64
itemLength=pdu[start+2..start+1].unpack('n')[0]
transferSyntax=pdu[start+2...start+2+itemLength]

puts "id=#{presContextId}, AbstractSyntax =#{abstractSyntax},
TxSyntax=#{transferSyntax}"
start=start+2+itemLength+1
itemType=pdu[start]
end
return start-1
end


Hope you get the idea.

cheers

Simon

> -----Original Message-----
> From: mac [mailto:mtscolony@gmail.com]
> Sent: Friday, January 06, 2006 5:34 AM
> To: ruby-talk ML
> Subject: Newbie question
>
> Hello all and happy new year. I hope this is the right
> mailing list for
> this question. If not please redirect me and accept my
> apologies. Thanks in
> advance.
> I just started learning Ruby. I have good experience in Java
> and Perl and
> have read most of the doc on Ruby that I can get my hands on.
> I started on a
> project to build the DICOM netwrok library as a way to learn
> Ruby. I have
> done quite bit of coding on this project and have a working
> code. Well when
> I say quite a bit, it is about 5% done!! What I am looking
> for is RubyIdioms
> and if there are better ways of doing things as opposed to what I have
> already done. Basically DICOM messages are binary and we need
> to read the
> data and manipulate byes. We will have to construct integers
> or floats from
> bytes or pair of bytes and the next few bytes could be a
> string etc. I have
> pasted some part of the code and want your opinion on this.
> Also, once this
> project has reached a point where it could be used, I will
> release it to the
> community.
>
> What I am looking for is recomendation to improve the speed
> of the code in
> processing the bytes. is 'slice' the best way to do what I am
> doing. I am
> going to re-arrange the code, so dont worry about the neatness at this
> point.
>
> Thans and here is the code.
>
> session comes from
>
> server = TCPServer.new('localhost', port)
> p "waiting on connection"
> while (session = server.accept) ........
>
> def ae_6 session
> #AE_6
> p "Inside ae_6"
> #stop ARTIM and issue and a-associate indiction primitive.
> # all we have to do here is suck in the whole PDU, that
> amounts to sending
> the indication primitive.
> pdu=session.getc # reserved, neglect this byte
> pduLen=session.read(4).unpack('N')[0] # unsigned integer 4 bytes long
> print "PDU Length =", pduLen,"\n"
> pdu=session.read(pduLen) # this is the full PDU
> #version=pdu.slice(0..1).unpack('n')[0]
> #p version
> calledAETitle = pdu.slice(4..19) # string of 16 chars
> callingAETitle = pdu.slice(20..35) # string of 16 chars
> p calledAETitle
> p callingAETitle
> #pdu.each_byte {|c| print c,"|" }
> #reserved=pdu.slice(36..67) # ignore this
> #next item type should be 10H which is "Application Context" which is
> always set to "1.2.840.10008.3.1.1.1"
> itemType=pdu.slice(68..68).unpack('C')[0]
> #printf( "ItemType=%XH\n", itemType)
> #ignore the next byte, byte # 69
> itemLength=pdu.slice(70..71).unpack('n')[0]
> contextName=pdu.slice(72..72+itemLength-1)
> p contextName
> # Next we read presentation context items
>
> start = 72+itemLength
> finish = 0
> while finish < pduLen
> finish = getNextPresentationContext(start, pdu)
> print "Finish = ",finish," outside proc\n"
> start=finish+1
> end
> end
>
> def getNextPresentationContext(start, pdu)
> finish = start
> itemType=pdu.slice(start..finish).unpack('C')[0] #should be20H
> start = finish+2 # added 2 here since we need to skip on
> byte which is
> reserved
> finish = start + 1 # total of two bytes
> itemLength=pdu.slice(start..finish).unpack('n')[0]
> #printf( "FIRST ItemType=%XH, itemLength=%d\n", itemType,itemLength)
> start = finish+1
> finish = start
> presContextId=pdu.slice(start..finish).unpack('C')[0]
> # next 3 bytes needs to be ignored, they are reserved hence +4 below
> start = finish +4
> finish = start
> itemType=pdu.slice(start..finish).unpack('C')[0]
> start = finish+2 # added 2 here since we need to skip on
> byte which is
> reserved
> finish = start + 1 # total of two bytes
> itemLength=pdu.slice(start..finish).unpack('n')[0]
> #printf( "SECOND ItemType=%XH, itemLength=%d\n",
> itemType,itemLength)
> start = finish+1
> finish = start + itemLength-1 # total of two bytes
> abstractSyntax=pdu.slice(start..finish)
>
> start = finish +1
> finish = start
> itemType=pdu.slice(start..finish).unpack('C')[0]
> while itemType == 64
> start = finish+2 # added 2 here since we need to skip one
> byte which is
> reserved
> finish = start + 1 # total of two bytes
> itemLength=pdu.slice(start..finish).unpack('n')[0]
> #printf( "LATER ItemType=%XH, itemLength=%d\n",
> itemType,itemLength)
> start = finish+1
> finish = start + itemLength-1 # total of two bytes
> transferSyntax=pdu.slice(start..finish)
> printf("id=%d, AbstractSyntax =%s, TxSyntax=%s\n",
> presContextId,abstractSyntax,transferSyntax)
> start=finish+1
> finish = start
> itemType=pdu.slice(start..finish).unpack('C')[0]
> end
> return finish-1
>


1 Answer

mark

9/2/2010 4:09:00 PM

0

On Sep 2, 6:49 am, Thornhill <seth.l...@gmail.com> wrote:

>
> There aren't many Szell era musicians left (only three still in the
> Orchestra). It's been 40 years since the last concert.

True. Maybe when those three are dead the recordings will flow like
honey. I doubt it. A convergence of factors - not least of which is
the CD losing sales to downloads - mitigate against it. The most
likely future for such recordings (if there is a future) is as
downloads.
>
> So what's the deal with the "Live in Tokyo" album which gets reissued
> in Japan every few years and was even released once by Sony France?
>
Dunno.