Seite 2 von 3

Verfasst: 07.01.2005 19:56
von DarkDragon
Hmm... bei der DLL die mitgeliefert wird sind einige Funktionen die mir nen Absturz bereiten. Weißt du warum? Ich hab die DLL so mit dem DLL Importer eingebunden in PB:

ELEXS.pbi
ELEXS.dll
OPENCOM 1
TIMEOUTS 1
CLOSECOM 0
SENDBYTE 1
READBYTE 0
DTR 1
RTS 1
TXD 1
GETCOM 0
CTS 0
DSR 0
RI 0
DCD 0
INPUTS 0
TIMEINIT 0
TIMEREAD 0
DELAY 1
REALTIME 0
NORMALTIME 0
Ich weiß da sind doubles drin, macht hier aber hoffe ich mal nichts:
Declare Function OPENCOM Lib "ELEXS" (ByVal OpenString$) As Integer
Declare Sub TIMEOUTS Lib "ELEXS" (ByVal b%)
Declare Sub CLOSECOM Lib "ELEXS" ()
Declare Sub SENDBYTE Lib "ELEXS" (ByVal Dat%)
Declare Function READBYTE Lib "ELEXS" () As Integer
Declare Sub DTR Lib "ELEXS" (ByVal b%)
Declare Sub RTS Lib "ELEXS" (ByVal b%)
Declare Sub TXD Lib "ELEXS" (ByVal b%)
Declare Function GETCOM Lib "ELEXS" () As Integer
Declare Function CTS Lib "ELEXS" () As Integer
Declare Function DSR Lib "ELEXS" () As Integer
Declare Function RI Lib "ELEXS" () As Integer
Declare Function DCD Lib "ELEXS" () As Integer
Declare Function INPUTS Lib "ELEXS" () As Integer
Declare Sub TIMEINIT Lib "ELEXS" ()
Declare Function TIMEREAD Lib "ELEXS" () As Double
Declare Sub DELAY Lib "ELEXS" (ByVal ms As Double)
Declare Sub REALTIME Lib "ELEXS" ()
Declare Sub NORMALTIME Lib "ELEXS" ()
Mein Code:

Code: Alles auswählen

HCom = opencom_("COM1:")

If HCom > 0

#WindowWidth  = 300
#WindowHeight = 80
#WindowFlags  = #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_SystemMenu

hWnd = OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, #WindowFlags, "")

CreateStatusBar(0, WindowID())
AddStatusBarField(#WindowWidth)

TIMEINIT_()
RTS_(1)
DTR_(1)
TXD_(0)

Repeat
  DTR_(1)
  TIMEINIT_()
  While (DSR_() = 0) And (TIMEREAD_() < 2001)
    WindowEvent()
  Wend
  StatusBarText(0, 0, Str(TIMEREAD_()))
  DTR_(0)
Until Quit = 1
CloseCom_()
EndIf
End

Verfasst: 07.01.2005 21:15
von rayman1970
Hi DarkDragon !

Ich habe hier auch ziemliche Probleme mit den Doubles .
Die folgenden beiden Befehle TIMEINIT , TIMEREAD gehen bei mir bisher auch nicht richtig und da muss ich auch noch mal überlegen wie ich die ans laufen bringe ;-)))
In VB geht das ja problemlos , nur leider bei uns noch nicht.....
Jetzt muss ich erst mal scharf nachdenken wie ich das realisieren soll !

Gruss Rayman

Verfasst: 08.01.2005 02:20
von Laurin
@rayman1970: Vielleicht kommst du mithilfe von Assembler ans Ziel. Damit müssten sich auch Doubles verarbeiten lassen können.

Verfasst: 08.01.2005 09:06
von DarkDragon
Laurin hat geschrieben:@rayman1970: Vielleicht kommst du mithilfe von Assembler ans Ziel. Damit müssten sich auch Doubles verarbeiten lassen können.
Oder mittels DoublesUserlib, was ich aber nicht glaube. Auf PB 4.0 warten dauert mir aber definitif zu lange.

[EDIT]
rayman1970 hat geschrieben:Hi DarkDragon !

Ich habe hier auch ziemliche Probleme mit den Doubles .
Die folgenden beiden Befehle TIMEINIT , TIMEREAD gehen bei mir bisher auch nicht richtig und da muss ich auch noch mal überlegen wie ich die ans laufen bringe ;-)))
In VB geht das ja problemlos , nur leider bei uns noch nicht.....
Jetzt muss ich erst mal scharf nachdenken wie ich das realisieren soll !

Gruss Rayman
Hmm... weißt du zufällig wozu diese Funktionen da sind?

Verfasst: 10.01.2005 17:43
von DarkDragon
Sorry für doppelpost, aber sonst würde es keiner mitbekommen. Ich hab hier die TimerProzeduren ersetzt. Außerdem braucht man nun nurnoch die MVCom lib, solange man nicht RI bekommen will. Dies funktioniert mit der Lichtmessungsplatine:

