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/* 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 í6Chapter 6 Application ProgramsRS-232 Operation Using Turbo C195