LV GUI to Python GUI template attempt

Presentation: create a Python GUI template using LV Gui to build it

Used LabVIEW(r) cluster for window and frame

# -*- coding: utf-8 -*-
# LabVIEW(r) create python template from LV GUI
#Date: 3/27/2023 Time 11:05 AM
#

from tkinter import *



#GUI setup below
myWindowLVtoPythonGUI=Tk()
myWindowLVtoPythonGUI.title("LV_GUI to Python_GUI.vi")
myWindowLVtoPythonGUI.minsize(564,462)


# do this or frame in window will not follow window (expanding)
myWindowLVtoPythonGUI.grid_rowconfigure(1,weight=1)  #need on row define as 1 for expanding row wise bottomframe
myWindowLVtoPythonGUI.grid_columnconfigure(0,weight=1)

#frame1 
# adjust r,c,sticky, row and column config as need
frame1=Frame(myWindowLVtoPythonGUI,width=50,height=50,bg='lightblue')
frame1.grid(row=0, column=0, sticky='NWES', padx=10, pady=10, columnspan=4)
frame1.rowconfigure(0,weight=1)
frame1.columnconfigure(4,weight=1) #the lastcol goes along with rigth side expanding


#LED info
LTRY=5 #light top right Y
LTRX=15 #light top right X
dia=20
#Led Indictor
canv1=Canvas(frame1,width=50, height=30, bg='lightblue', bd=0, highlightthickness=0)
canv1.grid(row=2, column=4, columnspan=1)
LED1=canv1.create_oval(LTRX,LTRY,LTRX+dia,LTRY+dia,fill='black')

#Label
APP_NAME=Label(frame1, text=" UUT Testting - Solar Panel Surface ",width=25)
APP_NAME.grid(row=0, column=0, padx=10, pady=10, columnspan=1,sticky='')

#Label
COMPANY_NAME=Label(frame1, text=" mySolarCompany",width=25)
COMPANY_NAME.grid(row=0, column=5, padx=10, pady=10, columnspan=1,sticky='E')

#Label
USERMSG=Label(frame1, text=" Ready For Test",width=25)
USERMSG.grid(row=2, column=5, padx=10, pady=10, columnspan=1,sticky='E')

#Label
RESULT=Label(frame1, text=" Passed",width=25)
RESULT.grid(row=3, column=5, padx=10, pady=10, columnspan=1,sticky='E')

#Button
START_TEST=Button(frame1, text='START_TEST',width=15, command=lambda:frame_Button_START_TEST("START_TEST"))
START_TEST.grid(row=2, column=0,padx=10,pady=10,sticky='')

def frame_Button_START_TEST(button_text):
  print(button_text)
  return

#last Line
myWindowLVtoPythonGUI.mainloop()

Notes

Presentation: An adventure to attempt LV GUI to Python GUI template
Programming Language used: Python 3.7 in Spyder and LabVIEW®2019
Python and Tkinter are from there respective companies
LabVIEW® is a NI (was National Instruments) product.
Presentation app: Microsoft’s PowerPoint
Presentation shown to spark ideas of use.
This presentation is not connected to or endorsed by any company.
Use at your own risk.
Tags: Python, Python3.7, tkinter , GUI, LabVIEW GUI to Python GUI template example, LabVIEW®,LV2019

Posted in Test Sector | Tagged , , , , | Leave a comment

Python GUI Four UUT with Threading, progressbar, tab

Show a GUI tkinter using four UUT example with threading, includes progress bar and tabs.

Not a how to setup mux communication, focus in on GUI and threading

UUT 3 was made intentionally slow and to randomly fail to show threading in action

# -*- coding: utf-8 -*-
"""
Created on Wed Mar 22 16:11:42 2023

@author: aleja

4 UUT in threading with progressbar and tab with vertical scroll text obj
UUT 3 is made to be slow and random failure intentionally to show threading in action
"""

from tkinter import *
#for some reason from tkinter.ttk import * cause bg lightblue error
from tkinter.ttk import Progressbar,Notebook
import time
import random
import threading


