Red de conocimiento informático - Espacio del host - Si comprende el control MSComm, por favor ayude

Si comprende el control MSComm, por favor ayude

Hola, supongo que no sabes mucho sobre la programación del puerto serie VC; de lo contrario, debería ser fácil de implementar. Haré todo lo posible para responder a tus preguntas y espero que te ayude.

1. Si está aprendiendo a programar el puerto serie VC ahora, se recomienda que instale un software de puerto serie virtual vspdxp.exe

2. , vc6 Pasó la siguiente prueba, dirección de descarga del proyecto: / site/qiujiejia1/Home/BaiDu_Answer_VCSERIAL_1.1.0.0.VCSERIAL_1.zip

3. Lo siguiente es parte del código, solo como referencia.

/****************************************** ************************************

Inicializando el puerto serie

************************************************ *** ****************************/

BOOL CCommTest::OnInitDialog()

{

CDialog::OnInitDialog();

SetIcon(m_hIcon, TRUE); // Establecer bigicon

SetIcon(m_hIcon, FALSE);

//COM inicial

m_ctrlComm.SetCommPort(1); //Seleccione com1

m_ctrlComm.SetRTreshold(1); //El parámetro 1 indica cuándo buffer de recepción en serie Cuando el número de caracteres en el área es mayor o igual a 1, se activará el evento OnComm para recibir datos

m_ctrlComm.SetInputMode(1); atributo para obtener datos (0: modo texto; 1: modelo binario).

m_ctrlComm.SetInputLen(0); //Establece el número de caracteres leídos por cada entrada. El valor predeterminado es 0, lo que significa leer todo el contenido del búfer de recepción.

m_ctrlComm.SetInBufferCount(0); // Borrar el búfer de recepción

m_ctrlComm.SetPortOpen(TRUE); // Abrir el puerto serie

return TRUE; // Devuelve VERDADERO a menos que el foco esté establecido en un control

}

/*********************** ***** ********************************************** ****** ***

Función de recepción.

************************ ****** ********************************************** ****/

void CCommTest::OnComm()

{

char Rec_Data_Array[2048] //Se utiliza para recibir datos

;

if (m_ctrlComm.GetCommEvent () == 2) //El valor del evento de 2 significa que hay caracteres en el buffer de recepción

{

VARIANT ReceiverData = m_ctrlComm. GetInput(); //obtener los datos de 2.GetInput(); //obtener los datos

int Data_Len = ReceiverData.parray->rgsabound->cElements; una dimensión

memcpy(Rec_Data_ Array, (char*) ReceiverData.parray->pvData, Data_Len); //copia los datos

Rec_Data_Array[Data_Len] = 0;

}

// ::SetWindowText(:.GetDlgItem(m_hWnd,IDC_EDIT_RXDATA),(Rec_Data_Array+5)); //Generar todos los caracteres en el cuadro de edición

::SetWindowText(::GetDlgItem (m_hWnd,IDC_EDIT_RXDATA),. (Rec_Data_Array+5)); //(Rec_Data_Array+5) comienza a generar desde el sexto carácter (es decir, 6)

}

/ ********************************************** ******* ******* *******************

Función de envío

*** ***** ********************************************** ****** *******************/

void CCommTest::OnTransmit()

{

char buf [100]={0};

::GetWindowText(::GetDlgItem(m_hWnd,IDC_EDIT_TXDATA),buf,sizeof(buf) );

m_ctrlComm .Colocar

Output(COleVariant(buf));/ Enviar datos

}