コード例 #1
0
ファイル: main.cpp プロジェクト: guillep19/frob
void run_vm() {
  graph = create_graph();
  ip = (WORD*) code;
  run_thread();
  while (1) {
    read_inputs();
    update_signals();
    write_outputs();
  }
}
コード例 #2
0
ファイル: adc12bpp.c プロジェクト: AceXIE/xenomai-lab
void loop(void *arg){
	Matrix outputMatrix;

	blackbox_init();

	while (running) {
		read_inputs();
		
		outputMatrix=periodic_function(io.input_result,io.input_num);

		write_outputs(outputMatrix);

	}

	blackbox_close();
}
コード例 #3
0
void loop(void *arg)
{
	RT_HEAP sampling_heap;
	current_period=bind_shm(&sampling_heap,"tickPeriod",sizeof(long));
	
	Matrix outputMatrix=empty_matrix(1,1);
	DEBUG("Outputing a %s wave of amplitude %4.2f, freq %4.2f, duty %4.2f, dc %4.2f\n",gs->wave,gs->wave_amp,gs->wave_freq,gs->wave_duty,gs->wave_dc);

	while (running) {
		read_inputs();
		
		outputMatrix=periodic_function(io.input_result,io.input_num);

		write_outputs(outputMatrix);

	}

	unbind_shm(&sampling_heap);
}
コード例 #4
0
ファイル: DA_servo.c プロジェクト: CNCBASHER/xenomai-lab
void loop(void *arg){
	Matrix outputMatrix=empty_matrix(1,1);
	RT_TASK pwm_task;

	lpt_init();

	rt_task_spawn(&pwm_task,NULL,0,gs->task_prio,0,&pwm,NULL);

	while (running) {
		read_inputs();
		
		//outputMatrix=periodic_function(io.input_result,io.input_num);

		write_outputs(outputMatrix);
	}

	rt_task_delete(&pwm_task);

	lpt_close();
}
コード例 #5
0
ファイル: sum.c プロジェクト: AceXIE/xenomai-lab
void loop(void *arg){
	Matrix outputMatrix;

	/*
	 * Insert initialization code here.
	 * e.g. open a file.
	 */

	while (running) {
		read_inputs();
		
		outputMatrix=periodic_function(io.input_result,io.input_num);

		write_outputs(outputMatrix);

	}

	/*
	 * Insert finalization code here
	 * e.g. close a file.
	 */
}
コード例 #6
0
int main(int argc, char **argv) {
    int i;
    for (i = 1; i < argc; i++) {
        if (!strcmp(argv[i], "-rom")) {
            if (++i == argc) usage();
            if (++i == argc) usage();
            FILE *rom = fopen(argv[i], "r");
            if (!rom) {
                fprintf(stderr, "Could not open ROM file: '%s'\n", argv[i]);
                return 1;
            }
            add_rom(argv[i-1], rom);
            fclose(rom);
        } else if (!strcmp(argv[i], "-n")) {
            if (++i == argc) usage();
            steps = atoi(argv[i]);
        } else if (!strcmp(argv[i], "-in")) {
            if (++i == argc) usage();
            infile = argv[i];
        } else if (!strcmp(argv[i], "-out")) {
            if (++i == argc) usage();
            outfile = argv[i];
        } else {
            filename = argv[i];
        }
    }

    if (filename == NULL) usage();

    // Load program
    FILE *p_in;
    p_in = fopen(filename, "r");
    if (!p_in) {
        fprintf(stderr, "Error: could not open file %s for input.\n", filename);
        return 1;
    }
    t_program* program = load_dumb_netlist(p_in);
    fclose(p_in);

    // Setup input and outputs
    FILE *input = stdin, *output = stdout;
    if (infile != NULL) {
        input = fopen(infile, "r");
        if (!infile) {
            fprintf(stderr, "Error: could not open file %s for input.\n", infile);
            return 1;
        }
    }
    if (outfile != NULL) {
        output = fopen(outfile, "w");
        if (!output) {
            fprintf(stderr, "Error: could not open file %s for output.\n", outfile);
            return 1;
        }
    }

    // Run
    t_machine *machine = init_machine(program);
    machine_banner(machine, output);
    i = 0;
    while (i < steps || steps == 0) {
        read_inputs(machine, input);
        machine_step(machine);
        write_outputs(machine, output);
        i++;
    }

    // Cleanup
    if (input != stdin) fclose(input);
    if (output != stdout) fclose(output);

    // No need to free memory, the OS deletes everything anyways when the process ends.

    return 0;
}
コード例 #7
0
ファイル: main.c プロジェクト: PTDreamer/Domotica
void main()
{
   mydevices.numberOfInputs=0;
   mydevices.numberOfOutputs=0;
   clock = 0;
   ledErrorCounter=0;   
   hw_setup();
   //TODO: User Code
   //struct switches array[NUMBER_OF_SWITCHES];
  /*
   button_test();
   dimmer_test();
   */
   
   
   ///////////////SALA//////////////////////////////
 /*  eeprom_on_off_init(20,21,6);//2 int Grande a comecar da esquerda
   eeprom_on_off_init(22,23,0);//2 
   //eeprom_dimmer_init(40,41,42,7);//2
   eeprom_on_off_init(41,42,7);//2
   eeprom_on_off_init(26,27,3);//2
   
   
   
   ///Sanca parede grande
   unsigned int on_adr[8]={20,255,255,255,255,255,255,255};
   unsigned int off_adr[8]={21,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(on_adr,off_adr,3);//Sanca parede grande
   eeprom_onOff_out_init(on_adr,off_adr,5);//Sanca parede grande
   
   ///Sanca parede rosa
   unsigned int on_adrr[8]={22,255,255,255,255,255,255,255};
   unsigned int off_adrr[8]={23,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(on_adrr,off_adrr,7);//Sanca parede grande
   on_adrr[1]=26;
   off_adrr[1]=27;
   eeprom_onOff_out_init(on_adrr,off_adrr,4);//Sanca parede grande
   
    ///VARANDA
   unsigned int dimmer_dim_adr[8]={40,255,255,255,255,255,255,255}; 
   unsigned int dimmer_on_adr[8]={41,255,255,255,255,255,255,255};
   unsigned int dimmer_off_adr[8]={42,255,255,255,255,255,255,255};
   //eeprom_dimmer_out_init(dimmer_dim_adr,dimmer_on_adr,dimmer_off_adr,6);//varanda
   eeprom_onOff_out_init(dimmer_on_adr,dimmer_off_adr,6);//varanda
   
   eeprom_button_init(28,29,4,true);//estores down
   eeprom_button_init(30,31,5,true);//estores up
   unsigned int up_adr[8]={30,255,255,255,255,255,255,255};
   unsigned int down_adr[8]={28,255,255,255,255,255,255,255};
   unsigned int x_adr[8]={255,255,255,255,255,255,255,255};
   eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,8,9,0,10);
   eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,10,11,0,10);
   eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,12,13,0,10);
   eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,14,15,0,10);
   */
   /////////////////////////////////////////////////7
   
   /*
   ///////////////QUARTO GRANDE//////////////////////////////
   eeprom_on_off_init(1,2,2);//2 on_adr off_adr real_button inicia botao
   unsigned int on_adr[8]={1,255,255,255,255,255,255,255};
   unsigned int off_adr[8]={2,10,255,255,255,255,255,255};
 
   unsigned int nill_adr[8]={255,255,255,255,255,255,255,255};  
   unsigned int ventax_off_adr[8]={16,255,255,255,255,255,255,255};

   unsigned int x_adr[8]={1,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(on_adr,off_adr,4);//SANCA?
   
   //outputs 4=sanca 3=casabanho 2=casa de banho 9=ventax 1=corredor
   ///casa de banho
   eeprom_on_off_init(3,4,4);//interruptor casa de banho??  
   off_adr[0]=4;
   on_adr[0]=3;
   eeprom_timer_init(off_adr,on_adr,15,16,time_off,60);
   eeprom_onOff_out_init(on_adr,off_adr,3); //luz casa de banho
   eeprom_onOff_out_init(on_adr,off_adr,2); //luz2 casa de banho
   eeprom_onOff_out_init(on_adr,ventax_off_adr,9);//VENTAX
   ///fim casa de banho
   
   //corredor
   eeprom_on_off_init(17,18,5);//interruptor luz corredor
   unsigned int corredor_on_adr[8]={17,255,255,255,255,255,255,255};
   unsigned int corredor_off_adr[8]={18,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(corredor_on_adr,corredor_off_adr,1); //luz corredor
   //fim corredor
   
   eeprom_button_init(5,6,0,true);//2 //estores
   eeprom_button_init(7,8,1,true);//2
   
   off_adr[0]=255;
   off_adr[1]=255;
   on_adr[0]=5;
   x_adr[0]=7;
   eeprom_shutter_out_init(on_adr,x_adr,off_adr,off_adr,11,10,0,10);//up down fullup full down
   
   eeprom_on_off_init(9,10,6);
   eeprom_on_off_init(20,21,7);
   unsigned int cama_on_adr[8]={9,255,255,255,255,255,255,255};
   unsigned int cama_off_adr[8]={10,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(cama_on_adr,cama_off_adr,7);
   cama_on_adr[0]=20;
   cama_off_adr[0]=21;
   eeprom_onOff_out_init(cama_on_adr,cama_off_adr,6);
   /////////////////////////////////////////////////7
   */ 
   /////////////////////QUARTO RENATA///////////////
   //
   // INPUTS 
   // 0,1 cozinha
   // 2,3 quarto
   //
   // OUTPUTS
   // 5 quarto renata economica
   // 6 janela hologeneo
   // 7 entrada
   // 2 cozinha fluorescente
   // 3 cima balcao halogeneo
   // 4 divisoria halogeneo
   // 10 balcao baixo verde
   // 11 balcao cima verde
   // 12 balcao cima vermelho
   // 13 balcao cima azul
   // 14 balcao baixo azul
   // 15 balcao baixo vermelho
   //INPUT INIT
   eeprom_on_off_init(60,61,0);//on_adr off_adr real_btn interruptor cozinha 1
   eeprom_on_off_init(62,63,1);//on_adr off_adr real_btn interruptor cozinha 2  
// eeprom_dimmer_init(68,62,63,1);//dim_adr on_adr off_adr
   eeprom_on_off_init(64,65,2);//on_adr off_adr real_btn interruptor quarto renata 1
//   eeprom_on_off_init(66,67,3);//on_adr off_adr real_btn interruptor quarto renata 2  
   eeprom_dimmer_init(68,66,67,3);//dim_adr on_adr off_adr
  
   //OUTPUT INIT
   unsigned int on_adr[8]={60,255,255,255,255,255,255,255};
   unsigned int off_adr[8]={61,10,255,255,255,255,255,255};
   unsigned int dim_adr[8]={68,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(on_adr,off_adr,2); //luz cozinha fluorescente
   on_adr[0]=62;
   off_adr[0]=63;
   eeprom_onOff_out_init(on_adr,off_adr,3); //luz cozinha cima balcao halogeneo
   eeprom_onOff_out_init(on_adr,off_adr,4); //luz cozinha divisoria
   eeprom_onOff_out_init(on_adr,off_adr,15); //luz balcao baixo vermelho
   eeprom_onOff_out_init(on_adr,off_adr,12); //luz balcao cima vermelho
   //eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,3); //luz cozinha cima balcao halogeneo
   //eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,4); //luz cozinha divisoria
   //eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,15); //luz cozinha divisoria
   
   on_adr[0]=64;
   off_adr[0]=65;
   eeprom_onOff_out_init(on_adr,off_adr,5); //luz quarto renata economica
   on_adr[0]=66;
   off_adr[0]=67;
  // eeprom_onOff_out_init(on_adr,off_adr,7); //luz quarto renata entrada
  // eeprom_onOff_out_init(on_adr,off_adr,6); //luz quarto renata janela
   eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,7); //luz quarto renata entrada
   eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,6); //luz quarto renata janela
   
  
   readDevices();
