www.pudn.com > MOXA--DOS.rar > TC-EX2.C


#include	 
#include	"..\..\lib\c\head-c.h" 
#include	"..\..\lib\c\file-c.h" 
#include	"..\..\lib\c\modem-c.h" 
 
long		FileXmitLen, FileExpectLen; 
 
void main(void) 
{ 
	int	i, port_no[32], error, sel; 
	int	total_port, port; 
	char	f_name[80], phone_no[80]; 
	char *	ff_name[5]; 
	int	myfunc(); 
 
	printf("\n"); 
	if ( sio_reset() <= 0 ) { 
	    printf("No Driver Found !\n"); 
	    exit(0); 
	} 
	total_port = sio_getports(port_no, 32); 
	printf("Exist port number : "); 
	for ( i=0; i "); 
	    scanf("%d", &sel); 
	    error = 0; 
	    switch ( sel ) { 
	    case 1: 
		printf("Dial out phone number : "); 
		scanf("%s", phone_no); 
		printf("\n"); 
		error = modem_connect(port, phone_no); 
		break; 
	    case 2: 
		error = modem_connect(port, NULL); 
		break; 
	    case 3: 
		sio_McHangUp(port); 
		printf("\nHang up O.K."); 
		break; 
	    case 4: 
		printf("Waiting for file transfer or press ESC key to abort.\n"); 
		FileXmitLen = FileExpectLen = 0; 
		ff_name[0] = f_name; 
		error = sio_FtZmodemRx(port, ff_name, 1, myfunc, 27); 
		if ( error > 0 ) { 
		    printf("\nReceive file name : %s\n", ff_name[0]); 
		    printf("\nReceive file length : %ld\n", FileXmitLen); 
		    if ( FileExpectLen ) 
			printf("\nExpect file length : %ld\n", FileExpectLen); 
		} 
		break; 
	    case 5: 
		printf("Transfer file name : "); 
		scanf("%s", f_name); 
		printf("Waiting for file transfer or press ESC key to abort.\n"); 
		FileXmitLen = FileExpectLen = 0; 
		error = sio_FtZmodemTx(port, f_name, myfunc, 27); 
		if ( error == 0 ) { 
		    printf("\nTransmit file name : %s\n", f_name); 
		    printf("\nTransmit file length : %ld\n", FileXmitLen); 
		} 
		break; 
	    } 
	} while ( (sel != 6) && (error == 0) ); 
	sio_close(port); 
	if ( error ) 
	    printf("\nError code = %d\n", error); 
} 
 
modem_connect(port, phone_no) 
int	port; 
char *	phone_no; 
{ 
	char	code[80]; 
	int	n; 
 
	printf("Modem Reset..."); 
	if ( sio_McReset(port) >= 0 ) 
	    printf("OK\n"); 
	else { 
	    printf("FAIL\n"); 
	    return(-1); 
	} 
	if ( phone_no == NULL ) { 
	    printf("Set auto-answer mode (connect after 2 rings)\n"); 
	    sio_McAutoAnswer(port, 2); 
	} else { 
	    printf("Dialing (TEL:%s) ... ", phone_no); 
	    if ( (n = sio_McDial(port, phone_no)) < 0 ) { 
		printf("error code = %d!\n", n); 
		return(-1); 
	    } 
	    printf("OK\n"); 
	} 
	printf("Wait connecting or press ESC to abort ..."); 
	while ( 1 ) { 
	    if ( kbhit() && (getch() == 27) ) { 
		printf("user abort !\n"); 
		return(-1); 
	    } 
	    if ( (n = sio_McIsConnect(port, code)) < 0 ) { 
		printf("error code = %d!\n", n); 
		return(-1); 
	    } 
	    if ( n > 0 ) { 
		printf("%s\n", code); 
		break; 
	    } 
	} 
	return(0); 
} 
 
myfunc(filelen, rlen, rbuf, expectlen) 
long		filelen; 
int		rlen; 
char far *	rbuf; 
long		expectlen; 
{ 
 
	if ( filelen != FileXmitLen ) { 
	    FileXmitLen = filelen; 
	    printf("\rXmitLength = %6ld    This call time recv length = %4d", filelen, rlen); 
	} 
	FileExpectLen = expectlen; 
	return(0); 
}