macro 'Open Serial Port [O]'; begin RequiresVersion(1.48); OpenSerial('9600 baud,no parity,eight data,one stop'); end; macro 'Put Serial [P]'; begin PutSerial(GetString('Enter a string:')); end; macro 'Serial Output Test [T]'; var i:integer; begin SetCursor('Watch'); for i:=1 to 10 do PutSerial('The is line ',i:3,chr(13),chr(10)); end; end; macro 'Get Serial and Echo [G]'; var i:integer; ch:string; {actually one char} begin ShowMessage('Press mouse button to abort.'); SetCursor('Watch'); repeat until GetSerial=''; {Flush input buffer} repeat ch:=GetSerial; {returns null string if input buffer empty} if ch<>'' then ShowMessage('char="',ch,'" (',ord(ch):1,')'); PutSerial(ch); if ch=chr(13) then PutSerial(chr(10)); {if return send line feed} until button; end; macro 'Capture Serial Input [C]'; {Captures serial input to a text window.} var x,y,width,height,cc,tc:integer; ch:string; {actually one char} begin RequiresVersion(1.52); OpenSerial('9600'); NewTextWindow('Serial Input'); cc:=0; tc:=0; ShowMessage('Use command-period to abort'); SetCursor('Watch'); repeat repeat tc:=tc+1; ch:=GetSerial until (ch<>'') or button; write(ch); cc:=cc+1; until button; end; macro 'Display Serial InputÉ'; {Displays serial input in a window.} var x,y,width,height,count,line:integer; ch:string; {actually one char} BaudRate:string; begin RequiresVersion(1.48); repeat BaudRate:=Getstring('Baud Rate(1200, 2400, 9600 or 19200)','9600'); until (BaudRate='1200') or (BaudRate='2400') or(BaudRate='9600') or (BaudRate='19200'); OpenSerial(BaudRate); width:=500; height:=500; SetNewSize(width,height); SetForeground(255); SetBackground(0); MakeNewWindow('Serial Input'); SetCursor('Watch'); SetFont('Monaco'); SetText('With background; Left Justified'); SetFontSize(9); MoveTo(8,8); count:=0; line:=0; ShowMessage('Press mouse button to abort'); repeat ch:=GetSerial; if ch<>'' then begin count:=count+1; if (ord(ch)=13) or (count=80) then begin {13=Carriage Return} writeln(ch); count:=0 line:=line+1; if line=54 then begin Clear; moveto(8,8); line:=0; end; end else write(ch); end; until button; end; procedure GetResponse; {Gets responses to commands sent to the Newport 2-axis controller} var ch:string; TimeOutTicks:integer; TimeOUt:boolean; begin response:=''; TimeOutTicks:=TickCount+60; {1 sec.} repeat ch:=GetSerial; if ord(ch)>=32 {ignore control characters} then response:=concat(response,ch); timeout:=TickCount>TimeOutTicks; until (ch=return) or TimeOut; if TimeOut then response:=concat(response,'[1 second time out]'); end; macro 'Test Newport Motion ControllerÉ[N]'; { Simple macro to test the Newport PMC200-P programmable 2-axis motion controller. Before starting, connect the PMC200-P to the Mac's modem port. This can be done using a modem cable and a 9-pin to 25-pin adapter consisting of a female 25-pin connector wired back-to-back with a female 9-pin connector acording to the table below. 9-pin 25-pin 2 <------> 3 (receive data) 3 <------> 2 (transmit data) 5 <------> 7 (signal ground) Note: RS-232 INPUT ECHO MODE must be disabled. The phone number for Newport is 714-253-1665. } var cmd,response,linefeed,return:string; begin RequiresVersion(1.48); linefeed:=chr(10); return:=chr(13); OpenSerial('9600 baud,no parity,eight data,one stop'); repeat cmd:=GetString('Enter PMC200-P Command:','*IDN?'); repeat until GetSerial=''; {flush input buffer} PutSerial(cmd,return,linefeed); GetResponse; PutMessage(response) until button; end;