' Read comma delimited CSV data file and download to PIC ' ' THE FILE NAME IS FACTORY.CSV BUT THAT CAN BE OVERRIDDEN WITH ANOTHER ' FILENAME WHEN YOU START THE PROGRAM. EG. FACTORY NEWDATA.CSV ' EACH DATA FILE LINE CONTAINS THE DATA FOR 1/10 SEC OF THE ANIMATION. EG. ' 1,0,0,1,1,0,1,1,0,0,1.... ' ' Each column represents one output in the controller. ' The program reads the file and stores each 8 bits as a single byte ' then downloads it. '------------------------------------------------------- ' DEFINE ARRAYS. INCREASE IF NEED MORE STEPS '------------------------------------------------------- DIM A (1:8,1:8) AS BYTE 'INPUT DETAILS DIM B (1:8) AS BYTE 'OUTPUT DETAILS '------------------------------------------------------- ' DEFINE VARIABLES '------------------------------------------------------- DIM I AS INTEGER DIM J AS INTEGER DIM K AS INTEGER DIM LINENO AS INTEGER DIM FILNAM AS STRING '---------------------------------------------------------------------- ' MAINLINE CODE '---------------------------------------------------------------------- OPEN "COM1:2400,N,8,1,RS,CS0,DS0" AS #1 CLS ' GET FILENAME FROM COMMAND LINE ELSE DEFAULT TO FACTORY.CSV IF COMMAND$ = "" THEN FILNAM = "ITRY.CSV" ELSE FILNAM = COMMAND$ ON ERROR GOTO INVFILE 'IN CASE FILE DOESN'T EXIST OPEN FILNAM FOR INPUT AS #2 ' OPEN INPUT FILE ' SEND WAKE-UP CALL TO PIC TO TRIGGER INTERRUPT PRINT #1,REPEAT$(1,CHR$(00)) ' Send 10 hex 00's to com port DELAY 2 ' Send nothing for 2 seconds 'PRINT #1,A 'PRINT A ' COULD USE 'WHILE NOT EOF(1) BUT IT WANTS SOME SPECIAL EOF CHAR ' WHICH ISN'T ALWAYS THERE IF DATA FILE CREATED BY OTHER PROGRAMS SO ' USE 'ON ERROR' TO DETECT EOF MORE RELIABLY INSTEAD. ON ERROR GOTO ENDOFFILE ' WHERE TO BRANCH WHEN REACH END OF FILE ' READ OUTPUT STEPS AND SAVE IN ARRAYS LINENO = 0 WHILE 1 = 1 ' DO FOREVER (UNTIL END OF FILE READ ERROR) INPUT #2,A(1,1),A(1,2),A(1,3),A(1,4),A(1,5),A(1,6),A(1,7),A(1,8),_ A(2,1),A(2,2),A(2,3),A(2,4),A(2,5),A(2,6),A(2,7),A(2,8) ' A(3,1),A(3,2),A(3,3),A(3,4),A(3,5),A(3,6),A(3,7),A(3,8),_ ' A(4,1),A(4,2),A(4,3),A(4,4),A(4,5),A(4,6),A(4,7),A(4,8),_ ' A(5,1),A(5,2),A(5,3),A(5,4),A(5,5),A(5,6),A(5,7),A(5,8),_ ' A(6,1),A(6,2),A(6,3),A(6,4),A(6,5),A(6,6),A(6,7),A(6,8),_ ' A(7,1),A(7,2),A(7,3),A(7,4),A(7,5),A(7,6),A(7,7),A(7,8) ' CONVERT EACH 8 VALUES INTO ONE BYTE FOR I = 1 TO 2 ' CURRENTLY 7 BYTES OF DATA (56 OUTPUTS) B(I) = 0 FOR J = 1 TO 8 ' 8 BITS PER BYTE B(I) = B(I) + (A(I,J) * 2^(8-J)) NEXT NEXT LINENO = LINENO + 1 'SEND THE DATA TO THE PIC PRINT #1,B(1),B(2)',B(3),B(4),B(5),B(6),B(7) PRINT LINENO,B(1),B(2)';B(3);B(4);B(5);B(6);B(7) DELAY 0.20 ' LET PIC KEEP UP WEND ENDOFFILE: PRINT #1,255,255,255',255,255,255,255 ' Dummy final step 'PRINT #1,0,0,0,0,0,0,0 PRINT 255;255;255';255;255;255;255 ' Dummy final step 'PRINT 0;0;0;0;0;0;0;0 CLOSE END INVFILE: PRINT "INPUT FILE " FILNAM " NOT FOUND"; BEEP DELAY 3 END