Code: Alles auswählen

Buffer = 1024
HCom = ComOpen("COM1:", 0, Buffer, Buffer)

Global HCom, Quit

Procedure DoEvents()
  Select WindowEvent()
    Case #PB_Event_CloseWindow
      Quit = 1
  EndSelect
EndProcedure

If HCom > 0

#WindowWidth  = 300
#WindowHeight = 80
#WindowFlags  = #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_SystemMenu

hWnd = OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, #WindowFlags, "")

CreateImage(1, #WindowWidth, #WindowHeight-20)
CreateImage(0, #WindowWidth, #WindowHeight-20)

CreateGadgetList(WindowID())
ImageGadget(0, 0, 0, #WindowWidth, #WindowHeight-20, ImageID())

CreateStatusBar(0, WindowID())
AddStatusBarField(#WindowWidth)

ComSetRTS(HCom, 1)
ComSetDTR(HCom, 0)
ComSetTXD(HCom, 0)

Repeat
  While ComGetDSR(HCom) <> 0 : Delay(1) : Wend
  Delay(10)
  T = 0
  Time = ElapsedMilliseconds()
  ComSetDTR(HCom, 1)
  While ComGetDSR(HCom) = 0 And T < 2000 And Quit = 0
    DoEvents()
    T = ElapsedMilliseconds()-Time
  Wend
  ComSetDTR(HCom, 0)
  FreeImage(1)
  GrabImage(0, 1, 2, 0, #WindowWidth, #WindowHeight-20)
  UseImage(0)
  StartDrawing(ImageOutput())
  DrawImage(UseImage(1), 0, 0)
  UseImage(0)
  y = Int((T/2000)*ImageHeight())
  If y < 0 : y = 0 : ElseIf y >= #WindowHeight-20 : y = #WindowHeight-21 : EndIf
  LineXY(#WindowWidth-3, LastY, #WindowWidth-1, y, RGB(0, 255, 0))
  LastY = y
  StopDrawing()
  SetGadgetState(0, UseImage(0))
  StatusBarText(0, 0, Str(T))
  DoEvents()
  Delay(10)
Until Quit = 1
ComClose(HCom)
EndIf
End

Verfasst: 10.01.2005 18:46
von rayman1970
Hi DarkDragon !

Das ist eine super Sache ! Ich werde meine Befehle auf MVCom lib anpassen . Dadurch brauche ich ja die ELEXS.DLL nicht mehr :-) .

Kennst du zufällig ein kostenloses Programm mit dem man Platinen Zeichnungen erstellen kann ? Ich will nämlich zu jedem Befehl ein Platinen Beispiel anfertigen .

Gruss Rayman

Verfasst: 10.01.2005 18:54
von DarkDragon
rayman1970 hat geschrieben:Kennst du zufällig ein kostenloses Programm mit dem man Platinen Zeichnungen erstellen kann ? Ich will nämlich zu jedem Befehl ein Platinen Beispiel anfertigen .
Ich hab hier vor 3 monaten eins gemacht. Es ist allerdings noch nicht fertig. Wenn du willst sende ich dir den source, dann kannst du das Programm weiterentwickeln. Man kann sogar die Schaltung testen. Wenn elektronen durchfließen wird alles hellblau.

[EDIT]Ich habs halt noch auf dem anderen PC.

Verfasst: 10.01.2005 19:18
von rayman1970
DarkDragon hat geschrieben:
Ich hab hier vor 3 monaten eins gemacht. Es ist allerdings noch nicht fertig. Wenn du willst sende ich dir den source, dann kannst du das Programm weiterentwickeln. Man kann sogar die Schaltung testen. Wenn elektronen durchfließen wird alles hellblau.

[EDIT]Ich habs halt noch auf dem anderen PC.
Wenn du mal Zeit hast kannst du es mir ja gerne per mail schicken . Weiter entwickeln werde ich es aber wohl nicht , denn ich habe momentan schon ziemlich viele Baustellen :lol:

Gruss Rayman

Verfasst: 10.01.2005 21:53
von mueckerich
Rayman hat folgendes geschrieben:
Kennst du zufällig ein kostenloses Programm mit dem man Platinen Zeichnungen erstellen kann ? Ich will nämlich zu jedem Befehl ein Platinen Beispiel anfertigen .
Versuch mal das hier, ist für Hobbyzwecke mehr als ausreichend :allright: . Leider nicht ganz unkompliziert, aber wenn am es mal drauf hat kann man die schönsten sachen machen. Und kostet nix :mrgreen: .

http://www.cadsoft.de/freeware.htm

Gruß mueckerich

Verfasst: 11.01.2005 07:02
von DarkDragon
@mückerich: Die Seite funktioniert nicht.