Files
MiPi_TEST/__pycache__/rigol_scope.cpython-312.pyc

52 lines
7.1 KiB
Plaintext
Raw Normal View History

2026-04-09 08:45:57 +01:00
<EFBFBD>
<00>V<EFBFBD>i<EFBFBD><00><00><><00>UdZddlZddlZddlZddlmZdZdZdZdZ dZ
d Z da ejdzed
<d efd <0C>Zd <0A>Zd efd<0E>Zd<0F>Zd<10>Ze fded efd<12>Zded efd<14>Zy)u<>
rigol_scope.py
Controls the Rigol DS1202Z-E at 192.168.45.5 for 1.8 V supply rail monitoring.
Called from dual_capture() in mipi_test.py during the LP pass.
The scope is armed (single trigger) just before the Agilent LP capture.
The LP→HS current step droops the 1.8 V rail, triggering the Rigol.
The waveform is then read over SCPI and written directly to the local data/ folder.
<EFBFBD>N)<01>Pathz 192.168.45.5皙<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>ư>g)\<5C><><EFBFBD>(<28>?g.@<40>rigol<6F>returnc<00><><00> tjt<00>adt_tj d<02>j <00>}td|<00><00><02>y#t$r}td|<01><00><02>daYd}~yd}~wwxYw)N<>
z*IDN?z[RIGOL] Connected: Tu9[RIGOL] Connection failed — 1.8 V monitoring disabled: F) <09>vxi11<31>
Instrument<EFBFBD>
RIGOL_HOSTr<00>timeout<75>ask<73>strip<69>print<6E> Exception)<02>idn<64>es <20>0/home/david-rice/Python/MiPi_Test/rigol_scope.py<70>connectrsp<00><00> <15><15> <20> <20><1A>,<2C><05><1A><05> <0A><13>i<EFBFBD>i<EFBFBD><07> <20>&<26>&<26>(<28><03> <0A>#<23>C<EFBFBD>5<EFBFBD>)<29>*<2A><13><> <14><15> <0A>I<>!<21><13>M<>N<><14><05><14><><15>s<00>AA<00> A;<03>!A6<03>6A;c<00>^<00>tr tj<00>dayy#t$rY<00>wxYw<01>N)r<00>closer<00><00>r<00>
disconnectr-s3<00><00> <0C> <11> <11>K<EFBFBD>K<EFBFBD>M<EFBFBD><15><05>  <0A><><19> <11> <10> <11>s <00> <00> ,<03>,c<00><00>tduSr)rrrr<00> is_connectedr7s <00><00> <10><04> <1C>rc<00><00>tjd<01>tjd<02>tjd<03>tjd<04>tjd<05>tjd<06>tjdtd<08><04><02>tjd t
d<08><04><02>tjd
t d <0B><04><02>tjd <0C>tjd <0A>tjd<0E>tjdtd<08><04><02>tjd<10>tjd<11>tdtt dz<00><00>dt<00>d<15><05>y)z<>
Configure Rigol for 1.8 V supply monitoring.
AUTO trigger sweep: if no droop occurs, scope still captures on timeout
so we always get a supply snapshot even when the rail is healthy.
z:STOPg<50><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?z:CHANnel1:DISPlay 1z:CHANnel2:DISPlay 0z:CHANnel1:COUPling DCz:CHANnel1:PROBe 1z:CHANnel1:SCALe z.3fz:CHANnel1:OFFSet z:TIMebase:MAIN:SCALe z.2Ez:TRIGger:MODE EDGEz:TRIGger:EDGe:SOURce CHANnel1z:TRIGger:EDGe:SLOPe NEGativez:TRIGger:EDGe:LEVel z:TRIGger:SWEep AUTOg333333<33>?z [RIGOL] Configured: 1.8 V rail, g<00><>.Au µs/div, trigger <z V falling (AUTO sweep)N)
r<00>write<74>time<6D>sleep<65> V18_SCALE<4C>
V18_OFFSET<EFBFBD> V18_TIMEBASE<53>V18_TRIG_LEVELr<00>intrrr<00> configurer&?s<00><00> 
<EFBFBD>K<EFBFBD>K<EFBFBD><07><18><08>J<EFBFBD>J<EFBFBD>s<EFBFBD>O<EFBFBD> <09>K<EFBFBD>K<EFBFBD>%<25>&<26> <09>K<EFBFBD>K<EFBFBD>%<25>&<26> <09>K<EFBFBD>K<EFBFBD>'<27>(<28> <09>K<EFBFBD>K<EFBFBD>#<23>$<24> <09>K<EFBFBD>K<EFBFBD>"<22>9<EFBFBD>S<EFBFBD>/<2F>2<>3<> <09>K<EFBFBD>K<EFBFBD>#<23>J<EFBFBD>s<EFBFBD>#3<>4<>5<> <09>K<EFBFBD>K<EFBFBD>'<27> <0C>S<EFBFBD>'9<>:<3A>;<3B> <09>K<EFBFBD>K<EFBFBD>$<24>%<25> <09>K<EFBFBD>K<EFBFBD>/<2F>0<> <09>K<EFBFBD>K<EFBFBD>.<2E>/<2F> <09>K<EFBFBD>K<EFBFBD>&<26>~<7E>c<EFBFBD>&:<3A>;<3B><<3C> <09>K<EFBFBD>K<EFBFBD>%<25>&<26><08>J<EFBFBD>J<EFBFBD>s<EFBFBD>O<EFBFBD> <09> ,<2C>S<EFBFBD><1C>c<EFBFBD>1A<31>-B<>,C<>D<16>$<24>%<25>%<<3C> ><3E>?rc<00>.<00>tjd<01>y)uCArm for a single acquisition. Non-blocking — returns immediately.z:SINGleN)rrrrr<00>armr(^s<00><00> <09>K<EFBFBD>K<EFBFBD> <09>r<00> timeout_sc<00>H<00>tj<00>|z}tj<00>|kre tjd<01>j<00>j <00>}|dvry tj d<04>tj<00>|kr<01>ey#t
$rY<00>9wxYw)z<>
Poll until the scope has completed its single acquisition.
DS1000Z reports STOP when done (triggered or auto-timed-out).
Returns True when ready, False if timeout exceeded.
z:TRIGger:STATus?)<02>STOP<4F>TDTrF)rrr r<00>upperrr )r)<00>deadline<6E>statuss r<00> wait_capturedr0cs<><00><00> <14>y<EFBFBD>y<EFBFBD>{<7B>Y<EFBFBD>&<26>H<EFBFBD>
<0E>)<29>)<29>+<2B><08>
<20> <11><1A>Y<EFBFBD>Y<EFBFBD>1<>2<>8<>8<>:<3A>@<40>@<40>B<>F<EFBFBD><15><1E>'<27><1B>(<28> <0A>
<EFBFBD>
<EFBFBD>3<EFBFBD><0F> <0F>)<29>)<29>+<2B><08>
<20> <11><><19> <11> <10> <11>s<00>5B<00> B!<03> B!<03>pathc<00><><00> tjd<01>tjd<02>tjd<03>tjd<04>j<00>j d<05>}t |d<00>}t |d<00>}t |d<00>}tjd <09>j<00>}|j d
<EFBFBD>rt|d <00>}|d |zd }|j d<05>D<00>cgc]}|j<00>s<01>t |<07><00><02> }}|jjd<0E><0F>t|dd<11><12>5} tj| <09>}
|
jddg<02>t|<08>D]'\} }|| |z
|zz} |
j| d<15>|d<16>g<02><00>) d d d <0A>t|<08>Scc}w#1swY<00>xYw#t $r} t#d| <0A><00><02>Yd } ~ yd } ~ wwxYw)z<>
Read Ch1 waveform from Rigol over SCPI and write to CSV.
The Rigol returns ASCII voltage values; we reconstruct the time axis
from the waveform preamble.
Returns the number of samples written, or 0 on error.
z:WAVeform:SOURce CHANnel1z:WAVeform:FORMat ASCIIz:WAVeform:MODE NORMalz:WAVeform:PREamble?<3F>,<2C><00><00>z:WAVeform:DATA?<3F>#<23><00>NT)<01>exist_ok<6F>w<>)<01>newlinezTime (s)z Voltage (V)z.9fz.6fz[RIGOL] Waveform read error: r)rrr r<00>split<69>float<61>
startswithr%<00>parent<6E>mkdir<69>open<65>csv<73>writer<65>writerow<6F> enumerate<74>lenrr)r1<00>preamble<6C>x_incr<63>x_orig<69>x_ref<65>raw<61>n_digits<74>v<>vals<6C>frE<00>i<>trs r<00>read_waveform_csvrTus<><00><00>!<11> <0A> <0B> <0B>/<2F>0<> <0A> <0B> <0B>,<2C>-<2D> <0A> <0B> <0B>+<2B>,<2C><18>9<EFBFBD>9<EFBFBD>2<>3<>9<>9<>;<3B>A<>A<>#<23>F<><08><17>x<EFBFBD><01>{<7B>#<23><06><16>x<EFBFBD><01>{<7B>#<23><06><16>x<EFBFBD><01>{<7B>#<23><05><13>i<EFBFBD>i<EFBFBD>)<29>*<2A>0<>0<>2<><03> <0F>><3E>><3E>#<23> <1E><1A>3<EFBFBD>q<EFBFBD>6<EFBFBD>{<7B>H<EFBFBD><15>a<EFBFBD>(<28>l<EFBFBD>m<EFBFBD>$<24>C<EFBFBD>"%<25>)<29>)<29>C<EFBFBD>.<2E>><3E>Q<EFBFBD>A<EFBFBD>G<EFBFBD>G<EFBFBD>I<EFBFBD><05>a<EFBFBD><08>><3E><04>><3E> <0C> <0B> <0B><19><19>4<EFBFBD><19>(<28> <11>$<24><03>R<EFBFBD> (<28> :<3A>A<EFBFBD><18>Z<EFBFBD>Z<EFBFBD><01>]<5D>F<EFBFBD> <12>O<EFBFBD>O<EFBFBD>Z<EFBFBD><1D>7<> 8<>!<21>$<24><0F> :<3A><04><01>1<EFBFBD><1A>a<EFBFBD>%<25>i<EFBFBD>6<EFBFBD>1<>1<><01><16><0F><0F>A<EFBFBD>c<EFBFBD>7<EFBFBD><01>#<23>w<EFBFBD> 8<>9<> :<3A> :<3A><13>4<EFBFBD>y<EFBFBD><18><>?<3F> :<3A> :<3A><> <15><11> <0A>-<2D>a<EFBFBD>S<EFBFBD>1<>2<><10><><11>sI<00>C8G <00>:F;<04> F;<04>,G <00> AG<03>(G <00>;G <00>G <07>G <00> G-<03>G(<03>(G-)<19>__doc__rDrr <00>pathlibrr r!r"r#r$<00>TRIG_TIMEOUT_Srr
<00>__annotations__<5F>boolrrrr&r(r?r0r%rTrrr<00><module>rZs<><00><01> <04> <0B> <0B> <0C><18><1F>
<EFBFBD><14> <09><15>
<EFBFBD><15> <0C><15><0E><15><0E>!%<25><05>u<EFBFBD><17><17>$<24><1E>%<25> <15><14> <15><15><1D>d<EFBFBD><1D>?<3F>><1B>
&4<><11>U<EFBFBD><11><04><11>$)<11>D<EFBFBD>)<11>S<EFBFBD>)r