void lpt_windows::dds_word(unsigned int w){   /* transmite un word en serie  al dds */


  unsigned char i,x;

  for(i=0; i<=15; i++){

        x=1;  /* asume bit = 0 */

	if(w&0x8000) x=3;

	escritura(x); /* salida con fsync = 0 */

        /* pulso de reloj */

	x=x&2;

	escritura(x);

	x=x|1;

	escritura(x);

	w=w<<1;  /* desplazar a la izquierda un bit */

  }

  escritura(7);
}
示例#2
0
void ad_resetear_contador(ad_t ad){

    assert(ad != NULL);
    direccion(0x0b);
    escritura(ad->conf | 0x80);
    ad->conf = ad->conf&0x7F;
    escritura(ad->conf);

}
示例#3
0
void ad_set_modo_ad(ad_t ad){

    assert(ad!= NULL);

    ad->conf = ad->conf | 0x01;
    direccion(0x0b);
    escritura(ad->conf);

}
示例#4
0
void ad_set_modo_pc(ad_t ad){

    assert(ad!= NULL);

    ad->conf = ad->conf & 0xFE;
    direccion(0x0b);
    escritura(ad->conf);

}
void run(std::string miDireccion, std::string direccionRemota)
{
	Buffer buffer;
	Envio escritura(direccionRemota, &buffer);
	Recepcion lectura(miDireccion, &buffer);

	std::thread tWrite(escritura);
	std::thread tRead(lectura);

	tWrite.join();
	tRead.join();
}
void lpt_windows::setganancia(unsigned int ga, unsigned int gb)
{
 /* clk = d0,  rst/ = d1,  dq = d2*/

 unsigned int i, x, w;

  ga = ga & 0xff;
  gb = gb & 0xff;
  w = (gb * 256) | ga;


       x = 2; /* RST =1 (habilitar DS1267)*/
       escritura(x);

    /* transmite bit de stack =0*/
        x = 3;
        escritura(x);
        x = 2;
        escritura(x);
    /* transmitir los 16 bits de ganacia*/

   for(i=0; i<=15; i++)
     {
          x= 2;  /* asume bit = 0 */

	if(w&0x8000) x=6;

	escritura(x); /* salida con fsync = 0 */

        /* pulso de reloj */

	x=x|1;

	escritura(x);

	x=x&06;

	escritura(x);

	w=w<<1;  /* desplazar a la izquierda un bit */

     }

  escritura(2);
  escritura(0);
}
int32_t hiloEjecucionCPU(t_HiloCPU* paramsCPU)
{
	log_info(MemoriaLog,"Esperando pedidos de Cpu \n");

	int32_t codigoOperacion;
	codigoOperacion = recibirCodigoOperacion(paramsCPU->cpuSocket);
	if(codigoOperacion==-1)	{
		log_error(MemoriaLog, RED"No se recibió correctamente el código de operación\n"RESET);
		return EXIT_FAILURE;
	}
	while(codigoOperacion!=0) 	{

		switch(codigoOperacion)	{
		case codigo_iniciar:
			iniciar(paramsCPU->cpuSocket, paramsCPU->swapSocket);
			break;
		case codigo_finalizar:
			finalizar(paramsCPU->cpuSocket, paramsCPU->swapSocket);
			break;
		case codigo_leer:
			lectura(paramsCPU->cpuSocket, paramsCPU->swapSocket);
			break;
		case codigo_escribir:
			escritura(paramsCPU->cpuSocket, paramsCPU->swapSocket);
			break;
		}

		codigoOperacion = recibirCodigoOperacion(paramsCPU->cpuSocket);
		if(codigoOperacion==-1) {
			log_error(MemoriaLog, RED"No se recibió correctamente el código de operación\n"RESET);
			return EXIT_FAILURE;
		}
	}

	if(codigoOperacion==0){
		log_info(MemoriaLog, "Se desconectó un CPU\n");
		bool PorCerrado(sock_t* socket){
			return socket->fd==0;
		}
		int32_t veces = list_count_satisfying(CPUsConectados,(void*)PorCerrado);
		int32_t it;
		for(it=0; it<veces; it++){
			list_remove_and_destroy_by_condition(CPUsConectados, (void*)PorCerrado, (void*)clean_socket);
		}
	}
示例#8
0
文件: main.c 项目: gonzalo95/Final
int main()
{
    ArrayList* lista = al_newArrayList();
    ArrayList* repetidos = al_newArrayList();
    ArrayList* depurados = al_newArrayList();
    int opcion;
    char string[20];

    do
    {
        printf("MENU:\n");
        printf("1.-Parsear\n");
        printf("2.-Completar\n");
        printf("3.-Listar\n");
        printf("4.-Guardar\n");
        printf("5.-Salir\n");

        scanf("%d", &opcion);

        system("cls");

        switch(opcion)
        {
            case 1:
                lectura(lista);
                imprimirTodos(lista);
                break;

            case 2:
                completarLetra(lista);
                imprimirTodos(lista);
                break;
            case 3:
                printf("Ingrese una palabra: ");
                fflush(stdin);
                fgets(string, 20, stdin);

                filtrarRepetidos(lista, repetidos, string);
                repetidos->sort(repetidos, comparar, 1);
                imprimirTodos(repetidos);

                getchar();

                filtrarDepurados(lista, depurados, string);
                depurados->sort(depurados, comparar, 0);
                imprimirTodos(depurados);
                break;
            case 4:
                escritura(lista, "completo.csv");
                escritura(repetidos, "repetidos.csv");
                escritura(depurados, "depurados.csv");
                break;
            case 5:
                printf("Programa finalizado\n");
                break;
            default:
                printf("Opcion invalida\n");
                break;
        }
    }
    while(opcion != 5);


    return 0;
}
示例#9
0
文件: utils.c 项目: ezefran/unlam
void *threadEscritura(void *arg)
{
    struct rusage *usage = (struct rusage *)arg;
    escritura(usage);
    pthread_exit(0);
}
示例#10
0
ad_t ad_config (unsigned int mps, unsigned int kpc, unsigned int adqm){

    bool result = false;  
    unsigned char N = 0;
    ad_t ad = NULL;

    ad = ad_create();
    assert(ad!=NULL);

    /* Modo PC para configurarlo */
    ad_set_modo_pc(ad);
    
    /* Configuracion de la cantidad de muestras por segundo. */

    if(mps < 10000000 && mps > 39215){
        N = 10000000/mps;

        result = direccion(0x0c);
        if(!result)
            result = escritura(255-N);
        if(!result)
            result = direccion(0x0d);
        if(!result)
            result = escritura(0x00);
    }else {
        printf("Error en la cantidad de muestras por segundo\n");        
        return NULL;
    }
        
    assert(kpc==1 || kpc==2 || kpc==4 || kpc==8 || kpc==16 || kpc==32 || kpc==64);
        
    /* modo continuo -> b1 = 1. Modo modulado -> b1 = 0 */
    if(adqm == AD_MODO_CONTINUO){
        ad->conf = ad->conf | 0x02;
        ad->modo = AD_MODO_CONTINUO;
    }        
        
    /* Kpc = tamano del buffer de adquisicion en Kb: */    
    if(kpc==64){
            ad->conf = ad->conf|0x70;
    }else if(kpc==32){
            ad->conf = ad->conf|0x60;
    }else if(kpc==16){
            ad->conf = ad->conf|0x50;
    }else if(kpc==8){
            ad->conf = ad->conf|0x40;
    }else if(kpc==4){
            ad->conf = ad->conf|0x30;
    }else if(kpc==2){
            ad->conf = ad->conf|0x20;
    }else if(kpc==1){
            ad->conf = ad->conf|0x10;
    }else if(kpc != 0){
        result = 1;
    }
    
    ad->canala = calloc(kpc*1024, sizeof(int));
    ad->canalb = calloc(kpc*1024, sizeof(int));    
    ad->kpc = kpc;

    if(!result)
        result = direccion(0x0b);   
    if(!result){
        result = escritura(ad->conf);
    } 

    ad_resetear_contador(ad);
    ad_set_modo_ad(ad);
    
    return ad;
}