Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-12-2010
monretutiel monretutiel is offline
Registrado
NULL
 
Registrado: dic 2010
Posts: 7
Poder: 0
monretutiel Va por buen camino
Cool Error! DAQmxreaddigitalscalaru32()-the signal is not compatible

No me reconoce las entradas del simseny el builder, hago un caption en un label para ver como me varia el valor de una función de entrada analógica y no varía ¿alguna solución?.Me urge bastante si alguien me pudiera dar una dirección para mandarle el miniprograma y que le eche un vistazo
Gracias.
Responder Con Cita
  #2  
Antiguo 11-12-2010
monretutiel monretutiel is offline
Registrado
NULL
 
Registrado: dic 2010
Posts: 7
Poder: 0
monretutiel Va por buen camino
Cool Error! DAQmxreaddigitalscalaru32()-the signal is not compatible

Alguien sabe a que puede ser debido este error el problema es al iniciar el simulador simseny.Adjunto mi proceso

Código c++
Cita:
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma package(smart_init)
//Process
#include "UnitProceso.h"
#include "UnitInterfazUsuario.h"
#include <vcl.h>
#include <stdio.h>
#define SS_FALSE_DAQ // <-- AÑADIR ESTO
#include "ss_nidaqmx.h" //SimSeny header file
// sensor rebose
#define REBOSE_SENSOR_CHANNEL "Dev21/port1" // lee todo el puerto
#define REBOSE_SENSOR_BIT 0 // bit 0 es el rebose
//sensor sobrecalentamiento
#define SOBRECALENTAMIENTO_SENSOR_CHANNEL "Dev21/port1"
#define SOBRECALENTAMIENTO_SENSOR_BIT 1 // bit 1 es el sobrecalentamiento

// Espejo de salidas digitales
int mirror_DO;


//entradas
TaskHandle rebose_sensor_task;
TaskHandle sobrecalentamiento_sensor_task;
TaskHandle temperatura_sensor_task;
TaskHandle nivel_sensor_task;
//salidas
TaskHandle actuadores_task;
TaskHandle analog_output_task;

// reporte de errores del proceso --------------------------------------------------
void process_error(int32 code, char *suffix) {
AnsiString msg;
char buff[200]; // buffer para los mensajes de erro
msg = "Error: ";
msg = msg + suffix;
msg = msg + "\n";
msg = msg + "In: ";
DAQmxGetErrorString (code, buff, 200); // obtiene el mensaje de error
msg = msg + buff;
ShowMessage(msg);
exit(1); // fuerza el final de la aplicacion
}

// Inicializacion proceso ---------------------------------------------------
void process_init(void) {
int32 daq_error;
mirror_DO = 0x00;//Inicializacion espejos


// preparacion sensor rebose
// error para tarea rebose
daq_error = DAQmxCreateTask("rebose task",&rebose_sensor_task);
if (daq_error != 0)
process_error(daq_error,"process_init()->rebose_1");
// ahora mete nuevos canales, aqui el puerto completo
daq_error = DAQmxCreateDIChan(rebose_sensor_task, "Dev21/port0",
"",DAQmx_Val_ChanForAllLines);
if (daq_error != 0)
process_error(daq_error,"process_init()->rebose_2");


// -- preparacion sensor sobrecalentamiento
// error para tarea sobrecalentamiento
daq_error = DAQmxCreateTask("sobrecalentamiento task",&sobrecalentamiento_sensor_task);
if (daq_error != 0)
process_error(daq_error,"process_init()->sobrecalentamiento_3");
// ahora mete nuevos canales, aqui el puerto completo
daq_error = DAQmxCreateDIChan(sobrecalentamiento_sensor_task, "Dev21/port0",
"",DAQmx_Val_ChanForAllLines);
if (daq_error != 0)
process_error(daq_error,"process_init()->sobrecalentamiento_4");


// -- preparacion sensor temperatura
daq_error = DAQmxCreateTask("temperatura task",&temperatura_sensor_task);
if (daq_error != 0)
process_error(daq_error,"process_init()->temperatura_5");
daq_error = DAQmxCreateAIVoltageChan (temperatura_sensor_task, "Dev21/ai0",
"", DAQmx_Val_RSE, 0.0, 10.0, DAQmx_Val_Volts, NULL);
if (daq_error != 0)
process_error(daq_error,"process_init()->temperatura_6");

// -- preparacion sensor nivel
daq_error = DAQmxCreateTask("nivel task",&nivel_sensor_task);
if (daq_error != 0)
process_error(daq_error,"process_init()->nivel_7");
daq_error = DAQmxCreateAIVoltageChan (nivel_sensor_task, "Dev21/ai1",
"", DAQmx_Val_RSE, 6.0, 0.0, DAQmx_Val_Volts, NULL);
if (daq_error != 0)
process_error(daq_error,"process_init()->nivel_8");


// -- preparacion salida digital
daq_error = DAQmxCreateTask("actuadores task", &actuadores_task);
if (daq_error != 0)
process_error(daq_error,"process_init()->digitalo9");
// lee el puerto completo
daq_error = DAQmxCreateDOChan (actuadores_task, "Dev21/port0",
"",DAQmx_Val_ChanForAllLines);


//preparacion salida analógica
daq_error=DAQmxCreateTask("Analog Output Task",&analog_output_task);
if(daq_error!=0)
process_error(daq_error,"process_init()->analoga10");
daq_error=DAQmxCreateAOVoltageChan(analog_output_task, //taskHandle
"Dev0/ao0", //physicalChannel
"", //nameToAssignToChannel
0.0, //minVal
10.0, //maxVal
DAQmx_Val_Volts, //units
NULL); //customScaleName

if(daq_error!=0)
process_error(daq_error,
"process_init()->analoga11");
}



