Hola, estoy realizando un programa en c que se comunica con un dispositivo modem conectado a un puerto. No consigo obtener respuesta del comando at que envio le pongo el codigo para que puedan observear donde fallo,
hSerial = CreateFile(puerto, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, 0, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hSerial!=INVALID_HANDLE_VALUE)
{
DCB dcbSerialParams;
DCB dcbSerial = {0};
dcbSerial.DCBlength=sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams))
printf("\nGetCommState error!");
else
printf("\nGetCommState ok.");
if(baudios=="2400")
dcbSerialParams.BaudRate=CBR_2400;
if(baudios=="4800")
dcbSerialParams.BaudRate=CBR_4800;
if(baudios=="9600")
dcbSerialParams.BaudRate=CBR_9600;
if(baudios=="19200")
dcbSerialParams.BaudRate=CBR_19200;
if(baudios=="38400")
dcbSerialParams.BaudRate=CBR_38400;
if(baudios=="57600")
dcbSerialParams.BaudRate=CBR_57600;
if(baudios=="115200")
dcbSerialParams.BaudRate=CBR_115200;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;
if(!SetCommState(hSerial, &dcbSerialParams))
printf("\nSetCommState error!");
else{
printf("\nSetCommState ok.");
}
char *szBuff="AT\r";
dwBytesRead = 0;
if(!WriteFile(hSerial, szBuff, sizeof(szBuff), &dwBytesRead, NULL)) //Escribe cada comando
printf ( "WriteFile falló con error% d \n", GetLastError ());
else{
dwBytesRead = 0;
memset(szBuff,128,0);
if(!ReadFile(hSerial, szBuff, sizeof(szBuff), &dwBytesRead, NULL)) //lee la respuesta de cada comando
printf ( "Realfile falló con error% d \n", GetLastError ());
else{
szBuff[dwBytesRead] = '\0';
printf(" ReadFile: %s\n", szBuff);
}
}
Espero que me podais ayudar un saludo
hSerial = CreateFile(puerto, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, 0, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hSerial!=INVALID_HANDLE_VALUE)
{
DCB dcbSerialParams;
DCB dcbSerial = {0};
dcbSerial.DCBlength=sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams))
printf("\nGetCommState error!");
else
printf("\nGetCommState ok.");
if(baudios=="2400")
dcbSerialParams.BaudRate=CBR_2400;
if(baudios=="4800")
dcbSerialParams.BaudRate=CBR_4800;
if(baudios=="9600")
dcbSerialParams.BaudRate=CBR_9600;
if(baudios=="19200")
dcbSerialParams.BaudRate=CBR_19200;
if(baudios=="38400")
dcbSerialParams.BaudRate=CBR_38400;
if(baudios=="57600")
dcbSerialParams.BaudRate=CBR_57600;
if(baudios=="115200")
dcbSerialParams.BaudRate=CBR_115200;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;
if(!SetCommState(hSerial, &dcbSerialParams))
printf("\nSetCommState error!");
else{
printf("\nSetCommState ok.");
}
char *szBuff="AT\r";
dwBytesRead = 0;
if(!WriteFile(hSerial, szBuff, sizeof(szBuff), &dwBytesRead, NULL)) //Escribe cada comando
printf ( "WriteFile falló con error% d \n", GetLastError ());
else{
dwBytesRead = 0;
memset(szBuff,128,0);
if(!ReadFile(hSerial, szBuff, sizeof(szBuff), &dwBytesRead, NULL)) //lee la respuesta de cada comando
printf ( "Realfile falló con error% d \n", GetLastError ());
else{
szBuff[dwBytesRead] = '\0';
printf(" ReadFile: %s\n", szBuff);
}
}
Espero que me podais ayudar un saludo