File: ptt.c

package info (click to toggle)
wsjtx 2.3.0%2Brepack-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 63,524 kB
  • sloc: cpp: 59,051; f90: 34,130; python: 27,241; ansic: 11,205; fortran: 2,051; sh: 132; makefile: 109
file content (58 lines) | stat: -rw-r--r-- 1,138 bytes parent folder | download | duplicates (2)
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);
}