Num_of_UUTs=4
Num_of_Chs=100
testinfo=""
function_still_running=0

def command1(mssg: str):
     #match mssg: #what is wrong with this oh it only in 3.10
        if mssg == "Reset":
         for uut_num in range(Num_of_UUTs):
           canv_Led_List[uut_num].itemconfig(Overall_Led_List[uut_num], fill='black')
        else:
             print("did you forget to make a case")
        
        print(mssg)
        return

def Overall_Led_Yellow(Num_of_UUTs):
    for uut_num in range(Num_of_UUTs):
       canv_Led_List[uut_num].itemconfig(Overall_Led_List[uut_num], fill='yellow')
    return
        
    
#test simulator (non process version)
def Run_UUT(uut_num):
    b1['state']="disabled"
    global function_still_running
    function_still_running=function_still_running+1
    Limits={}
    Limits={'low':3.7,"high":3.918} 
    Failed_Flag=0
    scrollv_text_list[uut_num+1].delete("1.0",END)
    
    for ch in range(Num_of_Chs):
            if (uut_num==2): #uut3
               meas_sim=random.randrange(3700,3920)/1000
               time.sleep(0.001) #slower mux to show threading in action , remember sleep is blocking type function will affect tkintr loop
            else:
               meas_sim=random.randrange(370,380)/100 
            print(uut_num+1,ch,meas_sim)
            #limit check  
            if Limits['low']<=meas_sim<=Limits['high']:
                print("pass")
                scrollv_text_list[uut_num+1].insert(INSERT,"ch: "+str(ch) +" measureV: "+ str(meas_sim) +" Passed"+ "\n")
                scrollv_text_list[uut_num+1].yview(END)
            else:
                print("fail*******")
                Failed_Flag=1
                scrollv_text_list[uut_num+1].insert(INSERT,"ch: "+str(ch) +" measureV: "+ str(meas_sim) +" ***Failed***" +"\n")
                scrollv_text_list[uut_num+1].yview(END)
            #time.sleep(0.001) # 1ms remove the command itsself is affecting the tk GUI thead speed
            pb.setvar(name=("PB_value" + str(uut_num+1)),value=ch) #surprized a bit , works becayse of PBs varialbe name even if last pb was not its matching pb
            myWindow.update()

    if Failed_Flag==0:
            canv_Led_List[uut_num].itemconfig(Overall_Led_List[uut_num], fill='lightgreen')
            scrollv_text_list[uut_num+1].insert(INSERT,"Passed UUT:"+str(uut_num+1) + "\n")
            scrollv_text_list[uut_num+1].yview(END)
            scrollv_text_list[0].insert(INSERT,"Passed UUT:"+str(uut_num+1) + "\n") #UUT overall
            scrollv_text_list[0].yview(END)
    else: 
        canv_Led_List[uut_num].itemconfig(Overall_Led_List[uut_num], fill='red')
        scrollv_text_list[uut_num+1].insert(INSERT,"***Failed*** UUT:"+str(uut_num+1) + "\n")
        scrollv_text_list[uut_num+1].yview(END)
        scrollv_text_list[0].insert(INSERT,"***Failed*** UUT:"+str(uut_num+1) + "\n") #UUT overall
        scrollv_text_list[0].yview(END)
        
    function_still_running=function_still_running-1
    if function_still_running<=0 :
      b1['state']="normal"
    return     

def Start_Testing():
    Overall_Led_Yellow(Num_of_UUTs)
    scrollv_text_list[0].delete("1.0",END) #UUT overall text clear from1 to end
    for uut_num in range(Num_of_UUTs):
     print(uut_num,Num_of_UUTs)
     threading.Thread(target=Run_UUT,args=(uut_num,)).start()   #create and start same line 
     #this is what finally work(Restart NEW Thread )(error should have said cannot start a "terminated" thread)
     # not use join anywhere it will not work with tk gui
    return

def tab_event_handler(event):
      tab_is=event.widget.select()
      tab_text=event.widget.tab(tab_is,"text")  #get the tabs label/text
      print(tab_text)
