Si comprende el control MSComm, por favor 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; p>
} p>
// ::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)
} p>
/ ********************************************** ******* ******* *******************
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
}