Ragazzi utilizzando il seguente codice non riesco ad avere risposta dal modem.
premetto che nel file "miofile.txt" è presente la seguente stringa ATI1 e dovrei ricevere come risposta 255.
Aiuto per piacere.
codice:int main(int argc, char *argv[]) { BOOL fSuccess; // gestione degli errori //parametri per la funzione WriteFile int lpBuffer; DWORD NumeroDiBytesDaScrivere = 1; DWORD NumeroDiBytesScritti; BOOL bResult; DCB dcb; FILE *fp; //apro la porta COM HANDLE hCom = CreateFile("COM3", // ad esempio GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL ); // verifico l'effettiva disponibilità (potrebbe non esistere) if(!hCom) { printf("Problemi alla porta di comunicazione e relativo errore!!!\nEI=%d",GetLastError()); return 0; } // e verifico lo stato della stessa fSuccess = GetCommState(hCom,&dcb); if (!fSuccess) { printf("La porta selezionata è già in uso!!!: EI=%d",GetLastError()); return 0; } // Inizializzo la DCB con i parametri desiderati (non a piacere: vi sono delle regole) di ricezione/trasmissione dcb.BaudRate = 115200; // velocità dei dati (bit) al secondo dcb.ByteSize = 7; // numero di bit dcb.Parity = 0; // parità dcb.StopBits = 0; // numero di bits di stop // e setto la porta COM con i valori sopra (9800/7/0/2) // leggere con attenzione sul Win32 SDK gli ulteriori parametri di questa struttura fSuccess = SetCommState(hCom, &dcb); // verifica dell'effettivo settaggio if(!fSuccess) { printf("settaggio non riuscito!!!: EI=%d",GetLastError()); CloseHandle(hCom); return 0; } //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //apro il file da trasferire fp = fopen("miofile.txt","r"); if(!fp) { printf("problemi nel file!!\nEI=%d",GetLastError()); CloseHandle(hCom); return 0; } printf("trasmissione in corso\n"); //invio i dati alla porta COM while( ( lpBuffer = fgetc(fp)) != EOF) { printf("%c",lpBuffer); bResult = WriteFile(hCom, &lpBuffer, NumeroDiBytesDaScrivere, &NumeroDiBytesScritti, NULL) ; if(!bResult) { printf("errore in trasmissione dati"); // da studiare col valore di ritorno della GetLasError(); fclose(fp); CloseHandle(hCom); return 0; } } //end while( ( lpBuffer = fgetc(fp)) != EOF) //end while( ( lpBuffer = fgetc(fp)) != EOF) // chiudo il file trasmesso ReadFile(hCom, &lpBuffer, NumeroDiBytesDaScrivere, &NumeroDiBytesScritti, NULL); printf("carattere:%c\n",lpBuffer); ReadFile(hCom, &lpBuffer, NumeroDiBytesDaScrivere, &NumeroDiBytesScritti, NULL); printf("carattere:%c\n",lpBuffer); ReadFile(hCom, &lpBuffer, NumeroDiBytesDaScrivere, &NumeroDiBytesScritti, NULL); printf("carattere:%c\n",lpBuffer); ReadFile(hCom, &lpBuffer, NumeroDiBytesDaScrivere, &NumeroDiBytesScritti, NULL); fclose(fp); //chiudo la porta COM bResult = CloseHandle(hCom); if(!bResult) printf("errore sulla chiusura della porta COM\n"); printf("FILE TRANSFER END\n"); return 0; }

					
					
					
						
  Rispondi quotando