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 ho ld 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 && !kbhi t()) {
putch(c = *int_buf_out++); int_b uf_count--;
if(int_buf_out >= int_buf + INT_BU F_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 UA RT interrupt */
outportb(MCR,0x1); /* Disable IRQ buffer, DTR = 1 */
/* Disable IRQ4 in 8259 interrupt controller register */
outportb(INT_controller+ 1,inportb(INT_controll er+1) | ~IRQ4_enab);
setvect(IRQ4_int,old vect); /* Restore old interrupt vecto r */
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