inhoud ext. RAM zichtbaar maken.

Arco

Special Member

WAT krijg je niet weg?...
Path hoef je niet te veranderen. Ga gewoon naar de betreffende directory. (of maak een shortcut aan, in een minuutje gebeurd...)

[Bericht gewijzigd door Arco op maandag 7 september 2020 18:31:11 (72%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Je moet naar de directory gaan waar het programma staat waarschijnlijk in Downloads (of net waar je het ding neergezet hebt bij het downloaden):

cd \Users\xxx\Downloads

Waarbij xxx je gebruikersnaam is.
Of anders:

cd %HOMEPATH%\Downloads

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
bprosman

Golden Member

Op 7 september 2020 18:26:46 schreef trix:
dat klopt, maar ik krijg dat niet weg.
niet met selecteren en deleten, ook niet met backspace.

waarschijnlijk kanik ergens in geven dat hij gewoon met C:\ begint,...maar waar ?

https://www.digitalcitizen.life/command-prompt-how-use-basic-commands

De jongere generatie loopt veel te vaak zijn PIC achterna.
Arco

Special Member

Path mag je ook nooit deleten, dan werkt windows niet meer... ;)
Simpelste: In explorer met rechtermuistoets op programma klikken en "create shortcut" (in NL windows iets als "Maak snelkoppeling") kiezen...
Daarna rechtermuistoets op de shortcut -> linkermuistoets op properties en daar parameters invullen als op eerder plaatje.

[Bericht gewijzigd door Arco op maandag 7 september 2020 18:56:50 (23%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

nou ik heb het voor elkaar met:
C:\Users\arjoe\Downloads\Com2GraphV>Com2GraphV PORT=COM4 BAUD=9600
ik krijg ook blauwe vakjes binnen op dat lichtgele scherm, nou eens kijken of ik er een verband in kan ontdekken.
tnx.

later eens kijken of ik een shortcut kan maken, als dat makkelijker werkt.

eigenwijs = ook wijs
Arco

Special Member

Je moet wel geduld hebben: op 9600 baud duurt oversturen van 9000 bytes ongeveer 10 seconden... ;)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

ik kan er nog geen koek van bakken, maar deze week eerst eens kijken of ik wel op de juiste manier de bytes naar buiten stuur.
printscreen van een v.b. wat ik nu zie:

eigenwijs = ook wijs
Arco

Special Member

Bytes worden van boven naar beneden als kolom verwerkt.
Bit 0 is bovenste pixel, bit 7 is onderste pixel in byte.

Ik zou beginnen met een bekend patroon naar de ram te schrijven, dan weet je of het oversturen naar de pc goed gaat.
(de hoofdletter "U" is daar makkelijk voor: die geeft als byte 01010101...)

[Bericht gewijzigd door Arco op maandag 7 september 2020 19:44:27 (46%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

het gaat niet met letters, ik zou wel een vast bit patroon kunnen maken.

klopt als ik zeg dat hij meteen bij de start begint met lezen, en stopt wanneer hij 250 mS geen data heeft gezien.
waarna het programma (Com2GraphV) opnieuw gestart moet worden voor de volgende test ?

eigenwijs = ook wijs
Arco

Special Member

Nee,

Programma wacht op data (eindeloos)
Als er meer als 1 byte ontvangen is, en er komt verder 250ms niets meer, dan wordt de boel op 't scherm gezet.
Programma gaat dan weer wachten op nieuwe data (opnieuw starten hoeft dus nooit)

Heb trouwens een nieuwe versie waarbij je in de titelbalk het laatst ontvangen aantal bytes kunt zien...

Let op: heet Com2Graph en geen Com2GraphV...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

eigenwijs = ook wijs
trix

Golden Member

ben een beetje aan het stoeien met het programma, nou heeft dat licht gele 4-kant een bepaalde hoogte & breedte, is dat te wijzigen ?
ik heb 2 schermen 1 v/d laptop en 1 losse (op zijn kant) voor de ene is hij te hoog en voor de andere te breed, zodat ik hem op beide er niet volledig op krijg.

edit: dat met de totaal ontvangen aantal bytes werkt trouwens _/-\o_

[Bericht gewijzigd door trix op vrijdag 11 september 2020 11:16:40 (11%)

eigenwijs = ook wijs
Arco

Special Member

Het is nu 4x de ware grootte (300*240 -> 1200*960)
Ik kan het 3x (900*720), of 2x (600*480) maken. Op ware grootte (300*240) kan ook, maar is wel lastig om te 'lezen', wordt erg klein...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Arco

Special Member

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
bprosman

Golden Member

Op 11 september 2020 12:14:29 schreef Arco:
Deze is op halve grootte (600*480):

//Beetje offtopic, wat gebruik jij om dit te maken Arco ?

De jongere generatie loopt veel te vaak zijn PIC achterna.
Arco

Special Member

PowerBasic. Voor de geinteresseerden:

pic basic code:


'==================================================================================================
' Com2Graph.bas - Program to show incoming serial data as graphical representation.
' Commandline parms:
'                       BAUD=xxxx       'Default is 115200
'                       PORT=yyyy       'Default is COM3
'                       POS=(HORZ/VERT) 'Default is HORZ
'                       (HORZ is left/right, up/down. VERT is up/down, left/right.
'==================================================================================================
#COMPILE EXE "Com2Graph.exe"
#DIM ALL
#INCLUDE "WIN32API.INC"

Global hDlg, Baudrate, hCom, hTimer As Long                     'Global variables
Global ComPort, sBmp, Position, sCom, Cap As String             '

$DEFCOMPORT     = "COM3"                                        'COM port name
%DEFBAUDRATE    = 115200                                        'Baudrate
%DEFRXBUFFSIZE  = 20000                                         'Size of serial receive buffer
$DEFPOS         = "VERT"                                        'Orientation

%CTRL_GRAPHIC   = 1001                                          'Control identifiers    

' =================================================================================================
' Main 
' =================================================================================================
FUNCTION PBMAIN
  local lRet As Long
  Dialog New Pixels, %HWND_Desktop, _                           'Draw dialog in pixels
                     "Graphic serial data test", _              '
                     , , 620, 500, _                            '
                     %WS_Caption Or %WS_Sysmenu _               '
                     To hDlg                                    '
  Control Add Graphic, hDlg, _                                  'Draw graphic control
                      %CTRL_GRAPHIC, _                          '
                      "",  _                                    '
                      9, 9, 602, 482, %WS_BORDER                '
  Graphic Attach hDlg, %CTRL_GRAPHIC                            '
  Graphic Clear %RGB_LEMONCHIFFON                               'Paint background LemonChiffon
  Dialog Show Modal hDlg, Call MainDialogCB To lRet             'Show dialog
END FUNCTION                                                    '

' =================================================================================================
' Callback function 
' =================================================================================================
Callback Function MainDialogCB()
  Local lCnt, lCnt2, lRet As Long, lsStr As String
  Static RxCnt As Long
  Select Case CbMsg                                             '
    Case %WM_InitDialog                                         '
      SetTimer hDlg, &hFEED, 250, Byval 0                       'Start timer
      Dialog Get Text hDlg To Cap                               'Get caption and add serial
      If OpenComPort()Then                                      'port data to it
        Cap = Cap & " - Port: " & Comport & _                   '
                " , " & "Baudrate: " & Format$(Baudrate)        '
      Else                                                      '
        Cap = Cap & " - Unable to open Comport: " & Comport     'On error opening add it
      End If                                                    '
      Dialog Set Text hdlg, Cap                                 '
    Case %WM_TIMER                                              'Periodic timer
      lRet = Comm(#hCom, RxQue )                                'Process serial data if any 
      If (lRet = RxCnt) Then                                    'is present in buffer after
        If (lRet > 0) Then                                      'time-out
          Comm Recv #hCom, lRet, sCom                           '
          lsStr = Cap & "  (" & Format$(lRet) & " bytes)"       '
          Dialog Set Text hdlg, lsStr                           '
          UpdateScreen()                                        '
          RxCnt = 0                                             '
        End If                                                  '
      Else                                                      '
        RxCnt = lRet                                            '
      End If                                                    '
    Case %WM_DESTROY                                            '
      KillTimer hDlg, &hFEED                                    'Program stopped. Kill timer and
      If hCom Then Close #hCom                                  'close COM port is open
  End Select                                                    '
End Function                                                    '

' =================================================================================================
' UpdateScreen
' =================================================================================================
Function UpdateScreen() As Long
  Local lCnt, lCnt2, lRet As Long
  Graphic Clear %RGB_LEMONCHIFFON                              'Clear graphic control
  Graphic Get Bits to sBmp                                     'Get pixels from bitmap
  For lCnt = 0 To Len(sCom) -1                                 'Change pixels to match serial data
    For lCnt2 = 0 To 7                                         '
      lRet = Asc(sCom, lCnt+1)                                 '
      If bit(lRet, lCnt2) Then                                 '
        If Position = "HORZ" Then                              '
          ShowPixel lCnt Mod 300, (lCnt\300)*8 + lCnt2         '
        Else                                                   '
          ShowPixel lCnt \ 30, (lCnt mod 30)*8 + lCnt2         '
        End If                                                 '
      End If                                                   '
    Next                                                       '
  Next                                                         '
  Graphic Set Bits sBmp                                        'Write back bitmap
End Function                                                   '
  
' =================================================================================================
' ShowPixel    (1 screenpixel is 4x4 'real' pixels in size)
' =================================================================================================
Function ShowPixel(px As long, py As Long) As Long
  Local lPos, lCnt As Long
  For lCnt = 0 To 12 Step 4                                     'Draw 1 pixel in bitmap
    lPos = py*4800*4 + px*4*4 + 9 + lCnt                        'Represents 4x4 screen pixels
    Mid$(sBmp, lPos, 4) = Mkl$(Bgr(%RGB_BLUE))                  '
    Mid$(sBmp, lPos+4800, 4) = Mkl$(Bgr(%RGB_BLUE))             '
    Mid$(sBmp, lPos+9600, 4) = Mkl$(Bgr(%RGB_BLUE))             '
    Mid$(sBmp, lPos+14400, 4) = Mkl$(Bgr(%RGB_BLUE))            '
  Next                                                          '
End Function
  
' =================================================================================================
' Open comport 
' =================================================================================================
Function OpenComPort() As Long
  Local lCnt As Long, lStr As String 
  Baudrate = %DEFBAUDRATE                                       'Default values
  Comport  = $DEFCOMPORT                                        '
  Position = $DEFPOS                                            '
  
  If ParseCount(Command$," ") And Command$ <> "" Then           'See if valid commandline parms
    For lCnt = 1 To ParseCount(Command$, " ")                   'If so, change default values
      lStr = Ucase$(Parse$(Command$, " ", lCnt))                '
      If Instr(lStr, "PORT") Then                               '
        Comport  = Trim$(Remain$(lStr,"="))                     '
      End If                                                    '
      If Instr(lStr, "BAUD") Then                               '
        Baudrate =   Val(Remain$(lStr,"="))                     '
      End If                                                    '
      If Instr(lStr, "POS") Then                                '
        Position  = Ucase$(Trim$(Remain$(lStr,"=")))            '
      End If                                                    '
    Next                                                        '
  End If                                                        '
  hCom = Freefile                                               '
  Comm Open Comport As #hCom                                    'Open COMport and set parameters
    If Err Then Exit Function                                   '
  Comm Set #hCom, Baud=Baudrate                                 '
    If Err Then Exit Function                                   '
  Comm Set #hCom, RXBUFFER=%DEFRXBUFFSIZE                       '
    If Err Then Exit Function                                   '
  Comm Set #hCom, Break=%False                                  '
    If Err Then Exit Function                                   '
  Comm Set #hCom, Stop=0                                        '
    If Err Then Exit Function                                   '
  Comm Reset #hCom, Flow                                        '
    If Err Then Exit Function                                   '
  Comm Set #hCom, Byte=8
    If Err Then Exit Function                                   '
  Function = 1                                                  '
End Function                                                    '

'==================================================================================================
'==================================================================================================
'==================================================================================================
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

zo..dat is nog een behoorlijk programma.

beetje aan de kleine kant nu, maar ik ga eerst eens zorgen dat ik zinnige data binnen krijg. tnx.

[Bericht gewijzigd door trix op vrijdag 11 september 2020 17:58:09 (56%)

eigenwijs = ook wijs
Arco

Special Member

Ik vind 124 regels code niet echt veel... ;)

Meeste programma's die ik maak zijn 5000+ regels, include files niet meegerekend.
(bij mijn laatste grote programma waren dat nog eens enkele tienduizenden regels)

Versie 900*720:

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

eigenwijs = ook wijs

Ah, powerbasic. Daar heb ik ook nog een licentie van liggen.
Zal eens opzoeken of ik die nog ergens kan vinden.

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
Arco

Special Member

De iets oudere versie van Powerbasic (Windows 'classic' 9 en Console 'classic' 5) is in 2016 gratis geworden.

Helaas is de verdere ontwikkeling na de dood van Bob Zale tot stilstand gekomen.
Hij was nogal een autocraat (alles moest zoals hij wilde en deed ook bijna alles zelf).

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

ik krijg nu de data op het scherm die ik verwacht, dus dat is goed.
alleen staan de bits en de bytes nog in de verkeerde volgorde, maar om te testen maakt dat denk ik niet uit.
ik laat later nog wel een printscreen zien waarin dat wat duidelijker word.

eigenwijs = ook wijs
Arco

Special Member

Volgorde is zoals je hier beschrijft: https://www.circuitsonline.net/forum/view/message/2194462#2194462

code:


Byte 1.0      Byte 25.0                                Byte 8977.0
Byte 1.1      Byte 25.1                                Byte 8977.1
Byte 1.2      Byte 25.2                                Byte 8977.2
Byte 1.3      Byte 25.3                            -   Byte 8977.3
Byte 1.4      Byte 25.4                           -    Byte 8977.4
Byte 1.5      Byte 25.5                          -     Byte 8977.5
Byte 1.6      Byte 25.6                         -      Byte 8977.6
Byte 1.7      Byte 25.7                        -       Byte 8977.7
                                              - 
                                             -
Byte 2.0      Byte 26.0                     -          Byte 8978.0
Byte 2.1      Byte 26.1                    -           Byte 8978.1
Byte 2.2      Byte 26.2                   -            Byte 8978.2
Byte 2.3      Byte 26.3                  -             Byte 8978.3
Byte 2.4      Byte 26.4                 -              Byte 8978.4
Byte 2.5      Byte 26.5                -               Byte 8978.5
Byte 2.6      Byte 26.6               -                Byte 8978.6
Byte 2.7      Byte 26.7              -                 Byte 8978.7
                                    - 
                                   -
...           ...                 -                    ...
...           ...                -                     ...
...           ...               -                      ...
                               -
                              -
Byte 24.0      Byte 48.0     -                         Byte 9000.0
Byte 24.1      Byte 48.1    -                          Byte 9000.1
Byte 24.2      Byte 48.2   -                           Byte 9000.2
Byte 24.3      Byte 48.3  -                            Byte 9000.3
Byte 24.4      Byte 48.4                               Byte 9000.4
Byte 24.5      Byte 48.5                               Byte 9000.5
Byte 24.6      Byte 48.6                               Byte 9000.6
Byte 24.7      Byte 48.7                               Byte 9000.7
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

ja, het is moeilijk uit te leggen hoe de opbouw is, maakt voor te testen ook niet uit, het gaat er over dat alle bytes en bits correct in de ext. RAM komen, en dat kan ik zo prima controleren, tnx.

edit: ik moet nog even heel goed over de volgorde gaan nadenken, kan het zo niet meteen zeggen, wat en waar het nou fout gaat.

[Bericht gewijzigd door trix op zaterdag 12 september 2020 14:30:56 (25%)

eigenwijs = ook wijs
trix

Golden Member

hoi, daar ben ik weer :).

ik ben een stuk verder met het een en ander, zover dat ik eigenlijk nu vaker werkstukken moet scannen, om te controleren of het allemaal naar behoren werkt. tot nu toe kon ik 1x iets scannen en daar mijn software mee testen, maar nu moet dat steeds vaker doen, om diverse werkstukken te testen. om te voorkomen dat ik iedere keer door het ext.RAM moet stappen op mijn 4x16 display, is er nu de noodzaak om de inhoud v/d ext.RAM goed zichtbaar te krijgen op mijn scherm compleet met adressen benoeming.
het programma van arco voldoet eigenlijk niet voldoende.

nu zat ik onderstaande nog eens te lezen (post op pag. 1 in dit topic) en dit klinkt als ideaal, nu nog werkend zien te krijgen :).

CSV bestand:
dus puntcomma tussen iedere waarde, enter na iedere regel

die puntcomma, is dat een ascii code ?
die enter iedere regel, is dat bij iedere 300 bytes ?

tnx.

Op 29 augustus 2020 14:23:17 schreef Progger:

een eenvoudige manier is de data (300x300) als CSV door te sturen.
(dus puntcomma tussen iedere waarde, enter na iedere regel)
dan pak je een terminal programma (putty, minicom,etc) en kopieer je het in een CSV bestand. die open je met excel en met "voorwaardelijke opmaak" kleur je iedere cel op inhoud. vervolgens uitzoomen en klaar ;)

eigenwijs = ook wijs