Código fuente de programación en serie
Les doy un programa que escribí antes, que imita el asistente de depuración del puerto serie y utiliza el método de control del puerto serie. Por favor consúltelo.
El código ha sido enviado a tu correo electrónico.
Suplemento:
Recibido en la función OnComm(). No hay nada malo con tu código.
¿Has mapeado los eventos de control del puerto serie?
BEGIN _ receptor de eventos _ MAP(CCuteComDlg, CDialog)
ON_EVENT(CCuteComDlg, IDC_MSCOMM1, 1/* ON com */, ON com, VTS_NONE)
END_EVENTSINK_MAP()
Si lo hay, no debería haber ningún problema para recibirlo. Además, incluso si solo envías pero no recibes, no te equivocarás si envías.
¿Viste el código que te envié? Este es el uso del control de puerto serie estándar y hay una demostración en el interior. Échale un vistazo en detalle, te resultará útil.
Algunas personas dicen que hay un problema con el código de inicialización del puerto serie de Gong Jianwei, lo que provoca un error en la matriz de seguridad posterior.
He estado usando el siguiente código para inicializar el control del puerto serie y se ha aplicado a muchos programas sin ningún problema. Puedes probar:
if(m_ctrlComm.get_PortOpen())
m _ ctrl comm . put _ PortOpen(FALSE); put_CommPort(1); //Selecciona com1.
//El modo de salida es binario.
m _ ctrl comm . put _ input mode(1); //Texto, binario
//m _ ctrl comm .
//m_ctrl comm. put_out buffersize(512);
m_ctrlComm.put_Settings("9600, n, 8, 1 "); // Velocidad de transmisión 9600, sin verificación, 8 bits de datos, 1 bit de parada.
If (!m_ctrlComm.get_PortOpen())
m _ ctrl comm . put _ PortOpen(TRUE); //Abre el puerto serie
m _ ctrl comm . put _ RTreshold(1);
//El parámetro 1 indica que siempre que haya 1 carácter mayor o igual en el búfer de recepción en serie, se activará un evento OnComm para recibir datos.
m _ ctrl comm . put _ input len(0); //Establece la longitud de los datos del área de recepción actual en 0.
///0-Lee todo el contenido del buffer de recepción.
//n-Leer n caracteres (o código binario) en el buffer de recepción.
m _ ctrl comm . get _ Input(); //Lee el búfer primero y borra los datos residuales.
Este es el código en VS2008. Reemplace el prefijo de función Get_ con Get y put_ con Set en VC6.0.