#Lang "fblite" WindowTitle "PCPWM USART out to Graf on http://www.FREEBASIC.net/index.php/download" ' 'Const MaxData=5000,MaxUlong=4294967293'18446744073709551613 'Type UsartStr ' Number As UShort ' Delimiter As Byte 'End Type dim As Integer I,J,K,L,N,i1,i2 Dim As Double AmplitudeD,SinLimitedD,SinAmplifyD,PwmDutyCycleD Dim As Integer DeltaCur,DeltaOut,DelimiterPos,Delimiter1Pos,Amplitude,RowNumber,DelayNum Dim As Integer SinTable,SinAmplify,SinLimited,PwmDutyCycle,PauseToggle,LineEraseToggle Dim As String a, FileNameIn, FileNameOut,DigitsString ScrW=1280: ScrH=1024 AxleD=10 SinMax=2048 DelayNum=1 PauseToggle=-100 LineEraseToggle=100 Print "Written on http://www.FREEBASIC.net" Print "exe name= "; Command( 0 ) Print "Input FileName= ";Command( 1 ) If Len(Command( 1 ))>2 Then Print Space(10);"Usage:" Print "Space = Toggle Pause" Print "Key x = Exit" Print "Key s = Step" Print "Key q = Increment Delay" Print "Key w = Decrement Delay" Print "Key z = Zero Output Column" Print "Yellow = Data from Sinus Table for reference" Print "Cyan = Sinus Table * Amplitude normalized to screen" Print "Red = Sinus Table * Amplitude truncated and normalized to screen" Print "Green = PDC data normalized to screen" Print " ==== Press Space to Un Pause ==== " Else Print "Input File Name is too short" Print Space(10);"Usage:" Print "USART2Graf.exe UsartOutFileName.bin" 'Print "Key w = Decrement Delay" 'Print "Key z = Zero Output Column" 'Print "Yellow = Data from Sinus Table reference" 'Print "Cyan = Sinus Table * Amplitude normalized to screen" 'Print "Red = Sinus Table * Amplitude truncated and normalized to screen" Input "Press enter to Exit", a GoTo EndProg EndIf Screen 21,8,1 ' Set 1280x1024 mode, 256 colors windowed WindowTitle "PCPWM USART out to Graf on http://www.FREEBASIC.net" 'ScreenRes (ScrW,ScrH,8,1) screenset 1,1 Line (0, ScrH/2)-(ScrW, ScrH/2), 10, , &b1010101010101010 ' green dashed line FileNameIn=Command( 1 )'"C:\Microchip\_Prg\RTOS_3F_4431\PCPWM_3F\UartDbgOut_1.txt" FileNameOut="C:\Microchip\_Prg\RTOS_3F_4431\PCPWM_3F\UartExport.txt" Open FileNameIn for Input As 1 'Open FileNameOut for Output As 2 do while not EOF(1) Input #1,a 'Line (Column, 0)-(Column, ScrH), 0, , &b1010101010101010 ' green dashed line DelimiterPos=InStr(a,"%")+1 If DelimiterPos >1 Then ' DigitsString=Mid(a,DelimiterPos,4) ' If Left(DigitsString,1)="F" Then' Negative Number ' Amplitude = ValInt("&HFFFF"+DigitsString) ' Else 'Positive number Amplitude = ValInt("&H0000"+DigitsString) Column=0 LineEraseToggle=100 ' EndIf EndIf 'Locate 29,10:Print DelimiterPos,DigitsString,Amplitude;Space(20) Delimiter1Pos=InStr(a,"#")+1 If Delimiter1Pos >1 Then ' DigitsString=Mid(a,DelimiterPos,4) RowNumber = ValInt("&H0000"+Mid(a,Delimiter1Pos,4)) EndIf 'Locate 29,30:Print DelimiterPos,DigitsString,RowNumber;Space(20) DelimiterPos=InStr(a,"=")+1 If DelimiterPos >1 Then DigitsString=Mid(a,DelimiterPos,4) If Left(DigitsString,1)="F" Then' Negative Number SinTable = ValInt("&HFFFF"+DigitsString) Else 'Positive number SinTable = ValInt("&H0000"+DigitsString) EndIf PSet( Column, ScrH/2+SinTable/4 ), 14 'Column' ' SinTable = ValInt("&H"+Mid(a,DelimiterPos,4)) EndIf DelimiterPos=InStr(a,"*")+1 If DelimiterPos >1 Then DigitsString=Mid(a,DelimiterPos,4) If Left(DigitsString,1)="F" Then' Negative Number SinAmplify = ValInt("&HFFFF"+DigitsString) Else 'Positive number SinAmplify = ValInt("&H0000"+DigitsString) EndIf SinAmplify=(SinAmplify-32639) '0x7f7f If Amplitude > 0 Then AmplitudeD=Amplitude : AmplitudeD=62/AmplitudeD SinAmplifyD=AmplitudeD*SinAmplify PSet( Column, ScrH/2+SinAmplifyD ), 11 ' Else PSet( Column, ScrH/2+SinAmplify ), 11 ' EndIf EndIf DelimiterPos=InStr(a,"+")+1 If DelimiterPos >1 Then DigitsString=Mid(a,DelimiterPos,4) If Left(DigitsString,1)="F" Then' Negative Number SinLimited = ValInt("&HFFFF"+DigitsString) Else 'Positive number SinLimited = ValInt("&H0000"+DigitsString) EndIf SinLimited=(SinLimited-26086)'/4 '0x65E6 If Amplitude > 0 Then AmplitudeD=Amplitude: AmplitudeD=60/AmplitudeD SinLimitedD=AmplitudeD*SinLimited PSet( Column, ScrH/2+SinLimitedD ), 12 ' Else PSet( Column, ScrH/2+SinLimited ), 12 ' EndIf EndIf DelimiterPos=InStr(a,"$")+1 If DelimiterPos >1 Then DigitsString=Mid(a,DelimiterPos,4) ' If Left(DigitsString,1)="F" Then' Negative Number ' PwmDutyCycle = ValInt("&HFFFF"+DigitsString) ' Else 'Positive number PwmDutyCycle = ValInt("&H0000"+DigitsString) ' EndIf ' PwmDutyCycle=PwmDutyCycle/4 ' If Amplitude > 0 Then AmplitudeD=Amplitude: AmplitudeD=370/AmplitudeD PwmDutyCycleD=AmplitudeD*(PwmDutyCycle-4075) PSet( Column, ScrH/2+PwmDutyCycleD ), 10 ' Else PSet( Column, ScrH/2+PwmDutyCycle-4075 ), 10 ' EndIf EndIf AmplitudeD=Amplitude: AmplitudeD=100*AmplitudeD/4096 Locate 45,87:Print "Delay=";DelayNum;" ";a;Space(20) Locate 46,87:Print "Row#Number=";RowNumber;" Sin=Table=";SinTable;Space(20) Locate 47,87:Print "Sin*Amplify=";SinAmplify;" Sin+Limited=";SinLimited;Space(20) Locate 48,87:Print "Amp%litude ";Amplitude;"=";Int(AmplitudeD);"%, Column=";Column;Space(20) Locate 49,87:Print "Pwm$DutyCycle=";PwmDutyCycle;" PDCycleD=";PwmDutyCycleD;Space(20) InputKeyboard: a=InKey() If Len(a)>0 Then Select Case a Case "s" PauseToggle= -100 GoTo OneStepForward Case " " PauseToggle= -1 * PauseToggle 'do 'Loop Until Inkey = " " Case "q" DelayNum=DelayNum+1 If DelayNum > 30 Then DelayNum = 30 Case "w" DelayNum=DelayNum-1 If DelayNum < 0 Then DelayNum = 0 Case "z" Column=0 Case "x" GoTo CloseFiles End Select EndIf If PauseToggle <0 GoTo InputKeyboard 'Locate 3,3:Input " Continue Print ?", a 'If Len(a)>0 Then Exit Do OneStepForward: If Delimiter1Pos >1 Then Column=Column+1 : If Column>ScrW Then Column=0 LineEraseToggle=-100 EndIf EndIf If LineEraseToggle >0 Then Line (Column, 0)-(Column, ScrH), 0 ' Erase Line ', , &b1010101010101010 ' green dashed line Sleep DelayNum Loop Print FileNameIn; Input " File Printed, Press Enter", a CloseFiles: Close #1':Close #2 EndProg: end