#ifdef DEBUG  
    printf("inputs:%d outputs:%d %d %d\n\r",mydevices.numberOfInputs,mydevices.numberOfOutputs,((struct outputs)mydevices.myoutputs[0]).type,((struct outputs)mydevices.myoutputs[1]).type);
#endif
   dimmer_outputs_init();
   // printf("start %Lu %Lu %Lu\n\r",fpointer(N_LUZES,0),delays1[N_LUZES][0],delays2[N_LUZES][0]); 
   /*((struct light)mydevices.myoutputs[0].device).dim_value.value=50;
   ((struct light)mydevices.myoutputs[0].device).dim_value.needs_update=true;
   ((struct light)mydevices.myoutputs[0].device).off.value=1;
   ((struct light)mydevices.myoutputs[0].device).off.needs_update=true;
 */
 
   write_outputs();
// printf("start %Lu\n\r",fpointer(N_LUZES,0)); 
 interrupts_enable();

   while(true){
   restart_wdt();
   if(syncError || oscError)
   {  
      ++ledErrorCounter;
      if(ledErrorCounter>1000)
      {
         output_toggle(LED);
         ledErrorCounter=0;
      }
   }
#ifdef DEBUG
   if(kbhit())
   {
      setup_wdt(WDT_OFF);
      disable_interrupts (GLOBAL) ;
      goDebug();
   }
#endif
   process_outpoints();
   write_outputs();
   if(secondFlag)
   {
      secondFlag=false;
      processTimedEvents();
      if(!syncError && !oscError) output_toggle(LED);
   }
  // print_inputs(false);
  
}
}
コード例 #8
0
ファイル: floorplan.c プロジェクト: 8l/insieme
void floorplan_end (void)
{
	/* write results */
	write_outputs();
}
コード例 #9
0
ファイル: pulasan.cpp プロジェクト: RadioAndrea/Pulasan
int main(int argc, char *argv[]) {
    std::string ip_address = "";
    int parse_ret = parse_command_line_options(argc, argv, ip_address);
    if(parse_ret != 1)
        return parse_ret;

    if(ip_address.empty()) {
        ip_address = DEFAULT_IP_ADDR;
    }

    print_intro();

    modbus_t *mb;

    mb = modbus_new_tcp(DEFAULT_IP_ADDR, 502);
    if (mb == NULL) {
        fprintf(stderr, "Unable to allocate libmodbus context\n");
        return -1;
    }
    if (modbus_connect(mb) == -1) {
        fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
        modbus_free(mb);
        return -1;
    }

    setup_interupt();

    bool write_bool = true;
    int  write_num  = 0;
    unsigned int count = 0;
    uint8_t outputs[16] = {0};

    //variables for calculations
    bool button_pressed = false;

    try {
        while (true) {
            uint16_t input = 0;
            if(read_inputs(mb, &input) == -1)
                break;
            button_pressed = get_input_bit(input, 9);

            //solenoid = button xor photoeyen
            bool sol_out = button_pressed ^ get_input_bit(input, 2);

            outputs[0] = sol_out;

            if(write_outputs(mb, outputs) == -1)
                break;


            print_io(input, outputs);

            /* code for incrmenting IO
            count++;
            if(count%50==0){
                outputs[write_num] = write_bool;
                write_num++;
            }
            if(write_num==16){
                write_bool = !write_bool;
                write_num = 0;
            }*/
            usleep(1*1000); //Sleep 1ms
        }
    } catch(InterruptException& e) {
        modbus_close(mb);
        modbus_free(mb);
    }
}