A Jose Ignacio sobre ActiveX Puerto serie

ana
01 de Octubre del 2004

Te he enviado ésta misma respuesta a tu correo, pero me ha dado problemas el servidor. Así que te la copio aquí por si no te llega vía correo. Si quieres hacerme alguna pregunta, puedes enviármela al correo y si puedo ayudarte, estaré encantada.

Suerte

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Nota: m_comm1 es el nombre que le das al ActiveX en sus propiedades (una vez insertado en tu ventana el ActiveX, botón dcho del ratón, propiedades)


Configuración:

m_pvp->m_comm1.SetPortOpen( TRUE );
m_pvp->m_comm1.SetInputLen(0);
m_pvp->m_comm1.SetRTSEnable( TRUE );


Enviar:

Yo envío cadenas de caracteres. Si deseas enviar otra cosa, tendrás que mirar el uso de las variables tipo VARIANT para poner el valor correcto en (1)

//tienes una variable char *str donde tienes los datos a enviar, las pasas a una variable unsigned short para poder pasarla a otra de tipo wchar_t* y de ahí a // la variable VARIANT que es la que entiende el activeX MSCOMM

VARIANT varSrc;

VariantInit(&varSrc);

varSrc.vt = VT_BSTR; (1)

unsigned short aux[5000];

for (int j=0; j<5000; j++)
aux[j] = ' ';

for (j=0; j<n; j++)
aux[j] = str[j];

aux[n] = 0;

wchar_t *uno = (unsigned short *) aux;

varSrc.bstrVal = SysAllocString(uno); (1)
m_pvp->m_comm1.SetOutput(varSrc);



Recibir


VARIANT varSrc;

VariantInit(&varSrc);

varSrc.vt = VT_BSTR; (1)

CString buf_inter;

buf_inter = "";

varSrc = m_pvp->m_comm1.GetInput();

buf_inter = (CString) varSrc.bstrVal;



Sobre documentación, no te puedo ayudar. Lo poco que sé de éste tema ha sido con una pequeña explicación que me dieron y el resto prueba y ensayo. Si te puedo decir que éste código está funcionando perfectamente en bastantes puestos de trabajo durante todo el día y no da guerra.

Suerte

ana
01 de Octubre del 2004
Abrás visto en el código sentencias como

m_pvp->m_comm1.

Realmente debes poner solamente

m_comm1.