#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
int v1,v2,v3,v4,v5,v6,v7,v8,v9,v10;
char*prod[]={"Dulces","Palomitas","Cigarros","Galletas","Churritos","Refrescos","Agua","Chicles","Halls","Chocolates"};
main (int argc, char* argv[])
{
int x;
printf("1. Facturación, 2.Histograma\n");
scanf("%d", &x);
if (x==1)
{
printf("Entramos en Facturación\n");
printf("Dulces: \n");
scanf("%d",&v1);
printf("Palomitas: \n");
scanf("%d",&v2);
printf("Cigarros: \n");
scanf("%d",&v3);
printf("Galletas: \n");
scanf("%d",&v4);
printf("Churritos: \n");
scanf("%d",&v5);
printf("Refrescos: \n");
scanf("%d",&v6);
printf("Agua: \n");
scanf("%d",&v7);
printf("Chicles: \n");
scanf("%d",&v8);
printf("Halls: \n");
scanf("%d",&v9);
printf("Chocolates: \n");
scanf("%d",&v10);
int n[SIZE]={v1,v2,v3,v4,v5,v6,v7,v8,v9,v10};
int i,j;
printf("%s%13s%23s%27s\n","CLAVE","PRODUCTO","CANTIDAD","PRECIO", "IMPORTE");
for (i=0;i<=SIZE-1;i++)
{
printf("%7d%13s%17d ",i,prod[i],n[i]);
// printf("precio\n");
for(j=1;j<=n[i];j++){
switch(i){
case 0 :printf("10 \n");
break;
case 1: printf("20\n");
break;
case 2: printf("20\n");
break;
case 3: printf("30\n");
break;
case 4: printf("40\n");
break;
case 5: printf("50\n");
break;
case 6: printf("60\n");
break;
case 7: printf("70\n");
break;
case 8: printf("80\n");
break;
case 9: printf("90\n");
break;
printf("\n");
}
}
//return 0;
}
}
else
{
printf("Entramos a histograma\n");
printf("Dulces: \n");
scanf("%d",&v1);
printf("Palomitas: \n");
scanf("%d",&v2);
printf("Cigarros: \n");
scanf("%d",&v3);
printf("Galletas: \n");
scanf("%d",&v4);
printf("Churritos: \n");
scanf("%d",&v5);
printf("Refrescos: \n");
scanf("%d",&v6);
printf("Agua: \n");
scanf("%d",&v7);
printf("Chicles: \n");
scanf("%d",&v8);
printf("Halls: \n");
scanf("%d",&v9);
printf("Chocolates: \n");
scanf("%d",&v10);
int n[SIZE]={v1,v2,v3,v4,v5,v6,v7,v8,v9,v10};
int i,j;
printf("%s%13s%13s%17s\n","CLAVE","PRODUCTO","CANTIDAD","HISTOGRAMA");
for (i=0;i<=SIZE-1;i++)
{
printf("%7d%13s%7d ",i,prod[i],n[i]);
for(j=1;j<=n[i];j++){
printf("%c",'$');
printf("\n");
}
//return 0;
}
}
system("pause");
}
Mostrando entradas con la etiqueta C. Mostrar todas las entradas
Mostrando entradas con la etiqueta C. Mostrar todas las entradas
viernes, 21 de abril de 2017
Programa para medir el resistencia a 4 puntas de un multimetro digital contra la temperatura
/* Programa para medir el resistencia a 4 puntas de un multimetro digital
contra la temperatura Luis M. Le¢n, 23 de marzo 1998 */
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#include <graphics.h> /*Para el manejo de los graficos*/
#include <dos.h> /* Para manejar el tiempo con la funci¢n delay() */
#include "c_hpib.h"
int controlador = DETECT; /*Detecta la tarjeta grafica presente*/
int modo; /*No se especifica el modo, para que sea detectado*/
int erro; /*Para el manejor de errores*/
long dc; /* tarjeta */
long dvm1; /* multimetro 7 resistencia*/
long dvm2; /* multimetro 8 voltaje */
FILE *f1;
char arch[]="voltaje.dat"; /*Nombre del archivo donde se guardan datos*/
char arch1[]="resisten.dat"; /*Nombre del archivo donde se guardan datos*/
/* declaracion de rutina de manejo de errores */
void M_errores(int error, char* rutina);
/*declaracion de rutina para dibujar*/
void dibuja(void);
/*Inicializacion del modo grafico*/
void Initialize(void);
int GraphDriver; /* Manejador del aparato gr fico */
int GraphMode; /* Valores del modo gr fico */
double AspectRatio; /* Razon de aspectos de un pixel en la pantalla */
int MaxX,MaxY; /* Maxima resoluci¢n de la pantalla */
int MaxColors; /* Maximo # de colores posibles */
int ErrorCode; /* Reporta algun error en la gr fica */
struct palettetype palette; /* Usado para leer el informe de la paleta */
void Initialize(void);
/*Graficacion de los puntos*/
void puntos(void);
float lapso, lapso2, res_max, res_min ;
float temp_max, temp_min ;
float tiem_max;
int st;
float deltay, deltax ;
float deltay_pixel, deltax_pixel ;
float *lec1;
float *lec2;
/*float *lec3;*/
float datox[1000], datoy[1000] ;
FILE *tabla ;
double temp ;
char file_name [80] ;
char texto1[50];
char texto2[50];
char texto3[10];
main ()
{
char *codigo;
char codigo1[80];
char texto[50];
int cdatos=1000000; /*El n£mero maximo de datos a adquirir*/
int error ;
int i,ciclo ;
char funcion ;
char nombre_archivo[80], nombre_archivo1[80] ;
/*Presentaci¢n*/
system("cls");
printf("\n **********");
printf("\n ***** LABORATORIO DE FISICA MODERNA *****");
printf("\n ***** FACULTAD DE CIENCIAS, UNAM. *****");
printf("\n ***** 23 DE MARZO DE 1998. *****");
printf("\n **********");
printf("\n");
printf("\n\t\t**********");
printf("\n¨Que deseas medir?:");
printf("\n Oprimir la tecla (v) para voltaje, (r) para resitencia a 4 puntas\n");
printf("\n en funci¢n de la temperatura ¢ (t) para voltaje en funci¢n del tiempo\n");
while ((funcion = getch()) != 'v' && funcion != 'r' && funcion != 'V' && funcion != 'R' && funcion != 't' && funcion != 'T');
{
printf("\n¨Que deseas medir?:");
printf("\n Oprimir la tecla (v) para voltaje, (r) para resitencia a 4 puntas\n");
printf("\n en funci¢n de la temperatura ¢ (t) para voltaje en funci¢n del tiempo\n");
}
printf("\n\t\t**********");
printf("\n Direcci¢n de los voltmetros: voltaje o resistencia (7) , temperatura (8) y para voltaje v.s. tiempo (8)");
printf("\n\t\t**********");
printf("\n Oprima cualquier tecla para terminar la adquisici¢n de datos.");
printf("\n\t\t**********");
printf("\n Los valores de los datos adquiridos se muestran en la pantalla");
printf("\n\t\t**********");
printf("\n ¨Cada cuanto tiempo (segundos) quiere tomar datos (>=1)?: ");
scanf("%f",&lapso);
printf("\n\t\t**********");
printf("\n¨Cu nto tiempo (segundos) quiere que dure el experimento?: ");
scanf("%f",&tiem_max);
printf("\n\t\t**********");
/* Para graficar en el eje X */
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
printf("\nValor m¡nimo y m ximo de la Temperatura (K) en la gr fica?\n" );
printf("\nmin,max: " );
scanf("%f,%f", &temp_min, &temp_max);
}
if(funcion == 't' || funcion == 'T'){
temp_min = 0 ;
temp_max = tiem_max ;
}
printf("\n\t\t**********");
/* Para graficar en el eje Y */
if(funcion == 'v' || funcion == 'V' || funcion == 't' || funcion == 'T'){
printf("\nValor m¡nimo y m ximo del Voltaje (Volts) en la gr fica?\n" );
printf("\nmin,max: " );
scanf("%f,%f", &res_min, &res_max);
}
printf("\n\t\t**********");
if(funcion == 'r' || funcion == 'R'){
printf("\nValor m¡nimo y m ximo de la Resistencia (Ohm) en la gr fica?\n" );
printf("\nmin,max: " );
scanf("%f,%f", &res_min, &res_max);
}
printf("\n\t\t**********");
if((codigo=(char *)malloc(sizeof(char)*100))==NULL){
exit(1);
}
/*** En todos programas hay que alojar exactamnete en la memoria un valor
del puntero */
printf("\nDame el nombre del archivo a donde vas a guardar tus datos con extensi¢n (.dat):");
scanf("%s", &nombre_archivo1);
strcpy(nombre_archivo,"");
strcat(nombre_archivo, nombre_archivo1);
if((f1=fopen(nombre_archivo,"w"))==NULL){
printf("Error no se puede abrir el archivo %s. \n",arch);
exit(0);
}
Initialize();
if((lec1=(float *)malloc(sizeof(float)*cdatos))==NULL){
printf("No hay memoria para alojar datos.\n");
exit(1);
}
if((lec2=(float *)malloc(sizeof(float)*cdatos))==NULL){
printf("No hay memoria para alojar datos.\n");
exit(1);
}
/* if((lec3=(float *)malloc(sizeof(float)*cdatos))==NULL){
printf("No hay memoria para alojar datos.\n");
exit(1);
} */
/*******/
dc=7L; /* tarjeta */
dvm2=708L; /* Voltmetro digital HP 34401A, voltaje. */
dvm1=707L; /* Voltmetro digital HP 34401A, resistencia. */
error=IORESET(dc);
M_errores(error,"IORESET");
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
error=IOCLEAR(dvm1);
M_errores(error,"IOCLEAR dvm1");
if(funcion == 'v' || funcion == 'V'){
strcpy(codigo1,"CONF:VOLT:DC");
}
if(funcion == 'r' || funcion == 'R'){
strcpy(codigo1,"CONF:FRES");
}
IOOUTPUTS(dvm1,codigo1,strlen(codigo1)); /* configura el instrumento
para medir voltaje o resistencia
directos */
}
error=IOCLEAR(dvm2);
M_errores(error,"IOCLEAR dvm2");
strcpy(codigo1,"CONF:VOLT:DC");
IOOUTPUTS(dvm2,codigo1,strlen(codigo1)); /*configura el instrumento
para medir voltaje
directos*/
dibuja();
st=0;
setcolor(WHITE);
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
outtextxy(101,4,"Temperatura (K)");
outtextxy(((getmaxx()-50)/2)-9,getmaxy()-10,"Temperatura (K)");
}
if(funcion == 't' || funcion == 'T'){
outtextxy(101,4,"Tiempo (seg)");
outtextxy(((getmaxx()-50)/2)-9,getmaxy()-10,"Tiempo (seg)");
}
if(funcion == 'v' || funcion == 'V' || funcion == 't' || funcion == 'T'){
outtextxy(245,4,"Voltaje (Volts)");
}
if(funcion == 'r' || funcion == 'R'){
outtextxy(245,4,"Resistencia (Ohm)");
}
/* Despliega la escala en el eje X */
deltax = (temp_max-temp_min)/5 ;
deltax_pixel = (getmaxx()-120)/5 ;
for(ciclo=0;ciclo<=5;ciclo++){
sprintf(texto1,"%3.0f",temp_min+(ciclo*deltax));
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setusercharsize(2,1,3,1);
outtextxy((ciclo*deltax_pixel)+81+(2*ciclo),getmaxy()-26,texto1);
}
/* Despliega la escala en el eje Y */
deltay = (res_max-res_min)/5 ;
deltay_pixel = (getmaxy()-45)/5 ;
for(ciclo=0;ciclo<=5;ciclo++){
sprintf(texto1,"%3.6f",res_min+(ciclo*deltay));
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setusercharsize(2,1,3,1);
outtextxy(25,(5-ciclo)*deltay_pixel+12,texto1);
}
/* outtextxy(getmaxx()/2,getmaxy()/2,"Resistencia (Ohm)"); */
/* settextstyle(DAFAULT_FONT,VERT_DIR,1); */
lapso2 = 0 ;
while(st<=cdatos && !kbhit()){
st++ ;
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
if(funcion == 'v' || funcion == 'V'){
strcpy(codigo1,"MEAS:VOLT:DC?");
}
if(funcion == 'r' || funcion == 'R'){
strcpy(codigo1,"MEAS:FRES?");
}
IOOUTPUTS(dvm1,codigo1,strlen(codigo1)); /* Prepara Voltaje o Resistencia a 4 puntas */
}
delay(100);
strcpy(codigo1,"MEAS:VOLT:DC?");
IOOUTPUTS(dvm2,codigo1,strlen(codigo1)); /* Prepara voltajes dc */
delay(100);
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
IOENTER(dvm1,(lec1+st));
}
delay(100);
IOENTER(dvm2,(lec2+st));
/* datoy[st] = 1.000*random(7) ;
datox[st] = -0.001*random(7) ; */
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
datoy[st] = *(lec1+st) ;
}
datox[st] = *(lec2+st) ;
temp=273.85255+27346.124*datox[st]-1.1999e6*datox[st]*datox[st]-2.3948444e8*datox[st]*datox[st]*datox[st]+2.1120772e10*datox[st]*datox[st]*datox[st]*datox[st]+1.3639246e13*datox[st]*datox[st]*datox[st]*datox[st]*datox[st];
/* Con este polinomio grado 5 se calcula el valor de la temperatura directamente de
del archivo tabla.mag obtenidas del programa Origin, con un coeficiente de correlacion de
0.9997 y una desviaci¢n estandar de 2.40267 */
/* Guarda los datos en el archivo nombre.dat */
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
fprintf(f1,"%.2f %.8f\n", temp, datoy[st]);
}
if(funcion == 't' || funcion == 'T'){
fprintf(f1,"%f %.8f\n", lapso2, datox[st]);
}
/*******/
/* Despliega los datos experimentales */
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
sprintf(texto1,"%2.2f",temp);
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setcolor(GREEN);
setusercharsize(2,1,3,1);
outtextxy(103,20,texto1);
sprintf(texto2,"%2.8f",datoy[st]);
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setcolor(RED);
setusercharsize(2,1,3,1);
outtextxy(245,20,texto2);
/* Las siguientes 3 instrucciones dibujan los puntos en la gr fica */
/* putpixel(((getmaxx()-120)/(temp_max-temp_min))*(datox[st]-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,WHITE);*/
putpixel(((getmaxx()-120)/(temp_max-temp_min))*(temp-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,WHITE);
setcolor(WHITE);
/* circle(((getmaxx()-120)/(temp_max-temp_min))*(datox[st]-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,3); */
/* circle(((getmaxx()-120)/(temp_max-temp_min))*(temp-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,3); */
circle(((getmaxx()-120)/(temp_max-temp_min))*(temp-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,3);
}
/**************/
if(funcion == 't' || funcion == 'T'){
datoy[st]=datox[st] ;
datox[st]=lapso2 ;
sprintf(texto1,"%2.8f",lapso2);
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setcolor(GREEN);
setusercharsize(2,1,3,1);
outtextxy(103,20,texto1);
sprintf(texto2,"%2.8f",datoy[st]);
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setcolor(RED);
setusercharsize(2,1,3,1);
outtextxy(245,20,texto2);
/* Las siguientes 3 instrucciones dibujan los puntos en la gr fica */
/* putpixel(((getmaxx()-120)/(temp_max-temp_min))*(datox[st]-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,WHITE);*/
putpixel(((getmaxx()-120)/(temp_max-temp_min))*(lapso2-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,WHITE);
setcolor(WHITE);
/* circle(((getmaxx()-120)/(temp_max-temp_min))*(datox[st]-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,3); */
circle(((getmaxx()-120)/(temp_max-temp_min))*(lapso2-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,3);
}
/***************/
/* cambio de variables */
/* Ajuste de tiempo, depende de la computadora y del multimetro */
/*Esta ajustado para 1 segundo*/
/*El comportamiento del tiempo no es lineal*/
/*buscar otra forma de controlar el tiempo*/
/****** Aborta el programa *******/
if( (bioskey (1)) != 0 ) /* test if there is a keystroke */
/* step = analyze_key (&page) ;
if (step == 0) */
break ;
/********************************/
sprintf(texto3,"%d",st);
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setcolor(YELLOW);
setusercharsize(2,1,3,1);
outtextxy(2,getmaxy()-10,texto3);
setcolor(random(14));
outtextxy(getmaxx()-76,getmaxy()-10,"Salir (S)");
setcolor(WHITE);
outtextxy(516,4,"F.M,Ciencias.");
lapso2 = lapso+lapso2;
sleep(lapso);
setcolor(BLACK);
outtextxy(103,20,texto1);
outtextxy(245,20,texto2);
outtextxy(2,getmaxy()-10,texto3);
outtextxy(getmaxx()-76,getmaxy()-10,"Salir (S)");
outtextxy(516,4,"F.M,Ciencias.");
if(lapso2 >= tiem_max) break;
}/* Fin de while(st<=cdatos && !kbhit()) */
error=IORESET(dc);
M_errores(error,"IORESET");
free(codigo);
free(lec1);
free(lec2);
fclose(f1); /* Cierra el archivo de datos.dat */
closegraph(); /* Cierra el modo gr fico */
} /* Fin de main() */
void M_errores(int error, char* rutina)
{
if(error != NOERR)
{
printf("Error en llamada a %s \n",rutina);
printf("%d %s \n",error,errstr(error));
printf("presione cualquier tecla para continuar.");
getch();
}
}/* void M_errores(int error, char* rutina) */
void dibuja(void)
{
float dxp, dxg ;
int marcax ;
float dyp, dyg ;
int marcay ;
setcolor(BLUE);
rectangle(0,0,getmaxx(),getmaxy());
setcolor(BLUE);
rectangle(100,15,getmaxx()-20,getmaxy()-30);
/* Marcas grandes en la gr fica eje X */
dxg = (getmaxx()-120)/5 ; /* a getmaxx() le corresponde 640 */
setcolor(GREEN);
for(marcax=1;marcax<=4;marcax++)
{
line((marcax*dxg)+100,getmaxy()-40,(marcax*dxg)+100,getmaxy()-30);
}
/* Marcas peque¤as en la gr fica eje X */
dxp = (getmaxx()-120)/5 ;
setcolor(YELLOW);
for(marcax=0;marcax<=4;marcax++)
{
line((marcax*dxp)+(100+dxp/2),getmaxy()-35,(marcax*dxp)+(100+dxp/2),getmaxy()-30);
}
/* Marcas grandes en la gr fica eje Y */
dyg = (getmaxy()-45)/5 ; /* a getmaxy() le corresponde 480 y al intervalo 434 */
setcolor(RED);
for(marcax=1;marcax<=4;marcax++)
{
line(100,(marcax*dyg)+15,110,(marcax*dyg)+15);
}
/* Marcas peque¤as en la gr fica eje Y */
dyp = (getmaxy()-45)/5 ;
setcolor(YELLOW);
for(marcax=0;marcax<=4;marcax++)
{
line(100,(marcax*dyp)+(15+dyp/2),105,(marcax*dyp)+(15+dyp/2));
}
}/* Fin de void dibuja(void) */
/* INITIALIZE: Inicializa el sistema gr fico y reporta algun error */
void Initialize(void)
{
int xasp, yasp; /* Usado para leer la razon aspecto */
GraphDriver = DETECT; /* Pone la auto detecci¢n */
initgraph( &GraphDriver, &GraphMode, "" );
ErrorCode = graphresult(); /* Lee resultados de inicializaci¢n */
if( ErrorCode != grOk ){ /* Error ocurrido durante la inicializaci¢n */
printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ));
exit( 1 );
}
getpalette( &palette ); /* Lee la paleta desde el board */
MaxColors = getmaxcolor() + 1; /* Lee el maximo # de colores */
MaxX = getmaxx();
MaxY = getmaxy(); /* Lee el tama¤o de la pantalla */
getaspectratio( &xasp, &yasp ); /* Lee el aspecto del hardware */
AspectRatio=(double)xasp/(double)yasp;/* Obtiene el factor de correcci¢n */
}
***********************************************************************
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
//#include <sys/socket.h>
//#include <netinet/in.h>
//#include <netdb.h>
main(int argc, const char *argv[]) {
u_long addr;
struct hostent *hp;
char **p;
if(argc !=2){
printf("uso: %s direccion-IP\n", argv[0]);
exit(1);
}
if((addr = inet_addr(argv[1]))==-1) {
printf("La direccion IP tiene que estar"
" en notacion de punto: a.b.c.d \n");
esit(2);
}
hp = gethostbyaddr ((char *)&addr, sizeof(addr), AF_INET);
if(hp == NULL) {
printf("No encuentro informacion sobre la maquina %s \n", argv[1]);
exit(3);
}
for (p = hp ->h_addr_list; *p !=0; p++) {
struct in_addr in;
memcpy(&in.s_addr, *p, sizeof (in.s_addr));
printf(" %s\t%s\n", inet_ntoa(in), hp->h_name);
}
exit(0);
}
contra la temperatura Luis M. Le¢n, 23 de marzo 1998 */
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#include <graphics.h> /*Para el manejo de los graficos*/
#include <dos.h> /* Para manejar el tiempo con la funci¢n delay() */
#include "c_hpib.h"
int controlador = DETECT; /*Detecta la tarjeta grafica presente*/
int modo; /*No se especifica el modo, para que sea detectado*/
int erro; /*Para el manejor de errores*/
long dc; /* tarjeta */
long dvm1; /* multimetro 7 resistencia*/
long dvm2; /* multimetro 8 voltaje */
FILE *f1;
char arch[]="voltaje.dat"; /*Nombre del archivo donde se guardan datos*/
char arch1[]="resisten.dat"; /*Nombre del archivo donde se guardan datos*/
/* declaracion de rutina de manejo de errores */
void M_errores(int error, char* rutina);
/*declaracion de rutina para dibujar*/
void dibuja(void);
/*Inicializacion del modo grafico*/
void Initialize(void);
int GraphDriver; /* Manejador del aparato gr fico */
int GraphMode; /* Valores del modo gr fico */
double AspectRatio; /* Razon de aspectos de un pixel en la pantalla */
int MaxX,MaxY; /* Maxima resoluci¢n de la pantalla */
int MaxColors; /* Maximo # de colores posibles */
int ErrorCode; /* Reporta algun error en la gr fica */
struct palettetype palette; /* Usado para leer el informe de la paleta */
void Initialize(void);
/*Graficacion de los puntos*/
void puntos(void);
float lapso, lapso2, res_max, res_min ;
float temp_max, temp_min ;
float tiem_max;
int st;
float deltay, deltax ;
float deltay_pixel, deltax_pixel ;
float *lec1;
float *lec2;
/*float *lec3;*/
float datox[1000], datoy[1000] ;
FILE *tabla ;
double temp ;
char file_name [80] ;
char texto1[50];
char texto2[50];
char texto3[10];
main ()
{
char *codigo;
char codigo1[80];
char texto[50];
int cdatos=1000000; /*El n£mero maximo de datos a adquirir*/
int error ;
int i,ciclo ;
char funcion ;
char nombre_archivo[80], nombre_archivo1[80] ;
/*Presentaci¢n*/
system("cls");
printf("\n **********");
printf("\n ***** LABORATORIO DE FISICA MODERNA *****");
printf("\n ***** FACULTAD DE CIENCIAS, UNAM. *****");
printf("\n ***** 23 DE MARZO DE 1998. *****");
printf("\n **********");
printf("\n");
printf("\n\t\t**********");
printf("\n¨Que deseas medir?:");
printf("\n Oprimir la tecla (v) para voltaje, (r) para resitencia a 4 puntas\n");
printf("\n en funci¢n de la temperatura ¢ (t) para voltaje en funci¢n del tiempo\n");
while ((funcion = getch()) != 'v' && funcion != 'r' && funcion != 'V' && funcion != 'R' && funcion != 't' && funcion != 'T');
{
printf("\n¨Que deseas medir?:");
printf("\n Oprimir la tecla (v) para voltaje, (r) para resitencia a 4 puntas\n");
printf("\n en funci¢n de la temperatura ¢ (t) para voltaje en funci¢n del tiempo\n");
}
printf("\n\t\t**********");
printf("\n Direcci¢n de los voltmetros: voltaje o resistencia (7) , temperatura (8) y para voltaje v.s. tiempo (8)");
printf("\n\t\t**********");
printf("\n Oprima cualquier tecla para terminar la adquisici¢n de datos.");
printf("\n\t\t**********");
printf("\n Los valores de los datos adquiridos se muestran en la pantalla");
printf("\n\t\t**********");
printf("\n ¨Cada cuanto tiempo (segundos) quiere tomar datos (>=1)?: ");
scanf("%f",&lapso);
printf("\n\t\t**********");
printf("\n¨Cu nto tiempo (segundos) quiere que dure el experimento?: ");
scanf("%f",&tiem_max);
printf("\n\t\t**********");
/* Para graficar en el eje X */
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
printf("\nValor m¡nimo y m ximo de la Temperatura (K) en la gr fica?\n" );
printf("\nmin,max: " );
scanf("%f,%f", &temp_min, &temp_max);
}
if(funcion == 't' || funcion == 'T'){
temp_min = 0 ;
temp_max = tiem_max ;
}
printf("\n\t\t**********");
/* Para graficar en el eje Y */
if(funcion == 'v' || funcion == 'V' || funcion == 't' || funcion == 'T'){
printf("\nValor m¡nimo y m ximo del Voltaje (Volts) en la gr fica?\n" );
printf("\nmin,max: " );
scanf("%f,%f", &res_min, &res_max);
}
printf("\n\t\t**********");
if(funcion == 'r' || funcion == 'R'){
printf("\nValor m¡nimo y m ximo de la Resistencia (Ohm) en la gr fica?\n" );
printf("\nmin,max: " );
scanf("%f,%f", &res_min, &res_max);
}
printf("\n\t\t**********");
if((codigo=(char *)malloc(sizeof(char)*100))==NULL){
exit(1);
}
/*** En todos programas hay que alojar exactamnete en la memoria un valor
del puntero */
printf("\nDame el nombre del archivo a donde vas a guardar tus datos con extensi¢n (.dat):");
scanf("%s", &nombre_archivo1);
strcpy(nombre_archivo,"");
strcat(nombre_archivo, nombre_archivo1);
if((f1=fopen(nombre_archivo,"w"))==NULL){
printf("Error no se puede abrir el archivo %s. \n",arch);
exit(0);
}
Initialize();
if((lec1=(float *)malloc(sizeof(float)*cdatos))==NULL){
printf("No hay memoria para alojar datos.\n");
exit(1);
}
if((lec2=(float *)malloc(sizeof(float)*cdatos))==NULL){
printf("No hay memoria para alojar datos.\n");
exit(1);
}
/* if((lec3=(float *)malloc(sizeof(float)*cdatos))==NULL){
printf("No hay memoria para alojar datos.\n");
exit(1);
} */
/*******/
dc=7L; /* tarjeta */
dvm2=708L; /* Voltmetro digital HP 34401A, voltaje. */
dvm1=707L; /* Voltmetro digital HP 34401A, resistencia. */
error=IORESET(dc);
M_errores(error,"IORESET");
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
error=IOCLEAR(dvm1);
M_errores(error,"IOCLEAR dvm1");
if(funcion == 'v' || funcion == 'V'){
strcpy(codigo1,"CONF:VOLT:DC");
}
if(funcion == 'r' || funcion == 'R'){
strcpy(codigo1,"CONF:FRES");
}
IOOUTPUTS(dvm1,codigo1,strlen(codigo1)); /* configura el instrumento
para medir voltaje o resistencia
directos */
}
error=IOCLEAR(dvm2);
M_errores(error,"IOCLEAR dvm2");
strcpy(codigo1,"CONF:VOLT:DC");
IOOUTPUTS(dvm2,codigo1,strlen(codigo1)); /*configura el instrumento
para medir voltaje
directos*/
dibuja();
st=0;
setcolor(WHITE);
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
outtextxy(101,4,"Temperatura (K)");
outtextxy(((getmaxx()-50)/2)-9,getmaxy()-10,"Temperatura (K)");
}
if(funcion == 't' || funcion == 'T'){
outtextxy(101,4,"Tiempo (seg)");
outtextxy(((getmaxx()-50)/2)-9,getmaxy()-10,"Tiempo (seg)");
}
if(funcion == 'v' || funcion == 'V' || funcion == 't' || funcion == 'T'){
outtextxy(245,4,"Voltaje (Volts)");
}
if(funcion == 'r' || funcion == 'R'){
outtextxy(245,4,"Resistencia (Ohm)");
}
/* Despliega la escala en el eje X */
deltax = (temp_max-temp_min)/5 ;
deltax_pixel = (getmaxx()-120)/5 ;
for(ciclo=0;ciclo<=5;ciclo++){
sprintf(texto1,"%3.0f",temp_min+(ciclo*deltax));
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setusercharsize(2,1,3,1);
outtextxy((ciclo*deltax_pixel)+81+(2*ciclo),getmaxy()-26,texto1);
}
/* Despliega la escala en el eje Y */
deltay = (res_max-res_min)/5 ;
deltay_pixel = (getmaxy()-45)/5 ;
for(ciclo=0;ciclo<=5;ciclo++){
sprintf(texto1,"%3.6f",res_min+(ciclo*deltay));
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setusercharsize(2,1,3,1);
outtextxy(25,(5-ciclo)*deltay_pixel+12,texto1);
}
/* outtextxy(getmaxx()/2,getmaxy()/2,"Resistencia (Ohm)"); */
/* settextstyle(DAFAULT_FONT,VERT_DIR,1); */
lapso2 = 0 ;
while(st<=cdatos && !kbhit()){
st++ ;
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
if(funcion == 'v' || funcion == 'V'){
strcpy(codigo1,"MEAS:VOLT:DC?");
}
if(funcion == 'r' || funcion == 'R'){
strcpy(codigo1,"MEAS:FRES?");
}
IOOUTPUTS(dvm1,codigo1,strlen(codigo1)); /* Prepara Voltaje o Resistencia a 4 puntas */
}
delay(100);
strcpy(codigo1,"MEAS:VOLT:DC?");
IOOUTPUTS(dvm2,codigo1,strlen(codigo1)); /* Prepara voltajes dc */
delay(100);
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
IOENTER(dvm1,(lec1+st));
}
delay(100);
IOENTER(dvm2,(lec2+st));
/* datoy[st] = 1.000*random(7) ;
datox[st] = -0.001*random(7) ; */
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
datoy[st] = *(lec1+st) ;
}
datox[st] = *(lec2+st) ;
temp=273.85255+27346.124*datox[st]-1.1999e6*datox[st]*datox[st]-2.3948444e8*datox[st]*datox[st]*datox[st]+2.1120772e10*datox[st]*datox[st]*datox[st]*datox[st]+1.3639246e13*datox[st]*datox[st]*datox[st]*datox[st]*datox[st];
/* Con este polinomio grado 5 se calcula el valor de la temperatura directamente de
del archivo tabla.mag obtenidas del programa Origin, con un coeficiente de correlacion de
0.9997 y una desviaci¢n estandar de 2.40267 */
/* Guarda los datos en el archivo nombre.dat */
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
fprintf(f1,"%.2f %.8f\n", temp, datoy[st]);
}
if(funcion == 't' || funcion == 'T'){
fprintf(f1,"%f %.8f\n", lapso2, datox[st]);
}
/*******/
/* Despliega los datos experimentales */
if(funcion == 'v' || funcion == 'V' || funcion == 'r' || funcion == 'R'){
sprintf(texto1,"%2.2f",temp);
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setcolor(GREEN);
setusercharsize(2,1,3,1);
outtextxy(103,20,texto1);
sprintf(texto2,"%2.8f",datoy[st]);
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setcolor(RED);
setusercharsize(2,1,3,1);
outtextxy(245,20,texto2);
/* Las siguientes 3 instrucciones dibujan los puntos en la gr fica */
/* putpixel(((getmaxx()-120)/(temp_max-temp_min))*(datox[st]-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,WHITE);*/
putpixel(((getmaxx()-120)/(temp_max-temp_min))*(temp-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,WHITE);
setcolor(WHITE);
/* circle(((getmaxx()-120)/(temp_max-temp_min))*(datox[st]-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,3); */
/* circle(((getmaxx()-120)/(temp_max-temp_min))*(temp-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,3); */
circle(((getmaxx()-120)/(temp_max-temp_min))*(temp-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,3);
}
/**************/
if(funcion == 't' || funcion == 'T'){
datoy[st]=datox[st] ;
datox[st]=lapso2 ;
sprintf(texto1,"%2.8f",lapso2);
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setcolor(GREEN);
setusercharsize(2,1,3,1);
outtextxy(103,20,texto1);
sprintf(texto2,"%2.8f",datoy[st]);
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setcolor(RED);
setusercharsize(2,1,3,1);
outtextxy(245,20,texto2);
/* Las siguientes 3 instrucciones dibujan los puntos en la gr fica */
/* putpixel(((getmaxx()-120)/(temp_max-temp_min))*(datox[st]-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,WHITE);*/
putpixel(((getmaxx()-120)/(temp_max-temp_min))*(lapso2-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,WHITE);
setcolor(WHITE);
/* circle(((getmaxx()-120)/(temp_max-temp_min))*(datox[st]-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,3); */
circle(((getmaxx()-120)/(temp_max-temp_min))*(lapso2-temp_min)+100,(((getmaxy()-45)/(res_max-res_min))*(res_max-datoy[st]))+15,3);
}
/***************/
/* cambio de variables */
/* Ajuste de tiempo, depende de la computadora y del multimetro */
/*Esta ajustado para 1 segundo*/
/*El comportamiento del tiempo no es lineal*/
/*buscar otra forma de controlar el tiempo*/
/****** Aborta el programa *******/
if( (bioskey (1)) != 0 ) /* test if there is a keystroke */
/* step = analyze_key (&page) ;
if (step == 0) */
break ;
/********************************/
sprintf(texto3,"%d",st);
settextstyle(GOTHIC_FONT, HORIZ_DIR,1);
setcolor(YELLOW);
setusercharsize(2,1,3,1);
outtextxy(2,getmaxy()-10,texto3);
setcolor(random(14));
outtextxy(getmaxx()-76,getmaxy()-10,"Salir (S)");
setcolor(WHITE);
outtextxy(516,4,"F.M,Ciencias.");
lapso2 = lapso+lapso2;
sleep(lapso);
setcolor(BLACK);
outtextxy(103,20,texto1);
outtextxy(245,20,texto2);
outtextxy(2,getmaxy()-10,texto3);
outtextxy(getmaxx()-76,getmaxy()-10,"Salir (S)");
outtextxy(516,4,"F.M,Ciencias.");
if(lapso2 >= tiem_max) break;
}/* Fin de while(st<=cdatos && !kbhit()) */
error=IORESET(dc);
M_errores(error,"IORESET");
free(codigo);
free(lec1);
free(lec2);
fclose(f1); /* Cierra el archivo de datos.dat */
closegraph(); /* Cierra el modo gr fico */
} /* Fin de main() */
void M_errores(int error, char* rutina)
{
if(error != NOERR)
{
printf("Error en llamada a %s \n",rutina);
printf("%d %s \n",error,errstr(error));
printf("presione cualquier tecla para continuar.");
getch();
}
}/* void M_errores(int error, char* rutina) */
void dibuja(void)
{
float dxp, dxg ;
int marcax ;
float dyp, dyg ;
int marcay ;
setcolor(BLUE);
rectangle(0,0,getmaxx(),getmaxy());
setcolor(BLUE);
rectangle(100,15,getmaxx()-20,getmaxy()-30);
/* Marcas grandes en la gr fica eje X */
dxg = (getmaxx()-120)/5 ; /* a getmaxx() le corresponde 640 */
setcolor(GREEN);
for(marcax=1;marcax<=4;marcax++)
{
line((marcax*dxg)+100,getmaxy()-40,(marcax*dxg)+100,getmaxy()-30);
}
/* Marcas peque¤as en la gr fica eje X */
dxp = (getmaxx()-120)/5 ;
setcolor(YELLOW);
for(marcax=0;marcax<=4;marcax++)
{
line((marcax*dxp)+(100+dxp/2),getmaxy()-35,(marcax*dxp)+(100+dxp/2),getmaxy()-30);
}
/* Marcas grandes en la gr fica eje Y */
dyg = (getmaxy()-45)/5 ; /* a getmaxy() le corresponde 480 y al intervalo 434 */
setcolor(RED);
for(marcax=1;marcax<=4;marcax++)
{
line(100,(marcax*dyg)+15,110,(marcax*dyg)+15);
}
/* Marcas peque¤as en la gr fica eje Y */
dyp = (getmaxy()-45)/5 ;
setcolor(YELLOW);
for(marcax=0;marcax<=4;marcax++)
{
line(100,(marcax*dyp)+(15+dyp/2),105,(marcax*dyp)+(15+dyp/2));
}
}/* Fin de void dibuja(void) */
/* INITIALIZE: Inicializa el sistema gr fico y reporta algun error */
void Initialize(void)
{
int xasp, yasp; /* Usado para leer la razon aspecto */
GraphDriver = DETECT; /* Pone la auto detecci¢n */
initgraph( &GraphDriver, &GraphMode, "" );
ErrorCode = graphresult(); /* Lee resultados de inicializaci¢n */
if( ErrorCode != grOk ){ /* Error ocurrido durante la inicializaci¢n */
printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ));
exit( 1 );
}
getpalette( &palette ); /* Lee la paleta desde el board */
MaxColors = getmaxcolor() + 1; /* Lee el maximo # de colores */
MaxX = getmaxx();
MaxY = getmaxy(); /* Lee el tama¤o de la pantalla */
getaspectratio( &xasp, &yasp ); /* Lee el aspecto del hardware */
AspectRatio=(double)xasp/(double)yasp;/* Obtiene el factor de correcci¢n */
}
***********************************************************************
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
//#include <sys/socket.h>
//#include <netinet/in.h>
//#include <netdb.h>
main(int argc, const char *argv[]) {
u_long addr;
struct hostent *hp;
char **p;
if(argc !=2){
printf("uso: %s direccion-IP\n", argv[0]);
exit(1);
}
if((addr = inet_addr(argv[1]))==-1) {
printf("La direccion IP tiene que estar"
" en notacion de punto: a.b.c.d \n");
esit(2);
}
hp = gethostbyaddr ((char *)&addr, sizeof(addr), AF_INET);
if(hp == NULL) {
printf("No encuentro informacion sobre la maquina %s \n", argv[1]);
exit(3);
}
for (p = hp ->h_addr_list; *p !=0; p++) {
struct in_addr in;
memcpy(&in.s_addr, *p, sizeof (in.s_addr));
printf(" %s\t%s\n", inet_ntoa(in), hp->h_name);
}
exit(0);
}
Suscribirse a:
Entradas (Atom)