Agilent Technologies 34401A User Manual

Page 201

Advertising
background image

printf("\nEnter command string:\n");

gets(command); strcat(command,"\n"); /* SCPI requires line feed */

if(command[0] == 0x19) send_ctlc(); /* If ^Y then send ^C */

else if(command[0] != ’q’) {

for(i=0; i<strlen(command); i++) {

/* Wait for DSR and transmitter hold register empty */

while(!(inportb(LSR) & inportb(MSR) & 0x20)) ;

outportb(THR,command[i]); /* Send character */

}

}

if(strpbrk(command,"?")) {

/* If query then get response */

c = 0;

do {

while(int_buf_count && !kbhit()) {

putch(c = *int_buf_out++); int_buf_count--;

if(int_buf_out >= int_buf + INT_BUF_size) int_buf_out = int_buf;

}

if(kbhit()) {

if(getch() == 0x19) send_ctlc(); /* if ^Y then send ^C */

c = 0xa;

/* Terminate loop */

}

}

while(c != 0xa);

}

/* End if */

}

while(command[0] != ’q’);

/* ’q’ to quit program */

outportb(IER,inportb(IER) & 0xfe);

/* Disable UART interrupt */

outportb(MCR,0x1);

/* Disable IRQ buffer, DTR = 1 */

/* Disable IRQ4 in 8259 interrupt controller register */

outportb(INT_controller+1,inportb(INT_controller+1) | ~IRQ4_enab);

setvect(IRQ4_int,oldvect);

/* Restore old interrupt vector */

return(0);

}

RS-232 Operation Using Turbo C

(continued)

Continued on next page

>

6

Chapter 6 Application Programs
RS-232 Operation Using Turbo C

195

Advertising