1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#include <windows.h>
#include <stdio.h>
int ptt_(int *nport, int *ntx, int *ndtr, int *iptt)
{
static HANDLE hFile;
static int open=0, nhold=0;
char s[10];
int i3,i4,i5,i6,i9,i00;
if(*nport==0) {
*iptt=*ntx;
return(0);
}
nhold=0;
if(*nport>100) nhold=1;
if(*ntx && (!open)) {
sprintf(s,"\\\\.\\COM%d",*nport%100);
hFile=CreateFile(
TEXT(s),
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
if(hFile==INVALID_HANDLE_VALUE) {
printf("PTT: Cannot open COM port %d.\n",*nport%100);
return(-1);
}
open=1;
}
if(*ntx && open) {
if(*ndtr)
EscapeCommFunction(hFile,5); //set DTR
else
EscapeCommFunction(hFile,3); //set RTS
*iptt=1;
}
else {
if(*ndtr)
EscapeCommFunction(hFile,6); //clear DTR
else
EscapeCommFunction(hFile,4); //clear RTS
EscapeCommFunction(hFile,9); //clear BREAK
if(nhold==0) {
i00=CloseHandle(hFile);
open=0;
}
*iptt=0;
}
return(0);
}
|