domenica 18 dicembre 2011
Lettura registro a 8 bit
#include <stdio.h>
#include <NIDAQmx.h>
#include <stdlib.h>
int main(void)
{
uInt8 Porta1[3]={0,0,0};
uInt8 OneEl[1]={0};
uInt8 c=0;
int flag=0;
uInt8 LED[8]={1,0,0,0,0,0,0,0};
uInt8 LED2[8]={0,0,0,0,0,0,0,1};
uInt8 Spento[8]={0,0,0,0,0,0,0,0};
uInt8 Dati[8]={0,0,0,0,0,0,0,0};
uInt32 a=1;
int i = 0;
TaskHandle t;
TaskHandle DDisp ;
TaskHandle t2;
TaskHandle t3;
TaskHandle LEDd;
DAQmxCreateTask("LED",&LEDd);
DAQmxCreateTask("task1",&t);
DAQmxCreateTask("DDisp",&DDisp);
DAQmxCreateTask("task2",&t2);
DAQmxCreateTask("task3",&t3);
while(flag!=10)
{
printf("Set Registro\n");
system("pause");
//creo un canale di output digitale associato al dato task t
DAQmxCreateDOChan(t, "Dev1/port1/line0:2", "Output", DAQmx_Val_ChanForAllLines);
DAQmxStartTask(t);
DAQmxCreateDIChan(DDisp, "Dev1/port2/line1", "input", DAQmx_Val_ChanForAllLines);
DAQmxStartTask(DDisp);
DAQmxCreateDIChan(t3, "Dev1/port0/line0:7", "input3", DAQmx_Val_ChanForAllLines);
DAQmxStartTask(t3);
//Inizializzazione segnale di reset(linea 1.0)
DAQmxWriteDigitalLines(t,1,0,10,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[0]=1;
DAQmxWriteDigitalLines(t,1,0,10,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[0]=0;
DAQmxWriteDigitalLines(t,1,0,10,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
//Fine inizializzazione
//Inizio data Request (linea 1.2)
//printf("Inizio Data-request (linea 1.2):\n");
//Porta1[1] sta gi‡ a 0 quindi mando il comando
//DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[2]=1;
DAQmxWriteDigitalLines(t,1,0,10,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
//printf("Fine Data-request (linea 1.2):\n");
//Fine data Request (linea 1.2)
//Verifico Disponibilit‡ dati ( cioË se linea2.1 Ë nello stato alto
//printf("Verifico Disponibilit‡ dei dati (linea 2.1):\n");
//creo un canale di input digitale associato al dato task DDisp
/*DAQmxCreateDIChan(DDisp, "Dev1/port2/line1", "input", DAQmx_Val_ChanForAllLines);
DAQmxStartTask(DDisp);*/
// se la linea 2.1 Ë nello stato alto i dati possono essere letti
i = 0;
while(c==0){
//printf("Step %d:\nlinea2.1 %d \n", i,c);
DAQmxReadDigitalLines(DDisp,1,10,DAQmx_Val_GroupByChannel,&c,a,NULL,NULL,NULL);
i++;
};
c=0;
// Fine lettura linea 2.1
// Fase di Lettura : richiedo abilitazione su linea 1.3
//printf("Fase di Lettura : richiedo abilitazione su linea 1.3\n");
DAQmxCreateDOChan(t2, "Dev1/port1/line3", "input", DAQmx_Val_ChanForAllLines);
DAQmxStartTask(t2);
OneEl[0]=0;
DAQmxWriteDigitalLines(t2,1,0,1,DAQmx_Val_GroupByChannel,OneEl,NULL,NULL);
OneEl[0]=1;
DAQmxWriteDigitalLines(t2,1,0,1,DAQmx_Val_GroupByChannel,OneEl,NULL,NULL);
//printf(" linea 1.3 abilitata\n");
OneEl[0]=1;
// abilitazione compleatata
// Inizio lettura Porta0 a 8 bit
printf("Fase di Lettura : Inizio lettura porta0 a 8 bit\n");
//operazione di lettura
DAQmxReadDigitalLines(t3,1,1,DAQmx_Val_GroupByChannel,Dati,8,NULL,NULL,NULL);
// FIne Lettura
i=0;
while(i!=8){
printf(" %d ", Dati[i]);
i++;
}
// Riporto a basso le linee 1.3 1.2
//linea 1.3
OneEl[0]=0;
DAQmxWriteDigitalLines(t2,1,0,1,DAQmx_Val_GroupByChannel,OneEl,NULL,NULL);
//linea 1.2
Porta1[0]=0;
Porta1[2]=0;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
// Inizio Accensione LEDd con i dati letti
// chiudo il task che usa in input la porta0
DAQmxStopTask(t3);
printf("Inizio Accensione LEDd con i dati letti 1 \n");
DAQmxCreateDOChan(LEDd, "Dev1/port0/line0:7", "Output2", DAQmx_Val_ChanForAllLines);
DAQmxStartTask(LEDd);
printf("inizzializzo:\n");
printf("spento\n");
//Segnale Spegnimento
DAQmxWriteDigitalLines(LEDd,1,0,1,DAQmx_Val_GroupByChannel,Dati,NULL,NULL);
//Segnale di scrittura per rendere effettivo lo spegnimento
Porta1[1]=0;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[1]=1;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[1]=0;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
/*
printf("inizzializzo:\n");
printf("spento\n");
//Segnale Spegnimento
DAQmxWriteDigitalLines(t2,1,0,1,DAQmx_Val_GroupByChannel,Spento,NULL,NULL);
//Segnale di scrittura
Porta1[1]=0;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[1]=1;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[1]=0;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
system("pause");
printf("Vettore 1\n");
//Accendo 1 si 1 no
DAQmxWriteDigitalLines(t2,1,0,1,DAQmx_Val_GroupByChannel,LED,NULL,NULL);
//abilito scrittura
Porta1[1]=0;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[1]=1;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[1]=0;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
system("pause ");
printf("Vettore 8\n");
//Accendo 1 si 1 no
DAQmxWriteDigitalLines(t2,1,0,1,DAQmx_Val_GroupByChannel,LED2,NULL,NULL);
Porta1[1]=0;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[1]=1;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[1]=0;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
system("pause");
printf("spento\n");
//Segnale Spegnimento
DAQmxWriteDigitalLines(t2,1,0,1,DAQmx_Val_GroupByChannel,Spento,NULL,NULL);
//Segnale di scrittura
Porta1[1]=0;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[1]=1;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
Porta1[1]=0;
DAQmxWriteDigitalLines(t,1,0,1,DAQmx_Val_GroupByChannel,Porta1,NULL,NULL);
*/
DAQmxStopTask(t);
DAQmxStopTask(t2);
DAQmxStopTask(LEDd);
DAQmxStopTask(DDisp);
system("pause");
flag++;
}
}
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento