Aktuelle Zeit: 26.09.2020 08:35

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 28.05.2009 21:24 
Offline

Registriert: 10.11.2004 03:22
COMate ist doch von srod ... :?:

_________________
... machts gut und danke für den fisch ...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 28.05.2009 23:58 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
Kaeru Gaman hat geschrieben:
COMate ist doch von srod ... :?:


Das wäre zu schön um wahr zu sein, wenn es von mir wäre :lol:

Das Einzigste, was ich damit gemacht habe, ist was für viele
Excelfunktionen, wovon leider kein große feedback zurück kam.

Nee, das war die MVCOM (Nicht von mir), die er meinte, die ich nur für
meine Projekte gebraucht habe. Übrigens, die USB2RS232, welche die
einfachste Lösung ist und ebenfalls für einen Lau bei www.pollin.de zu
erhalten ist, lässt sich genauso wie die Serielle Schnittstelle über virtuelle
COM-Ports nutzen, die bei neueren OS automatisch installiert werden. Bei
Win9x ist aber meistens eine CD dabei.

Hier nochmal zur Erinnerung mein alter Thread dazu:

http://www.purebasic.fr/german/viewtopi ... 581#187581

http://www.purebasic.fr/german/viewtopi ... 773#187773

Mit dem aktuellen PB ist leider die MVCOM überflüssig geworden, weil
man damit direkt Funktionen für "Serial Port" enthalten hat.

Gruß Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 29.05.2009 07:38 
Offline

Registriert: 15.10.2004 17:42
Hallo,
Also das mit den USB->Seriell Konvertern kann
ich bestätigen. Hab da ein Vivanco Kabel und
die 8-fach Relaiskarte von Conrad. Den Treiber,
der dem Kabel beiliegt, installieren und gut ist.
Beim Einstecken des Kabels in den USB Port sieht
man dann in der Systemsteuerung, welcher Com
Port angelegt wurde (bei mir immer COM5).

Mein Programm hatte ich zwar damals in XProfan
geschrieben, denke aber, daß es mit den nativen
SerialPort - Befehlen von PB 4.30 genauso gut geht.

_________________
PB 5.60


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 30.05.2009 14:40 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
H.Brill hat geschrieben:
Hallo,
[...]
Beim Einstecken des Kabels in den USB Port sieht
man dann in der Systemsteuerung, welcher Com
Port angelegt wurde (bei mir immer COM5).
[...]


Naja, als Programmierer würde man das doch etwas komfortabler gestalten, einfach diesen Callback hier verwenden und das Programm bekommt mitgeteilt, wenn der Adapter gesteckt/entfernt wird:
Code:
#DBT_DEVICEARRIVAL           = $8000
#DBT_DEVICEQUERYREMOVE       = $8001
#DBT_DEVICEQUERYREMOVEFAILED = $8002
#DBT_DEVICEREMOVEPENDING     = $8003
#DBT_DEVICEREMOVECOMPLETE    = $8004
#DBT_DEVICETYPESPECIFIC      = $8005
#DBT_DEVNODES_CHANGED        = $0007
#DBT_QUERYCHANGECONFIG       = $0017
#DBT_CONFIGCHANGED           = $0018
#DBT_CONFIGCHANGECANCELED    = $0019
#DBT_USERDEFINED             = $FFFF

#DBT_DEVTYP_OEM              = $0000
#DBT_DEVTYP_VOLUME           = $0002
#DBT_DEVTYP_PORT             = $0003
#DBT_DEVTYP_DEVICEINTERFACE  = $0005
#DBT_DEVTYP_HANDLE           = $0006