#===============================================================================        
#GUI setup below
myWindow=Tk()
myWindow.title("myWindow")
myWindow.minsize(425,500)

# do this or frame in window will not follow window (expanding)
#check your row config is you find that some frame are window bottom sticking instead of following NSEW
#i have three frame so row index 2 (its ok for that frame to auto grow following NWE , s by window)
myWindow.grid_rowconfigure(2,weight=1)  #Important This was the reason for  on frame being stuck at bottom was row 0 but 3frames
myWindow.grid_columnconfigure(0,weight=1)

frame1=Frame(myWindow,width=50,height=50,bg='lightblue')
frame1.grid(row=0, column=0, sticky='NWE', padx=10, pady=10, columnspan=4)
frame1.rowconfigure(0,weight=1)
frame1.columnconfigure(3,weight=1) #the lastcol goes along with rigth side expanding

L1=Label(frame1, text=" UUT Test - BatteryPack Sim",width=25)
L2=Label(frame1, text="YourCompanyName")
L1.grid(row=0, column=0, padx=10, pady=10, columnspan=3) #span 2 so it does not affect component button
L2.grid(row=0, column=3, padx=10, sticky='E') #Keep company label attached to east(right) side

b1=Button(frame1, text='Start Test', command=lambda:Start_Testing())
#b2=Button(frame1, text='Optical Test', command=lambda:printtext("button2"))
#b3=Button(frame1, text='RF Test', command=lambda:printtext("button3"))
b4=Button(frame1, text='Reset', command=lambda:command1("Reset"))

b1.grid(row=1, column=0,padx=(10,0))
#b2.grid(row=1, column=1)
#b3.grid(row=1, column=2)
b4.grid(row=1, column=3,padx=10,sticky='E') #keep Reset button on Right side


# frame 1 indictor,make some rownd ovals for LED indictors (use for in range next time)
canv1=Canvas(frame1,width=50, height=30, bg='lightblue', bd=0, highlightthickness=0)
canv2=Canvas(frame1,width=50, height=30, bg='lightblue', bd=0, highlightthickness=0)
canv3=Canvas(frame1,width=50, height=30, bg='lightblue', bd=0, highlightthickness=0)
canv1.grid(row=2, column=0, padx=(10,0), columnspan=1) #padding to match first button
canv2.grid(row=2, column=1, columnspan=1)
canv3.grid(row=2, column=2, columnspan=1)

#========Frame 1 indicator=========
LTRY=5 #light top right Y
LTRX=15 #light top right X
dia=20
c1=canv1.create_oval(LTRX,LTRY,LTRX+dia,LTRY+dia,fill='black')
c2=canv2.create_oval(LTRX,LTRY,LTRX+dia,LTRY+dia, fill='black')
c3=canv3.create_oval(LTRX,LTRY,LTRX+dia,LTRY+dia, fill='black')



#frame2 row1
frame2=Frame(myWindow,width=70,height=200,bg='lightblue',)
frame2.grid(row=1,column=0,sticky="NEWS" ,columnspan=1,padx=10,pady=0) #yes pady 0 because frame1,3
frame2.rowconfigure(4,weight=1) # four progressbar 4rows
frame2.columnconfigure(1,weight=1) #this was important for the progressbar to auto grow width (column 1 autogrow)

#frame3 row2
frame3=Frame(myWindow,width=380,height=100,bg='lightblue')  #pad x y not here
frame3.grid(row=2,column=0,columnspan=1,sticky="NSEW",padx=10,pady=10)
frame3.rowconfigure(0,weight=1)
frame3.columnconfigure(0,weight=1) #this was important for the progressbar to auto grow width (column 1 autogrow)



#=======================Tab Section (frame3)==============================================
#
tab_Holder=Notebook(frame3,style='Custom.TNotebook',width=300,height=100)
tab_Holder.grid(row=0,column=0,sticky='NEWS',columnspan=1,rowspan=1,padx=20,pady=20)
tab_Holder.rowconfigure(1,weight=1)
tab_Holder.columnconfigure(1,weight=1)

# more adv way use for in range and list of tabs
# leaving flat (not adv) so you can learning mode

