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;
}