Procedure MyWindowCallback(WindowID, Message, wParam, lParam)
   Protected Result, a$, K
   Protected *db.DEV_BROADCAST_HDR

   Result = #PB_ProcessPureBasicEvents
   Select Message

      Case #WM_DEVICECHANGE
         If wParam = #DBT_DEVICEARRIVAL
            *db = lParam
            If *db\dbch_devicetype = #DBT_DEVTYP_PORT
                  a$ = PeekS(*db + SizeOf(DEV_BROADCAST_HDR))
                  K  = Val(RemoveString(a$, "COM", #PB_String_NoCase))
                  Debug "COM-Port " + Str(K) + " eingesteckt"
               EndIf
         ElseIf wParam = #DBT_DEVICEREMOVECOMPLETE
            *db = lParam
            If *db\dbch_devicetype = #DBT_DEVTYP_PORT
               a$ = PeekS(*db + SizeOf(DEV_BROADCAST_HDR))
               K  = Val(RemoveString(a$, "COM", #PB_String_NoCase))
               Debug "COM-Port " + Str(K) + " ausgesteckt"
            EndIf
         EndIf

   EndSelect

   ProcedureReturn Result
EndProcedure

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 30.05.2009 16:26 
Offline

Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Hallole und Danke an alle für die Beiträge.
Ich werde mir dann erst mal einen USB<=>COM Adapter besorgen. Dann es mal mit der MVCOM-Lib versuchen. Ich habe ja 2 Aufgaben:
1.) Aus Excel Werte auslesen ( wo ich den DispHepler verwende - was schon fertig ist und in Anwendung, aber eben nicht in PB 4.30 funktoniert )
2.) Eine Erweiterung: Bei einem bestimmtem Ereignis in der Exceltabelle das nicht nur auf dem Bldschirm, sondern auch noch ausserhalb mit einer Lampe darstellen ( als Warnhinweis )

_________________
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 30.05.2009 19:56 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Seit PB4.2(?) brauchst du keine MVCOM-Lib mehr, das kann PB mittlerweile selbst.

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 30.05.2009 20:10 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
>>> 1.) Aus Excel Werte auslesen ( wo ich den DispHepler verwende - was
>>>schon fertig ist und in Anwendung, aber eben nicht in PB 4.30 funktoniert )

Zu PB 4.3 und Excelfunktionen, da hätte ich noch einen Tip. Somit könnte man
die Excelfunktionen als auch die eigenen SerielPort - Funktionen nutzen.

http://www.purebasic.fr/german/viewtopi ... 466#239466

Gruß Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 01.06.2009 10:55 
Offline

Registriert: 15.10.2004 17:42
Hallo,
Ich will mal die Conrad Relais Karte mit PB
ansteuern, komme aber irgendwie nicht weiter.
Die Schnittstellenparameter stimmen soweit.
Habs auch schon mit versch. Variablentypen usw.
probiert.
In XProfan sieht das so aus :

Code:
Proc Senden
   ' 4 Byte - Rahmen zum Senden erstellen
   Pruefsumme% = XOR(XOR(kommando%, adresse%), daten%)
   send$ = Chr$(kommando%) + Chr$(adresse%) + Chr$(daten%) + Chr$(Pruefsumme%)
   WriteCom(f%, send$)
   ComError(f%)
   GetComInput(f%)
   Sleep 1000
EndProc


Ausprobieren ist zwar für euch nicht möglich, aber vielleicht sieht
ja jemand meinen Fehler. Stimmt das so mit der XOR-Verknüpfung ?

Hier mal der Code :
Code:
Global comPort.l, comID.l, Daten.i, Adresse.i, Pruefsumme.i, Kommando.i, Send.s

Macro TestBit(value,bit)
  (value>>bit&1)
EndMacro

Macro SetBit(value,bit)
  (1 << bit | value)
EndMacro

Macro ClrBit(value,bit)
  (~(1 << bit) & value)
EndMacro

Daten = 0
Kommando = 1
Adresse = 1

Procedure Senden()
Dim Buffer.b(4)
   Send = Space(4)
   Pruefsumme = (Kommando XOr Adresse) XOr Daten
   Send = Chr(Kommando) + Chr(Adresse) + Chr(Daten) + Chr(Pruefsumme)
   Buffer(0) = Kommando
   Buffer(1) = Adresse
   Buffer(2) = Daten
   Buffer(3) = Pruefsumme
   WriteSerialPortData(comID, @Send, 4)
   
EndProcedure
 
If OpenWindow(0, 10, 10, 400, 400, "Schalt - Relais", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
   ButtonGadget(1,5, 10,100, 20, "Ende")
   ButtonGadget(2,120, 10, 100, 20, "Setze")
   CheckBoxGadget(10, 120,  100, 100, 20, "Relais 1")
   CheckBoxGadget(11, 120,  130, 100, 20, "Relais 2")
   CheckBoxGadget(12, 120,  160, 100, 20, "Relais 3")
   CheckBoxGadget(13, 120,  190, 100, 20, "Relais 4")
   CheckBoxGadget(14, 120,  220, 100, 20, "Relais 5")
   CheckBoxGadget(15, 120,  250, 100, 20, "Relais 6")
   CheckBoxGadget(16, 120,  280, 100, 20, "Relais 7")
   CheckBoxGadget(17, 120,  310, 100, 20, "Relais 8")
 
   Quit = 0
   comID = OpenSerialPort(#PB_Any, "COM5", 19200, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
   If comID And IsSerialPort(comID)
      Senden()
     MessageRequester("Info", "COM5: verfügbar !", 0)
   Else
       MessageRequester("Fehler", "COM5: NICHT verfügbar !", 0)
       End
   EndIf   
   Repeat
   ; Hier kommt die Event - Schleife
    EventID.l = WaitWindowEvent()
    ; Event abwarten und auswerten
    Select EventID
       Case #PB_Event_CloseWindow
          ; X im rechts oben für Schließen gedrückt.
          Quit = 1
       Case #PB_Event_Gadget ; Event für Gadgets
         Select EventGadget()   
            Case 1
               ; Ende - Button gedrückt
               Quit = 1
            Case 2
             ; Setzen - Button gedrückt
             If GetGadgetState(10) = 1
                Daten = SetBit(Daten, 0)
             Else
                Daten = ClrBit(Daten, 0)
             EndIf
             If GetGadgetState(11) = 1
                Daten = SetBit(Daten, 1)
             Else
                Daten = ClrBit(Daten, 1)
             EndIf
             If GetGadgetState(12) = 1
                Daten = SetBit(Daten, 2)
             Else
                Daten = ClrBit(Daten, 2)
             EndIf
             If GetGadgetState(13) = 1
                Daten = SetBit(Daten, 3)
             Else
                Daten = ClrBit(Daten, 3)
             EndIf
             If GetGadgetState(14) = 1
                Daten = SetBit(Daten, 4)
             Else
                Daten = ClrBit(Daten, 4)
             EndIf   
             If GetGadgetState(15) = 1
                Daten = SetBit(Daten, 5)
             Else
                Daten = ClrBit(Daten, 5)
             EndIf
             If GetGadgetState(16) = 1
                Daten = SetBit(Daten, 6)
             Else
                Daten = ClrBit(Daten, 6)
             EndIf
             If GetGadgetState(17) = 1
                Daten = SetBit(Daten, 7)
             Else
                Daten = ClrBit(Daten, 7)
             EndIf
             Kommando = 3
             Adresse = 1
             Senden()
               
       EndSelect
    EndSelect
   Until Quit = 1
EndIf
CloseSerialPort(comID)
End

_________________
PB 5.60


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 01.06.2009 11:10 
Offline

Registriert: 10.11.2004 03:22
H.Brill hat geschrieben:
Stimmt das so mit der XOR-Verknüpfung ?
Code:
Pruefsumme = (Kommando XOr Adresse) XOr Daten

nope!

du musst schon eine bitweise Verknüpfung benutzen, keine logische.

du schreibst ja auch nicht
Code:
(value >> bit And 1)
oder
Code:
(1 << bit Or value)

_________________
... machts gut und danke für den fisch ...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 01.06.2009 11:47 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
Genauer gesagt, das "XOR" durch ein "!" ersetzen

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


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

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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:  

 


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