NI-enheter i Python
Postat: 29 januari 2024, 16:18:10
Mitt senaste projekt är att testa om hårdvaran jag utvecklat senast faktisk fungerar.
Det har 3 st National Instruments, 2 st USB-6502 och en USB-6002.
Jag kan adressera portar, styra Analog Out osv. men jag har ett konstigt problem som kanske beror på att jag griper hela alltet fel an.
Jag har 2 st portar för att styra 16 st On/Off, 2 st portar för att styra 16 st LED, 2 st portar för att styra Hög/Låg spänning. Alla portar har 8 bit.
Jag har 4 bit av en port som styr ett adressval, 4 andra bit för att styra ett annat adressval.
Exempel på hur jag uppdaterar On/Off-bitsen:
Jag startar alltså ett task, lägger till en port, startar tasken, skriver värdet till porten, stopper tasket och raderar det.
Jag får lite felmeddelanden som jag inte fattar. De är inte identiska och skriver jag till en port på en NI-enhet och gör exakt det samma på den andra (fast med ändrat device-namn) ger det fel.
ALLA task blir avslutat i varje operation.
Om jag lägger in att den ska vänta på att en task blir klar - för en Digital Out-funktion får jag fel för det.
Men är det jag som har klantat mig?
Ska jag i verkligheten definiera alla task FÖRST (med unika namn), och SEDAN - genom alla använda funktioner - skriva till dessa öppna task?
Det har 3 st National Instruments, 2 st USB-6502 och en USB-6002.
Jag kan adressera portar, styra Analog Out osv. men jag har ett konstigt problem som kanske beror på att jag griper hela alltet fel an.
Jag har 2 st portar för att styra 16 st On/Off, 2 st portar för att styra 16 st LED, 2 st portar för att styra Hög/Låg spänning. Alla portar har 8 bit.
Jag har 4 bit av en port som styr ett adressval, 4 andra bit för att styra ett annat adressval.
Exempel på hur jag uppdaterar On/Off-bitsen:
Kod: Markera allt
task = nidaqmx.Task()
task.do_channels.add_do_chan('Dev3/port1/line0:7')
task.start()
task.write(Power_bits & 255)
task.stop()
task.close()
task = nidaqmx.Task()
task.do_channels.add_do_chan('Dev3/port2/line0:7')
task.start()
task.write((Power_bits >> 8) & 255)
task.stop()
task.close()
Jag får lite felmeddelanden som jag inte fattar. De är inte identiska och skriver jag till en port på en NI-enhet och gör exakt det samma på den andra (fast med ändrat device-namn) ger det fel.
ALLA task blir avslutat i varje operation.
Om jag lägger in att den ska vänta på att en task blir klar - för en Digital Out-funktion får jag fel för det.
Men är det jag som har klantat mig?
Ska jag i verkligheten definiera alla task FÖRST (med unika namn), och SEDAN - genom alla använda funktioner - skriva till dessa öppna task?