tab1=Frame(tab_Holder)  #tab obj to notebook but not added yet
tab1.columnconfigure(0,weight=1) #lessons learn You must thell tab object that thing inside can auto grow
tab1.rowconfigure(0,weight=1)
tab2=Frame(tab_Holder)
tab2.columnconfigure(0,weight=1)
tab2.rowconfigure(0,weight=1)
tab3=Frame(tab_Holder)
tab3.rowconfigure(0,weight=1)
tab3.columnconfigure(0,weight=1)
tab3.rowconfigure(0,weight=1)
tab4=Frame(tab_Holder)
tab4.columnconfigure(0,weight=1)
tab4.rowconfigure(0,weight=1)
tab5=Frame(tab_Holder)
tab5.columnconfigure(0,weight=1)
tab5.rowconfigure(0,weight=1)
tab_list=[tab1,tab2,tab3,tab4,tab5] # for adding scroll text obj in each tab


tab_Holder.bind("<<NotebookTabChanged>>",tab_event_handler)
tab_Holder.add(tab1,text="UUT_overall")
tab_Holder.add(tab2,text="UUT1")
tab_Holder.add(tab3,text="UUT2")
tab_Holder.add(tab4,text="UUT3")
tab_Holder.add(tab5,text="UUT4")

scrollv_text_list=[]  #now your learn List and for in 
for tab in tab_list:
    txt1=Text(tab,width=30,height=10)
    txt1.grid(row=0,column=0,columnspan=2,sticky='NWES',padx=20,pady=20)
    txt1.columnconfigure(0,weight=1)
    txt1.rowconfigure(0,weight=1)     
    #attach a Scrollbar to txt1
    vscroll=Scrollbar(tab,orient=VERTICAL,command=txt1.yview)
    txt1['yscroll']=vscroll.set
    vscroll.grid(row=0,column=1,sticky='NSE',padx=20,pady=20)
    scrollv_text_list.append(txt1)

#========================================================================



#new way
UUT_L=[Label(frame2, text=("UUT"+str(i+1))) for i in range(Num_of_UUTs)]
row_num=0
for UUT_LG in UUT_L:
    UUT_LG.grid(row=row_num, column=0, padx=2, pady=10, columnspan=1)
    row_num=row_num+1
   

#need to read up on style for pb looks more involved ,fgcolor="yellow" is no go ,thats would have been to easy
pb_list=[Progressbar(frame2, maximum=Num_of_Chs-1,length=175,orient="horizontal",value=0,variable=("PB_value"+str(i+1))) for i in range(Num_of_UUTs)]
row_num=0
for pb in pb_list:
    pb.grid(row=row_num,column=1, padx=10,pady=10,sticky='WE') ##this was important for the progressbar wiget  auto grow to column
    row_num=row_num+1


# =================use indicators use for i in range for more adv way===============================
canv1=Canvas(frame2,width=50, height=30, bg='lightblue', bd=0, highlightthickness=0)
canv2=Canvas(frame2,width=50, height=30, bg='lightblue', bd=0, highlightthickness=0)
canv3=Canvas(frame2,width=50, height=30, bg='lightblue', bd=0, highlightthickness=0)
canv4=Canvas(frame2,width=50, height=30, bg='lightblue', bd=0, highlightthickness=0)

canv1.grid(row=0, column=3, columnspan=1,sticky='E') #padding to match first button
canv2.grid(row=1, column=3, columnspan=1,sticky='E')
canv3.grid(row=2, column=3, columnspan=1,sticky='E')
canv4.grid(row=3, column=3, columnspan=1,sticky='E')

canv_Led_List=[canv1,canv2,canv3,canv4]

#========indicator=========
LTRY=5 #light top right Y
LTRX=15 #light top right X
dia=20
UUT1_Overall_LED=canv1.create_oval(LTRX,LTRY,LTRX+dia,LTRY+dia, fill='black')
UUT2_Overall_LED=canv2.create_oval(LTRX,LTRY,LTRX+dia,LTRY+dia, fill='black')
UUT3_Overall_LED=canv3.create_oval(LTRX,LTRY,LTRX+dia,LTRY+dia, fill='black')
UUT4_Overall_LED=canv4.create_oval(LTRX,LTRY,LTRX+dia,LTRY+dia, fill='black')
Overall_Led_List=[UUT1_Overall_LED,UUT2_Overall_LED,UUT3_Overall_LED,UUT4_Overall_LED]
#===============================================================




