Newsgroup: it.comp.lang.c
Titolo: Modem in c

salve,
qualcuno per favore mi sa dire dove potrei trovare
qualche righa di codice per la comunicazione con un modem
o della documentazione appropriata ?
grazie ciao
                        daniele

 o della documentazione appropriata ?
Dato che i modems moderni si pilotano quasi esclusivamente tramite
comandi in formato testo penso che potrai trovare la dotazione comandi
del tuo modem sul relativo manuale d'uso.
EMG

Certo..... magari se avessi un manuale decende :)
cmq vorrei comandare il modem da dos partendo quasi da zero
con qualche funzione scritta in C



Prova a dare uno sguardo al seguente codice per Borland C++ Builder,
sotto Win95/NT :
#pragma hdrstop
#include 
//---------------------------------------------------------------------------
// A minimal Win32 console serial port application
// Copyright (c) 1999 Dennis Cox. All rights reserved.
// 
den...@durrow.com
 
http://www.durrow.com
#include 
#include 
#include 
void ReceiveCommData(void);
void SendUserData(void);
DWORD WINAPI ThreadofReceiveCommData(LPVOID value);
DWORD WINAPI ThreadofSendUserData(LPVOID value);
// serial handler
HANDLE h;
int main( void )
{
        printf("Connecting com2...\n");
 
        h = CreateFile("com2", GENERIC_READ|GENERIC_WRITE,0,0,
OPEN_EXISTING,0,NULL);
        if(h == INVALID_HANDLE_VALUE)
                {
                        printf("Failed to open com2...\n");
                        return 0;
                }
 
        // set timeouts
        COMMTIMEOUTS cto = {2, 2, 2, 2 ,2 };
        DCB dcb;
 
        if(!SetCommTimeouts(h, &cto))
        {
                printf("SetCommTimeouts failed...\n");
            return 0;
        }
 
        // set DCB
        memset(&dcb, 0, sizeof(dcb));
 
        dcb.DCBlength = sizeof(dcb);
        dcb.BaudRate = 9600;
        dcb.fBinary = 1;
        dcb.fOutxCtsFlow = 0;
        dcb.XoffChar = 0;
        dcb.fOutxDsrFlow = 0;
        dcb.fDtrControl = 0;
        dcb.fRtsControl = 0;
        dcb.Parity = NOPARITY;
        dcb.StopBits = ONESTOPBIT;
        dcb.ByteSize = 8;
        dcb.fNull = 0;
 
        if(!SetCommState(h,&dcb))
        {
                printf("SetCommState failed...\n");
                return 0;
        }
 
        printf("com2 open\n");
 
        // Thread for Receive
        ReceiveCommData();
 
        // Thread for Send
        SendUserData();
 
        while(1);
 
        return 0;
}
void ReceiveCommData(void)
{
        HANDLE recvThread;
        DWORD dwThreadId;
        printf("Starting ReceiveCommData Thread\n");
        recvThread = CreateThread(0,0,ThreadofReceiveCommData,0,0,
&dwThreadId);
        if(recvThread == NULL)
        {
                printf("Failed to create recv thread...\n");
        }
}
void SendUserData(void)
{
        HANDLE sendThread;
        DWORD dwThreadId;
        printf("Starting SendUserData Thread\n");
        sendThread =
CreateThread(0,0,ThreadofSendUserData,0,0,&dwThreadId);
        if(sendThread == NULL)
        {
                printf("Failed to create send thread...\n");
        }
}
DWORD WINAPI ThreadofReceiveCommData(LPVOID value)
{
        char chRead[2] = "\0";
        DWORD dwRead;
        while(1)
        {
          ReadFile(h, &chRead, 1, &dwRead, NULL);
          if(strlen(chRead)!=0)
                printf("%c",chRead[0]);
          chRead[0] = '\0';
        };
}
DWORD WINAPI ThreadofSendUserData(LPVOID value)
{
        char chWrite[2] = "\0";
        DWORD dwWrite;
 
 
        while(1)
        {               
          chWrite[0] = getch();
          WriteFile(h, &chWrite, 1, &dwWrite, NULL);
        };
}
Andrea Laforgia