A Jose Ignacio sobre ActiveX Puerto serie
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