#start with button enabled=normal
b1['state']="normal"
b4['state']="normal"


#start GUI
myWindow.mainloop()

Notes

  • Presentation: example GUI Four UUT in threading, simulated measurement and result
  • Programming Language used: Python 3.7 in Spyder
  • Presentation app: Microsoft’s PowerPoint
  • Presentation shown to spark ideas of use.
  • This presentation is not connected to or endorsed by any company.
  • Use at your own risk.
  • Tags: Python, Python3.7, tkinter , GUI, progressbar, tab, text , vertical scroll ,append to list, update(add to dictionary), random
Posted in Test Sector | Tagged , , , , , , , , , , | Leave a comment

Python List or Dictionary using UUT Ch simulation example

Simulated UUT, channel, Measured value and results with a mini test report

Python code example demo

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 21 12:25:12 2023

@author: aleja
"""
import random

List_of_Test_Info=[]
List_For_TestReport=[]

def Add_to_Test_Info(List_of_Test_Info,UUT_Num,Ch,Meas):
    Test_Info={}
    Test_Info['UUT']=UUT_Num
    Test_Info['Channel']=Ch
    Test_Info['MeasValue']=Meas
    List_of_Test_Info.append(Test_Info)
    #List_of_Test_Info.append({'U':UUT_Num, 'C':Ch,'M':Meas})
    return

def Add_to_TestReport(List_For_TestReport,item,result):
    TestReport_Info={}
    TestReport_Info=item
    TestReport_Info.update({'Result':result})  #add
    List_For_TestReport.append(TestReport_Info)
    return
def TestReport_Title():
    #Create a mini test report
    print("\n")
    print("-----------------------------------------")
    print("      ================")
    print("      Test Report mini")
    print("      ================")
    return           

def TestReport_UUT(UUT_Num):
    print("UUT: " + str(UUT_Num))
    print("-----")
    return

def TestReport_Column_Header():
    print("Channel   Measured       Result")
    print("=======  ==========  ==============")
    return    
    
if __name__=="__main__":
    #create some sim data 
    Num_of_UUTs=4
    Limits={}
    Limits={'low':3.2,"high":3.8}
    for c in range(10):  #channel
     for u in range(Num_of_UUTs):  #uuts
        Add_to_Test_Info(List_of_Test_Info,u,c,random.randrange(30,40)/10) 

    #simple limits to create result
    for test in List_of_Test_Info:
         if Limits['low']<=test['MeasValue']<=Limits['high']:
           print(test , "Passed");
           Add_to_TestReport(List_For_TestReport,test,"Passed")
         else:
             print(test , "***Failed***");
             Add_to_TestReport(List_For_TestReport,test,"***Failed***")
      #future reference for k,v in test.items():              
         # future reference print(k,v);


    #Create a mini test report
    TestReport_Title()

    for UUT_Num in range(Num_of_UUTs):
        TestReport_UUT(UUT_Num)
        TestReport_Column_Header()
        for TestRpt in List_For_TestReport:
           if TestRpt['UUT']==UUT_Num:
             print(TestRpt['Channel'],"         ",TestRpt['MeasValue'],"      ",TestRpt['Result'])
             
             
    

Notes

  • Presentation: example List of Dictionary with UUT,channel, sim measurement and result
  • Programming Language used: Python 3.7 in Spyder
  • Presentation app: Microsoft’s PowerPoint
  • Presentation shown to spark ideas of use.
  • This presentation is not connected to or endorsed by any company.
  • Use at your own risk.
  • Tags: Python, Python3.7, List of Dictionary, Mini Test Report, append to list, update(add to dictionary), random
Posted in Test Sector | Tagged , , , , , | Leave a comment

Python- Example One simulated DMM in Multiprocessing with Lock

showing why lock is need if you have multiple process (uuts to test) but only One DMM

Focus is on Multiprocessing and Lock (not on DMM communication setup)

code for Python3.7 used in Spyder

# -*- coding: utf-8 -*-
"""
Created on Sat Mar 18 14:32:12 2023

@author: aleja
"""

from multiprocessing import Process,Queue,Lock
import time



def DMM_Voltage(UUT_Slot,UUT_Ch,lock_dmm,qu):
        # only ONE dmm so LOCK  (before lock 1sec) (after 4sec) each but each process was call its own dmm_volt
        #which in real use is a problem ONE DMM lock force function to block other use dmm_volt
        # in this simulation you alway see correct meas BUT in real dmm imagen dmm getting different uuts reading
        lock_dmm.acquire()
        time.sleep(0.000001)  #for me the lock needed time to enforce will try to move into  test uut to see diff
        qu.put(("setting up DMM mux for UUT:"+str(UUT_Slot)+"\n"))
        time.sleep(0.1)
        meas_Volts=(UUT_Slot*10)+UUT_Ch #simple voltage
        lock_dmm.release()
        return meas_Volts

def Test_UUT(Slot,UUT_Ch_List,qu,lock_dmm):
            str1=""
            start_t = time.time()
            UUT_Ch_List=[0,1,2,3,4,5,6,7,8,9]
            for UUT_Channel in UUT_Ch_List: 
             Measure=(DMM_Voltage(Slot,UUT_Channel,lock_dmm,qu))
             str1=("UUT: "+ str(Slot)+ " Ch: " + str(UUT_Channel) + " Meas: "+ str(Measure)+"\n")
            # this will not not print in spyder console print("inside Test UUT")
             qu.put((str1))
            end_t = time.time()
            delta_t=end_t-start_t
            str1=("Slot Finished: " + str(Slot)+ " delta time:" + str(delta_t)+"\n")
            qu.put((str1))
            return (str1)
        
        
if __name__=="__main__":
        Num_of_UUTs=4
        UUT_Slot_List=[0,1,2,3]
        UUT_Channel_List=[0,1,2,3,4,5,6,7,8,9]
        #for Slot in UUT_Slot_List:
           #print(Test_UUT(Slot,UUT_Channel_List))
        qu=Queue()
        #need a better way to lanuch same process multiple times
        lock_dmm=Lock() 
        pList = [Process(target=Test_UUT, args=(UUT_Slot_List[i],UUT_Channel_List,qu,lock_dmm,)) for i in range(Num_of_UUTs)]
        for p in pList:
            p.start()
        # not this one   start_t = time.process_time() 
        start_t = time.time() 
        for p in pList:           
            p.join()
        end_t = time.time()
        print("total delta time" + str(end_t-start_t) + "\n")
        while not qu.empty():
            print(qu.get())

End Code

Notes

  • Presentation: example One DMM and Python Multiprocessing w Lock
  • Programming Language used: Python 3.7 in Spyder
  • Presentation app: Microsoft’s PowerPoint
  • Presentation shown to spark ideas of use.
  • This presentation is not connected to or endorsed by any company.
  • Use at your own risk.
  • Tags: Python, Python3.7, Multiprocess, Multiprocessing, Lock, Multiple UUT one DMM, Parallelism, Parallel, Run one function many times in parallel, one function in Multiprocessing needs Lock, Lock need some time to Lock, Multiple UUT Testing slot with same test, Queues
Posted in Test Sector | Tagged , , , , , , | Leave a comment

LV Slider with multiple slides and custom pointer

Notes

  • Presentation: Slider with extra slides and custom pointer
  • Programming Language used: LabVIEW® 2019 Base version
  • LabVIEW® is a NI (formally National Instruments) products
  • Presentation app: Microsoft’s PowerPoint
  • Custom Slider pointer Hi and Lo made with app: Microsoft’s 3D Paint using transparent canvas.
  • Presentation shown to spark ideas of use.
  • This presentation is not connected to or endorsed by any company.
  • Use at your own risk.
  • Tags: LabVIEW® , LV2019,Slider, Customize Slider, Slider Properties
Posted in Test Sector | Tagged , , , , | Leave a comment

LV Waveform Chart and History Data part2

Things to be aware of when coping a Waveform Chart to another vi.

Remember: Waveform chart is a datatype Double with extra features

Notes

Presentation: How to save a Waveform chart data for future work on vi before closing it(VI)
Remember: Waveform chart is a datatype Double with extra features
Programming Language used: LabVIEW® 2019 Base version
LabVIEW® is a NI (formally National Instruments) products
Presentation app: Microsoft’s PowerPoint
Presentation shown to spark ideas of use.
This presentation is not connected to or endorsed by any company.
Use at your own risk.
Tags: LabVIEW® , Project Template, LV2019,Waveform Chart, History Data, Waveform Graph

Posted in Test Sector | Tagged , , , , | Leave a comment

LV Waveform Chart and History Length and History Data

Notes

  • Presentation: Show some info on Waveform CHART type and history Length.
  • Programming Language used: LabVIEW® 2019 Base version
  • LabVIEW® is a NI (formally National Instruments) products
  • Presentation app: Microsoft’s PowerPoint
  • Presentation shown to spark ideas of use.
  • This presentation is not connected to or endorsed by any company.
  • Use at your own risk.
  • Tags: LabVIEW® , LV2019, Waveform Chart type, History length, Clearing Waveform Chart via History Property
Posted in Test Sector | Tagged , , , , | Leave a comment

LV Some ArrayElement Properties

Tring out some Array Element Properties with some success and some not.

Notes

  • Presentation: Example use of some ArrayElement properties with some success and some not.
  • Programming Language used: LabVIEW® 2019 Base version
  • LabVIEW® is a NI (formally National Instruments) products
  • Presentation app: Microsoft’s PowerPoint
  • Presentation shown to spark ideas of use.
  • This presentation is not connected to or endorsed by any company.
  • Use at your own risk.
  • Tags: LabVIEW® , LV2019, Events, Array Element value property, Array functions, Array of Boolean, ArrElem , Get Control Index by Name .
Posted in Test Sector | Tagged , , , , , | Leave a comment

LV Sequence Editor Creator Example

Presentation on a simple example of Sequence Editor /Creator using an NI LabVIEW project template as a starting point.

Notes

  • Presentation: Example of a Sequence Editor/Creator using NI LabVIEW project template as a starting point. Simple just to spark some possible ideas.
  • Programming Language used: LabVIEW® 2019 Base version
  • LabVIEW® is a NI (formally National Instruments) products
  • Presentation app: Microsoft’s PowerPoint
  • Blue arrows created using: Microsoft’s Paint and placed in button with NI LabVIEW advance customize… control import from clipboard same size
  • Presentation shown to spark ideas of use.
  • This presentation is not connected to or endorsed by any company.
  • Use at your own risk.
  • Use NI LabVIEW® 2019 project template Queue Message Handler as starting point in Examples (also good way to learn different patterns if beginner.)
  • Tags: LabVIEW® , Project Template, LV2019,Queue Message handler, Events, Sequence Editor, Array functions, Ring data type, List box.
Posted in Test Sector | Tagged , , , , , , , | Leave a comment

LV Custom Right Click menu for Control

Presentation on how to create a Custom right click menu for a control

Notes

  • Presentation: Example with focus on – Control’s custom Right Click Menu
  • Programming Language used: LabVIEW® 2019 Base version
  • LabVIEW® is a NI (formally National Instruments) products
  • Presentation app: Microsoft’s PowerPoint
  • Presentation shown to spark ideas of use.
  • This presentation is not connected to or endorsed by any company.
  • Use at your own risk.
  • Use NI LabVIEW® File-New… Producer/Consumer Event vi template as a starting point for Examples (also good way to learn different patterns if beginner.)
  • Tags: LabVIEW® , Project Template, LV2019, Shortcut Menu, Control’s Right click Menu, Static VI reference, VI server, VI calling another vi , Asynchronous Calling VI, Events
Posted in Test Sector | Tagged , , , , | Leave a comment