Page 2 of 2 FirstFirst 1 2
Results 16 to 22 of 22

Thread: Raar probleem

  1. #16
    Quote Originally Posted by Hengelmolen View Post
    Ik denk dat ik het probleem gevonden heb, ik heb de opdrachten wat meer over de tijd verdeelt.
    De opdrachten heb ik in 4 delen per seconde gezet. In het laatste tijdsdeel zaten te veel opdrachten van en naar de USB toe.
    Door het verplaatsen van opdrachten uit tijdsdeel4 naar tijdsdeel3 werkt het programma wel, althans daar lijkt het nu op.
    Nog even verder testen of dit het ook echt is (je moet voozichtig zijn), maar ik laat het nog weten.

    Gr Theo
    Nee, dit is het ook niet.

    Nu heb ik de boolean vervangen door een Byte en zo te zien werkt het, ik krijg geen storing meer????? Wel een paardenmiddel.
    En waarom de boolean raar doet geen idee.

  2. #17
    Dat lijkt me ook niet echt de oplossing.
    Je hebt gewoon een probleem in je programma.
    Alleen wij zullen nooit aan kunnen geven waarom met de informatie die je gegeven hebt.

  3. #18

    Unhappy

    Quote Originally Posted by rvk View Post
    Dat lijkt me ook niet echt de oplossing.
    Je hebt gewoon een probleem in je programma.
    Alleen wij zullen nooit aan kunnen geven waarom met de informatie die je gegeven hebt.
    Nee, hiermee verdien ik niet de hoofdprijs. Ik morgen nog maar eens verder zoeken, wie weet kom ik nog iets tegen wat niet klopt.

    Maar alvast bedankt.

  4. #19
    I7 7700K 32Gb Win10 Pro Wok's Avatar
    Join Date
    Dec 2002
    Location
    Alkmaar
    Posts
    1,996
    Als je opdrachten in een treintje moet afwerken, en dat de volgende moet wachten totdat de voorganger klaar is is het handig om in je routine een vlag te zetten.
    Zolang de vlag actief is blijf je wachten totdat de routine een result meld, dan ga door met de volgende.(wel een max tijdroutine met een timer mee laten lopen, dan kan je bij onverwachte problemen toch netjes afsluiten)
    Als je de opdrachten nu verzameld in een list o.i.d, dan kan je ze sequentieel afhandelen zonder dat je programma daar last van heeft en door kan draaien.
    10.3.3, Delphi2010, of Lazarus 2.0.10

  5. #20
    Quote Originally Posted by Wok View Post
    Als je opdrachten in een treintje moet afwerken, en dat de volgende moet wachten totdat de voorganger klaar is is het handig om in je routine een vlag te zetten.
    Zolang de vlag actief is blijf je wachten totdat de routine een result meld, dan ga door met de volgende.(wel een max tijdroutine met een timer mee laten lopen, dan kan je bij onverwachte problemen toch netjes afsluiten)
    Als je de opdrachten nu verzameld in een list o.i.d, dan kan je ze sequentieel afhandelen zonder dat je programma daar last van heeft en door kan draaien.


    Het probleem is opgelost, ik heb 2 dingen gedaan.
    Volgens een ander form (van de fabrikant van de I/Okaart K8055) komt het probleem meer voor, het inlezen van sensors kost tijd.
    Daar wordt dan ook aangeraden om de sensors in een keer in te lezen, dat bespaart tijd.
    Ik heb daarvoor de code readdigitaalchannel verandert in ReadAllDigital. Met deze code krijg je de 5 sensoren opgeteld binnen als een 5 bits getal.
    Dit getal moet je weer ontleden.
    Volgens dit form mag je deze code niet meer dan 10 keer per seconde inzetten. (ik zet hem nu 4x per seconde in)
    Hiervoor las ik de code 5 x 4 = 20 per seconde in, veel te veel dus.

    Maar er was ook nog een ander probleem, ik heb de declaratie Bloktaak :array[1..39 ] of string aangepast naar Bloktaak :array[0..40] of string;

    Nu draait alles zonder problemen

    Uiteindelijk is het dit geworden.


    Bloktaak :array[0..40] of string;


    enz, enz, enz


    For a:=1 to 5 do SensorOud[a]:=Sensor[a];
    Inlees:=ReadAllDigital;
    If Inlees>15 then begin Sensor[5]:=1; Inlees:=inlees-16; end else Sensor[5]:=0;
    If Inlees>7 then begin Sensor[4]:=1; Inlees:=inlees-8; end else Sensor[4]:=0;
    If Inlees>3 then begin Sensor[3]:=1; Inlees:=inlees-4; end else Sensor[3]:=0;
    If Inlees>1 then begin Sensor[2]:=1; Inlees:=inlees-2; end else Sensor[2]:=0;
    If Inlees=1 then begin Sensor[1]:=1 end else Sensor[1]:=0;

    If (Image34.Visible=true) and (SensorOud[1]<>Sensor[1]) then begin
    If Sensor[1]=1 then Image34.Picture.LoadFromFile('Tekeningen/Sen1b.bmp');
    If Sensor[1]=0 then Image34.Picture.LoadFromFile('Tekeningen/Sen1a.bmp');end;

    If (Image35.Visible=true) and (SensorOud[2]<>Sensor[2]) then begin
    If Sensor[2]=1 then Image35.Picture.LoadFromFile('Tekeningen/Sen2b.bmp');
    If Sensor[2]=0 then Image35.Picture.LoadFromFile('Tekeningen/Sen2a.bmp');end;

    If (Image36.Visible=true) and (SensorOud[3]<>Sensor[3]) then begin
    If Sensor[3]=1 then Image36.Picture.LoadFromFile('Tekeningen/Sen3b.bmp');
    If Sensor[3]=0 then Image36.Picture.LoadFromFile('Tekeningen/Sen3a.bmp');end;

    If (Image37.Visible=true) and (SensorOud[4]<>Sensor[4]) then begin
    If Sensor[4]=1 then Image37.Picture.LoadFromFile('Tekeningen/Sen4b.bmp');
    If Sensor[4]=0 then Image37.Picture.LoadFromFile('Tekeningen/Sen4a.bmp');end;

    If (Image38.Visible=true) and (SensorOud[5]<>Sensor[5]) then begin
    If Sensor[5]=1 then Image38.Picture.LoadFromFile('Tekeningen/Sen5b.bmp');
    If Sensor[5]=0 then Image38.Picture.LoadFromFile('Tekeningen/Sen5a.bmp');end;

    If Sensor[1]=1 then begin S1:=1; form4.Shape1.Brush.Color:=Clyellow; end;
    If Sensor[2]=1 then begin S2:=1; form4.Shape2.Brush.Color:=Clyellow; end;
    If Sensor[3]=1 then begin S3:=1; form4.Shape3.Brush.Color:=Clyellow; end;
    If Sensor[4]=1 then begin S4:=1; form4.Shape4.Brush.Color:=Clyellow; end;
    If Sensor[5]=1 then begin S5:=1; form4.Shape5.Brush.Color:=Clyellow; end;

    Gr Theo

  6. #21
    Als Bloktaak je probleem was begrijp ik niet waarom je allerlei code laat zien dat niets met Bloktaak te maken heeft.

    Maar goed... Fijn dat het opgelost is

  7. #22
    Quote Originally Posted by rvk View Post
    Als Bloktaak je probleem was begrijp ik niet waarom je allerlei code laat zien dat niets met Bloktaak te maken heeft.

    Maar goed... Fijn dat het opgelost is

    Ja het belangrijkste is dat het nu werkt, wat misschien opmerkelijk is dat je met z'n I/kaartje van 35 euro maar liefst 40 sensoren per seconde kan inlezen.
    Je moet dan wel multiplexers daarvoor inzetten.

Page 2 of 2 FirstFirst 1 2

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •