Aktuelle Zeit: 02.07.2020 10:43

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: IO-Warrior
BeitragVerfasst: 29.05.2011 17:41 
Offline

Registriert: 08.02.2010 20:56
Hallo!

Wen es interessiert, ich habe nun mein testprogramm erfolgreich erstellt:

Code:
; IOWARRIOR - Geschwindigkeitsmessung für "SPEEDCAT"
; IOKIT.DLL muss im system32 stehen, IOKIT.LIB  im gleichen VZ wie dieses PB-Programm

start:

OpenWindow(0,0,0,640,480,"Window",#PB_Window_SystemMenu)

ButtonGadget(20,490,430,140,40,"RESET")

TextGadget(4, 10, 140, 55, 15, "PortPuls")
TextGadget(1, 65, 140, 25, 15, "")
TextGadget(5, 10, 200, 55, 15, "Impuls")
TextGadget(2, 65, 200, 25, 15, "")
TextGadget(6, 10, 260, 55, 15, "Sekunden")
TextGadget(3, 65, 260, 25, 15, "")

TextGadget(7, 10, 320, 55, 15, "Impulse")
TextGadget(8, 65, 320, 35, 15, "")
TextGadget(9, 100, 320, 25, 15, "pro")
TextGadget(10, 140, 320, 35, 15, "")
TextGadget(11, 180, 320, 55, 15, "Sekunden")

TextGadget(12, 10, 380, 55, 15, "Speed")
TextGadget(13, 70, 380, 35, 15, "")
TextGadget(14, 120, 380, 55, 15, "cm/Sek")

If LoadFont(0, "Arial", 16)
  SetGadgetFont(#PB_Default, FontID(0))   
EndIf

TextGadget(15, 50, 20, 55, 35, "")
TextGadget(16, 120, 20, 55, 35, "Kmh")

TextGadget(17, 200, 20, 55, 35, "")
TextGadget(18, 260, 20, 60, 35, "Mph")

If LoadFont(1, "Arial", 8)
  SetGadgetFont(#PB_Default, FontID(1))   
EndIf


Import "C:\Users\oz\Desktop\iowarrior\iowkit.lib"
  IowKitOpenDevice() As "_IowKitOpenDevice@0"
  IowKitCloseDevice(devHandle.i) As "_IowKitCloseDevice@4"
  IowKitGetNumDevs() As "_IowKitGetNumDevs@4"
  IowKitGetDeviceHandle(devHandle.i) As "_IowKitGetDeviceHandle@4"
  IowKitRead(devHandle.i, numPipe.l, buffer.l, length.l) As "_IowKitRead@16"
  IowKitWrite(devHandle.i, numPipe.l, buffer.l, length.l) As "_IowKitWrite@16"
  IowKitGetProductId(ioHandle) As "_IowKitGetProductId@4"
  IowKitGetRevision(ioHandle) As "_IowKitGetRevision@4"
  IowKitGetSerialNumber(ioHandle, Serial.s) As "_IowKitGetSerialNumber@8"
  IowKitReadImmediate(ioHandle,buffer.s) As "_IowKitReadImmediate@8"
EndImport

Structure bufferByte
   buffer1.c
   buffer2.c
   buffer3.c
   buffer4.c
   buffer5.c
   buffer6.c
   buffer7.c
   buffer8.c
EndStructure

Define.bufferByte buffer
Define.l ioHandle

numPipe = 1
length = 8
IowKitOpenDevice()
ioHandle = IowKitGetDeviceHandle(1)

      buffer\buffer1 = 255
      buffer\buffer2 = 255
      buffer\buffer3 = 255
      buffer\buffer4 = 255
      buffer\buffer5 = 255

Repeat
  event = WaitWindowEvent(0)
   
  If event = 0

      IowKitWrite(ioHandle, numPipe,buffer,length)
      IowKitRead(ioHandle, numPipe,buffer,length)
       
      If buffer\buffer2=255 And flag = 1:z=z+1:flag=0:impuls=0::EndIf   
      If buffer\buffer2=254:flag=1::EndIf
      If buffer\buffer2=255 And sec >0 : sec=0:s2=0:EndIf

     
      SetGadgetText(1, StrU(buffer\buffer2, #PB_Byte))
     
      SetGadgetText(2, StrU(z, #PB_Long))

     
; IMPLUSE pro SEKUNDE zaehlen - x=1sek Durchlauf
     
      x=x+1
      SetGadgetText(3, StrU(s))
     
      If x = 190
           
        impuls=impuls+z: sec=s2
       
          SetGadgetText(8, StrU(impuls))
       
        If sec >0 And impuls>0
          SetGadgetText(10, StrU(sec))
          umfang=6*3.14 : mm = umfang*impuls
          mmsek = mm / sec
          cmsek.f = mmsek/100
          cmsek87.f=cmsek.f*87
          cmh.f=cmsek87.f*360
          kmh.f=cmh.f/1000
          mph.f=kmh.f/1.66
        EndIf
       
        SetGadgetText(13, StrF(cmsek.f,1))
       
        SetGadgetText(15, StrF(kmh.f,1))
        SetGadgetText(17, StrF(mph.f,1))
     
        z=0:x=0:s=s+1:s2=s2+1
       
      EndIf
     
     
      Select EventGadget()
         
      Case 20
        z=0:x=0:s=0:s2=0:kmh.f=0:mph.f=0: mm=0: impuls=0:sec=0:flag=0:cmsek.f=0

        FreeFont(1):FreeFont(0)
        If LoadFont(2, "Arial", 8)
         SetGadgetFont(#PB_Default, FontID(2))   
       EndIf
       CloseWindow(0)
       Goto start
       
      EndSelect
     
    EndIf
   
   
  Until event=#PB_Event_CloseWindow

IowKitCloseDevice(iohandle)

End



Es werkt vorerst so, wie ich mir das vorstelle - fast...

Hat wer von Euch eine Idee, wie ich exakt eine Sekunde messen kann?
Derzeit habe ich das so hingetrimmt, dass eben ein Zähler so lange addiert wird, bis ein Wert erreicht wurde, der einer Sekunde entspricht.
Ich hätte aber gerne eine exaktere Messung (eine, die immer und überall gleich ist).

Und dann: gibt es nicht eine Möglichkeit, ein Programm aus sich selbst heraus neu zu starten -
so das halt alle Werte auf 0 gesetzt, bzw. gelöscht werden, wie bei einem Neustart?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye