[comp.sys.mac.programmer] Handshaking signals

mcli@joker (Maurice Ling) (06/17/89)

Hello everyone again,

Thanks for the help on programming the serial port.  What I have to figure
out now is what kind of values I should put in the flags struct to set up
various handshaking signals.  I need this to be able to communicate with
a scanner.  

Thanks again!

Maurice

************************************************************************
*                                                                      *
* Optics...  The wave of the future             **      **      **     *
*                                              *  *    *  *    *  *    *
* BITNET  :  MCLI_SS@UORDBV, MCLISS@UORVM     *       *       *        *
* UUCP    :  ...rochester!uhura!mcli         **      **      **        *
* Internet:  mcli@uhura.cc.rochester.edu    ***     ***     ***        *
*                                         *****   *****   *****        *       
************************************************************************

---------------------------------------------------------------------------
#include <stdio.h>
#include <serialDvr.h>
#include <DeviceMgr.h>
#include <MacTypes.h>
#include <strings.h>
#include <EventMgr.h>

EventRecord myEvent;

main()
{
	Getinfo();
}

Getinfo()
{
	int setup,stuff, err;
	long int count;
	char message[10];
	SerShk flags;
	
	flags.fXOn = '1';
	flags.xOn = '0x17';
	flags.xOff = '0x19';
	flags.fCTS = '1';
	flags.errs = '1';
	flags.evts = '1';
	flags.fInX = '1';
	flags.fDTR = '1';
	
	err = RAMSDOpen(sPortA);
	SerSetBuf(-7,message, 1024);
	printf("%d\n",err);
	stuff = SerHShake (-7,&flags);
	setup = baud300+data8+stop20+noParity;
	printf("%d\n",SerReset(-7,setup));
	while (message != "\n") {
		
		while (1)
		{
			GetNextEvent(everyEvent,&myEvent);
			if (myEvent.what == mouseDown) break;
			getblock();
		}
		printf("Please enter your command> ");
		scanf("%s", message);
		strcat(message, "\r\n");
		count = (long int)strlen(message);
		stuff = FSWrite ( -7, &count, message);
		printf("%d\n",stuff);
		printf("%ld\n",count);
	}
	RAMSDClose(sPortA);
	printf("%d\n",err);
}

getblock()
{
	unsigned char c[1024]; /* big buffer */
	int e; /* error codes */
	register long i; /* index for chars */
	long whatread; /* how many chars are actually waiting */
	
	SerGetBuf(-6, &whatread); /* anything there? */
	if (whatread > 0) {
		if (whatread > 1024) whatread = 1024L;
		/* if more than our buffer (shouldn't happen) coerce to
		 * the buffer size, so we don't go destroying memory.
		 * If there's more, it will have to wait until the next pass
		 */
		e = FSRead(-6, &whatread, c); /* Grab the chars */
		if (e == 0) /* no error, print the characters */
			for (i=0; i< whatread; i++) putch(c[i] & 0x7f);
			/* we mask off the 8th bit, 'cause it doesn't really
			 * mean anything to us.
			 */
	}
}

************************************************************************
*                                                                      *
* Optics...  The wave of the future             **      **      **     *