// lee rebose y devuelve el estado ------------------------------------
bool process_read_rebose(void) {
int32 daq_error;
uInt32 data;
// Esta tarea empieza automaticamente y no have falta iniciarla
daq_error = DAQmxReadDigitalScalarU32 (rebose_sensor_task, 0.0, &data,
NULL);
if (daq_error != 0)
process_error(daq_error,"process_read_rebose()");
// DAQmxStopTask() optional
if ((data & 0x01) == 0) { //rebose sensor bit 0
return(REBOSE_YES);

} else {
return(REBOSE_NO);
}
}

// lee sobrecalentamiento y devuelve el estado ------------------------------------
bool process_read_sobrecalentamiento(void) {
int32 daq_error;
uInt32 data;
// Esta tarea empieza automaticamente y no hace falta iniciarla
daq_error = DAQmxReadDigitalScalarU32 (sobrecalentamiento_sensor_task, 0.0, &data,
NULL);
if (daq_error != 0)
process_error(daq_error,"process_read_sobrecalentamiento()");
// DAQmxStopTask() optional
if ((data & 0x02) == 0) { //sobrecalentamiento sensor bit 1
return(SOBRECALENTAMIENTO_NO);

} else {
return(SOBRECALENTAMIENTO_YES);
}
}
// lee sensor temperatura y devuelve estado--------------------------------------------------
double process_read_temperatura(void) {
int32 daq_error;
float64 volts;
double degrees;
// ?? esta tarea empieza automaticamente
daq_error = DAQmxReadAnalogScalarF64 (temperatura_sensor_task, 1.0,
&volts, NULL);
if (daq_error != 0)
process_error(daq_error,"process_read_temperatura()");
else
degrees = volts * 10;//grados = voltios * (100.0/10.0); // funcion real, 0V=0ºC, 10V=100ºC
return(degrees);
}

// lee sensor nivel y devuelve estado --------------------------------------------------
double process_read_nivel(void) {
int32 daq_error;
float64 volts;
double liter;
// ?? esta tarea empieza automaticamente
daq_error = DAQmxReadAnalogScalarF64 (nivel_sensor_task, 1.0,
&volts, NULL);
if (daq_error != 0)
process_error(daq_error,"process_read_nivel()");
else
liter = (633.33333*volts)+3800 ; //litros = (633.33333*volts)+3800; // funcion real,
return(liter);
}

// escribe el actuador valvula -----------------------------------------------------
//0->cerrada, 1->abierta
void process_write_valvula(int state) {
int32 daq_error;
if (state == VALVULA_OPEN) {
mirror_DO = mirror_DO & ~0x01; // bit 0
} else {
mirror_DO = mirror_DO | 0x01;
}
daq_error = DAQmxWriteDigitalScalarU32 (actuadores_task, true, 0.0,
mirror_DO, NULL);
if (daq_error != 0)
process_error(daq_error,"process_write_valve()");
}
// escribe el actuador calefactor -----------------------------------------------------
//0->apagado, 1->encendido
void process_write_calefactor(int state) {
int32 daq_error;
if (state == CALEFACTOR_ON) {
mirror_DO = mirror_DO & ~0x02; // bit 0
} else {
mirror_DO = mirror_DO | 0x02;
}
daq_error = DAQmxWriteDigitalScalarU32 (actuadores_task, true, 0.0,
mirror_DO, NULL);
if (daq_error != 0)
process_error(daq_error,"process_write_calefactor()");
}
//escribe el actuador bomba------------------------------------------------------------
void process_write_bomba(double value)
{
float64 volts;
int32 daq_error;
volts=(value/20); //FDT (Actuador) Potencia/20 = voltios
daq_error=DAQmxWriteAnalogScalarF64(analog_output_task, //taskHandle
true, //autoStart
1.0, //timeout
volts, //value
NULL); //reserved
if(daq_error!=0)
process_error(daq_error,
"process_write_bomb()");
}

Última edición por Casimiro Notevi fecha: 11-12-2010 a las 13:38:43.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Hardware compatible basti Linux 3 20-03-2007 16:07:13
BDE es compatible con sql express? Alexandercash Conexión con bases de datos 4 08-01-2007 21:45:48
delphi compatible con linux arkangel Varios 2 17-11-2005 03:27:24
Qreport no compatible con access Sasuke_Cub Impresión 1 19-06-2005 18:17:19
Compatible Jedi 3 con anteriores fabianmk Varios 0 29-03-2005 16:52:46


La franja horaria es GMT +2. Ahora son las 10:29:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi