beautypg.com

Teledyne 7600 - Infrared gas analyzer - communication manual User Manual

Page 41

background image

Teledyne Analytical Instruments

41

1510 '------------- Data receive ----------------------------

1520 PRINT
1530 LENGTH=LOC(1) 'Number of data in receiving buffer

1540 IF LENGTH=0 THEN PRINT "No answer" :END

1550 PRINT "Receiving data < ";
1560 FOR I=1 TO LENGTH

1570 X$=INPUT$(1,#1) 'Taking data from receiving buffer

1580 CC(I)=ASC(X$) 'Digitizing and storing

1590 PRINT RIGHT$("0"+HEX$(CC(I)),2);" "; 'Displaying on screen
1600 NEXT I

1610 CLOSE #1

1620 COUNT=LENGTH-2
1630 GOSUB *CRC.CALC

1700 '

1710 '------------- Transmission error check -----------------------
1720 PRINT

1730 CRC.L$=RIGHT$("0"+HEX$(CRC.L),2)

1740 CRC.H$=RIGHT$("0"+HEX$(CRC.H),2)

1750 PRINT "CRC calculation = ";CRC.L$;" ";CRC.H$
1760 IF CC(LENGTH-1)<>CRC.L THEN GOTO *ER.MESSAGE

1770 IF CC(LENGTH)<>CRC.H THEN GOTO *ER.MESSAGE

1780 GOTO *PRT.RESULT
1790 *ER.MESSAGE

1800 PRINT "Communication error"

1810 END
1900 '

1910 '------------- Display of result ---------------------------

1920 *PRT.RESULT
1930 PRINT

1940 PRINT " Range change ended "

1950 END

3000 '
3010 '------------ CRC calculation ------------------------------

3020 *CRC.CALC 'For contents, refer to CRC calculation flow

3030 CR=&HFFFF
3040 FOR I=1 TO COUNT

3050 CR=CR XOR CC(I)

3060 FOR J=1 TO 8
3070 CT=CR AND &H1

3080 IF CR<0 THEN CH=1 ELSE CH=0:GOTO *CRC.CALC.10

3090 CR=CR AND &H7FFF

3100 *CRC.CALC.10
3110 CR=INT(CR/2)

3120 IF CH=1 THEN CR=CR OR &H4000

3130 IF CT=1 THEN CR=CR XOR &HA001
3140 NEXT J

3150 NEXT I

3160 CRC.L=CR AND &HFF 'Lower byte of CRC calculation
3170 CRC.H=((CR AND &HFF00)/256 AND &HFF) 'Upper byte of CRC

calculation

3180 RETURN

This manual is related to the following products: