VBA Beispiel

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
higa
Posts: 6
Joined: Sat Jul 21, 2012 12:47 pm

VBA Beispiel

Post by higa »

Hallo Warior Gemeinde

ich habe meinen ersten IO-Warrier 24 mit der Steuerplatine von Onlinesteuerung erfolgreich zum laufen gebracht und suche nun für meine Anwendung ein prakatisches Beispiel in VBA, damit ich mein Problem lösen kann.

Das Ziel ist es, bei einem VBA-Ereignisses (Mail trifft ein) einen Ausgang ansteuern zu können. Dabei möchte ich die Anbindung möglichst solide machen und nicht über r.exe gehen. Die Sensoren will ich auch auslesen können.

Im Forum und auf der Seite habe ich noch nichts gefunden, welches ich unter MS-Access zum laufen gebracht habe.

Danke für eures hirnen und Antworten

Higa
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: VBA Beispiel

Post by friend-of-rq »

@higa
Dabei möchte ich die Anbindung möglichst solide machen und nicht über r.exe gehen
? ... bitte genauer

Gruss Ralf
higa
Posts: 6
Joined: Sat Jul 21, 2012 12:47 pm

Re: VBA Beispiel

Post by higa »

Hallo Ralf

besten Dank der Nachfrage.

Es gibt unter http://onlinesteuerung.de/Software/ASE_Excel.zip ein Beispiel mit VBA. Dort wird aber unter VBA nur das Hilfsprogramm r.exe angesteuert. So verliert man viel Kontrolle über das Programm.

Ich suche ein einfaches Beispiel, wie man mit VBA direkten Zugriff hat und evtl auch die Verbindung selber überwachen kann und die Sensoren auslesen kann.
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: VBA Beispiel

Post by Christoph Jung »

Also ich hab da mal was ausgearbeitet. Die DLL MUSS sich im System32 Ordner (unter Windows 32 Bit) oder im SysWOW64 (unter Windows 64 Bit, der Ort für 32Bit DLLs) befinden.

Ich habe das ganze nur unter LibreOffice getestet und da gibt es so einige Probleme. Sobald auch nur ein Argument falsch ist oder die DLL nicht vorhanden oder ich das CloseDevice() aufrufe stürzt mein LibreOffice ab. Ich kann es leider nicht mit einem Microsoft Office testen, da ich das nicht besitze. Der Weg mit der r.exe ist warscheinlich der "gesündere" zwecks Absturzsicherheit.

Code: Select all

REM  *****  BASIC  *****

' Attribute VB_Name = "iow"

' Required kernel32 functions
Public Declare Function GetLastError _
    Lib "kernel32" () _
As Long

' IOW SDK V1.5

' IO-Warrior vendor & product IDs
Public Const IOWKIT_VENDOR_ID As Long = &H7C0
Public Const IOWKIT_VID As Long = IOWKIT_VENDOR_ID

' IO-Warrior 40
Public Const IOWKIT_PRODUCT_ID_IOW40 As Long = &H1500
Public Const IOWKIT_PID_IOW40 As Long = IOWKIT_PRODUCT_ID_IOW40

' IO-Warrior 24
Public Const IOWKIT_PRODUCT_ID_IOW24 As Long = &H1501
Public Const IOWKIT_PID_IOW24 As Long = IOWKIT_PRODUCT_ID_IOW24

' IO-Warrior PowerVampire
Public Const IOWKIT_PRODUCT_ID_IOWPV1 As Long = &H1511
Public Const IOWKIT_PID_IOWPV1 As Long = IOWKIT_PRODUCT_ID_IOWPV1
Public Const IOWKIT_PRODUCT_ID_IOWPV2 As Long = &H1512
Public Const IOWKIT_PID_IOWPV2 As Long = IOWKIT_PRODUCT_ID_IOWPV2

' IO-Warrior 56
Public Const IOWKIT_PRODUCT_ID_IOW56 As Long = &H1503
Public Const IOWKIT_PID_IOW56 As Long = IOWKIT_PRODUCT_ID_IOW56

' Max number of pipes per IOW device
Public Const IOWKIT_MAX_PIPES As Long = 2

' pipe names
Public Const IOW_PIPE_IO_PINS As Long = 0
Public Const IOW_PIPE_SPECIAL_MODE As Long = 1

' Max number of IOW devices in system
Public Const IOWKIT_MAX_DEVICES As Long = 16

' IOW Legacy devices open modes
Public Const IOW_OPEN_SIMPLE As Long = 1
Public Const IOW_OPEN_COMPLEX As Long = 2

' first IO-Warrior revision with serial numbers
Public Const IOW_NON_LEGACY_REVISION = &H1010

' IO-Warrior low-level library API functions

Public Declare Function IowKitOpenDevice _
    Lib "iowkit" () _
As Long

Public Declare Sub IowKitCloseDevice _
    Lib "iowkit" _
    (ByVal iowHandle As Long)

Public Declare Function IowKitWrite _
    Lib "iowkit" _
    (ByVal iowHandle As Long, _
     ByVal numPipe As Long, _
     ByRef buffer As Byte, _
     ByVal length As Long _
    ) _
As Long

Public Declare Function IowKitRead _
    Lib "iowkit" _
    (ByVal iowHandle As Long, _
     ByVal numPipe As Long, _
     ByRef buffer As Byte, _
     ByVal length As Long _
    ) _
As Long

Public Declare Function IowKitReadNonBlocking _
    Lib "iowkit" _
    (ByVal iowHandle As Long, _
     ByVal numPipe As Long, _
     ByRef buffer As Byte, _
     ByVal length As Long _
    ) _
As Long

Public Declare Function IowKitReadImmediate _
    Lib "iowkit" _
    (ByVal iowHandle As Long, _
     ByRef Value As Long) _
As Long

' Get number of IOW devices
Public Declare Function IowKitGetNumDevs _
    Lib "iowkit" () _
As Long

' Get Nth IOW device handle
Public Declare Function IowKitGetDeviceHandle _
    Lib "iowkit" _
    (ByVal numDevice As Long) _
As Long

Public Declare Function IowKitSetLegacyOpenMode _
    Lib "iowkit" _
    (ByVal openMode As Long) _
As Long

Public Declare Function IowKitGetProductId _
    Lib "iowkit" _
    (ByVal iowHandle As Long) _
As Long

Public Declare Function IowKitGetRevision _
    Lib "iowkit" _
    (ByVal iowHandle As Long) _
As Long

Public Declare Function IowKitGetThreadHandle _
    Lib "iowkit" _
    (ByVal iowHandle As Long) _
As Long

Public Declare Function IowKitGetSerialNumber _
    Lib "iowkit" _
    (ByVal iowHandle As Long, ByRef serialNumber As Byte) _
As Long

Public Declare Function IowKitSetTimeout _
    Lib "iowkit" _
    (ByVal iowHandle As Long, ByVal TimeOut As Long) _
As Long

Public Declare Function IowKitSetWriteTimeout _
    Lib "iowkit" _
    (ByVal iowHandle As Long, ByVal TimeOut As Long) _
As Long

Public Declare Function IowKitCancelIo _
    Lib "iowkit" _
    (ByVal iowHandle As Long, _
     ByVal numPipe As Long) _
As Long


' IO-Warrior handles
Dim iowHandles(IOWKIT_MAX_DEVICES) As Long
' Number of IOWs
Dim numIows As Long

' Data buffer
' Basic data buffer is 8 bytes long: 1 byte for report id, max 7 bytes for data
Dim data(8) As Byte


Sub Main

    Dim I As Long
    ' Serialnumber of IO-Warrior
    Dim S(18) As Byte      
    ' ProductID of IOWarrior
    Dim Pid As Long
    
    ' Initialize everything
    ' Open device
    iowHandles(0) = IowKitOpenDevice()
    ' Fail if can't open
    If iowHandles(0) = 0 Then
        ' Barf and exit from program
        MsgBox "Can not open device!", 0, "Error"
        End
	Else
		MsgBox "Device Open", 0, "Sucess"
		
		Pid = IowKitGetProductId(iowHandles(0)
	    ' I = IowKitGetSerialNumber(iowHandles(0), S(0))
	    
		MsgBox Pid, 0, "ProductID"
        
    End If

	IowKitCloseDevice(iowHandles(0))

End Sub
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
higa
Posts: 6
Joined: Sat Jul 21, 2012 12:47 pm

Re: VBA Beispiel

Post by higa »

Hallo Christoph

Danke für deine Bemühungen.

Am Schluss der Zeile

Code: Select all

Pid = IowKitGetProductId(iowHandles(0)
fehlt eine schliessende Klammer, sonst läuft das Programm soweit unter Access 2010. Es liest mir eine Seriennummer aus.

Wie funktioniert das nun mit den Ein- und Ausgängen?

"r.exe" liest sicher keine Eingänge aus :(
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: VBA Beispiel

Post by Christoph Jung »

Hmmm da fehlt keine Klammer soweit ich das sehen kann, oder ich bin blind....
Aber wenns unter Office nicht abstürzt ists ja gut. Ich weiß nicht wie stabil VBA unter OpenOffice und LibreOffice ist. Bei mir aber nicht wirklich stabil leider.

Naja da es sich hier im Visual Basic handelt einfach mal in das Beispiel "SimpleIO" für Visual Basic schauen. Da werden Eingänge gesetzt und gelesen.

Hier mal eine Beispielfunktion fürs schreiben:

Code: Select all

Private Sub WriteBytes()
    ' Number of bytes written
    Dim nWritten As Long
    Dim data(8) As Byte

    ' Sicherheitshalber alles auf NULL setzen
        ' Set up Report ID
        data(0) = 0
        ' Set up bytes
        data(1) = &HFF
        data(2) = &HFF
        data(3) = &HFF
        data(4) = &HFF
        data(5) = &HFF
        data(6) = &HFF
        data(7) = &HFF
      
         ' First byte
          data(1) = &H01
         ' If more data() needed, insert after here
         ' data(2) = &HAA
         ' data(3) = &H1F

          ' Write to IOW 24
          nWritten = IowKitWrite(iowHandles(I), IOW_PIPE_IO_PINS, data(0), 3) 
End Sub
Beim Lesen wichtig IowKitSetTimeout() zu setzten oder ReadNonBlocking verwenden, sonst kann es sein das das Programm "hängt" weil es auf neue Daten wartet. IowKitRead() hierfür am besten mit dem Special-Mode 0xFF nutzen (Liest den aktuellen Port-Status aus egal ob neue Daten da sind oder die alten drin sind).

Der Code ist nicht getestet und ist NUR für den IO-Warrior24 gültig (im bezug auf die zurückgelesenen Bytes)

Code: Select all

Private Sub ReadBytes()
    ' Number of bytes written
    Dim nRead As Long
    Dim data(8) As Byte

    IowKitSetTimeout(iowHandles(0), 1000)

    nRead = IowKitRead(iowHandles(0), IOW_PIPE_IO_PINS, data(0), 3)
    ' Oder alternativ     
    ' nRead = IowKitReadNonBlocking(iowHandles(0), IOW_PIPE_IO_PINS, data(0), 3)

End Sub
Über Special Mode ungefähr so:

Code: Select all

Private Sub ReadSpecialBytes()
    ' Number of bytes written
 

    Dim nRead As Long
    Dim nwrite As Long
    Dim data(8) As Byte

    ' Sicherheitshalber alles auf NULL setzen
        ' Set up Report ID
        data(0) = 0
        ' Set up bytes
        data(1) = &HFF
        data(2) = &HFF
        data(3) = &HFF
        data(4) = &HFF
        data(5) = &HFF
        data(6) = &HFF
        data(7) = &HFF

    IowKitSetTimeout(iowHandles(0), 1000)

         ' First byte is controlling standard LED
          data(1) = &HFF
        
    nWrite = IowKitWrite(iowHandles(0), IOW_PIPE_SPECIAL_MODE, data(0), 8)  ' IO-Warrior sagen "ICH WILL DATEN"
    nRead = IowKitRead(iowHandles(0), IOW_PIPE_SPECIAL_MODE, data(0), 8)   ' Lesen

    ' Daten sind in data() gespeichert



End Sub
Wie gesagt der Code ist nicht getestet, sollte aber klappen. Nicht vergessen IowKitOpenDevice() bei Programmstart aufrufen und IowKitCloseDevice() beim beenden (Aber UNBEDINGT aufrufen, weil sonst die DLL nicht entladen und beendet wird).
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
higa
Posts: 6
Joined: Sat Jul 21, 2012 12:47 pm

Re: VBA Beispiel

Post by higa »

Hallo Christoph

(Die Programmzeile hat mehr öffnende Klammern als schliessende, bei mir ein Problem)

ich bin am versuchen:

- Schreiben kann ich nur Out3 und Out4 auf der Karte. Alle Werte verändert, keine weiteren Reaktionen

- Der Befehl "IowKitSetTimeout(iowHandles(0), 1000)" geht nicht

- Lesen kann ich mit "IowKitRead" nur Nullwerte

Die Zeile

Code: Select all

"Debug.Print data(0) & "-" & data(1) & "-" & data(2) & "-" & data(3) & "-" & data(4) & "-" & data(5) & "-" & data(6) & "-" & data(7) & "-" & data(8)

sollte doch etwas anzeigen?

- Der Befehl "IowKitReadNonBlocking"stürzt ganz Access ab!

Ich bin, wie du merkst, nicht gerade der VBA - Hirsch. Deshalb suche ich ein Beispiel zum anpassen. So geht nämlich ganz ordentlich! Aber bis jetzt bin ich von einer Lösung noch weit weg.
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: VBA Beispiel

Post by friend-of-rq »

@higa
Ich bin, wie du merkst, nicht gerade der VBA - Hirsch. Deshalb suche ich ein Beispiel zum anpassen.
ich könnte Dir da den IOWSocketServer anbieten :-) ... ist auf jeden Fall Stress freier.
Du musst nur eine Socketverbindung über VB zum Server aufbauen, danach kannst du mit einfachen Text basierten Befehlen alle möglichen IOWs steuern/abfragen/verwalten ...

Gruss Ralf
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: VBA Beispiel

Post by Christoph Jung »

Hmm ich schau mir das morgen mal genauer an. Ich kann nämlich auch nicht wirklich schreiben.
Das VBA skript schreib zwar Daten, aber es kommt nix an. Ich prüf das morgen mal genauer.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: VBA Beispiel

Post by Christoph Jung »

Also ich habe mir jetzt die Testversion von Office 2010 besorgt und folgendens Skript ausgeführt:

Code: Select all

Rem  *****  BASIC  *****

' Attribute VB_Name = "iow"

' Required kernel32 functions
Public Declare Function GetLastError _
    Lib "kernel32" () _
As Long

' IOW SDK V1.5

' IO-Warrior vendor & product IDs
Public Const IOWKIT_VENDOR_ID As Long = &H7C0
Public Const IOWKIT_VID As Long = IOWKIT_VENDOR_ID

' IO-Warrior 40
Public Const IOWKIT_PRODUCT_ID_IOW40 As Long = &H1500
Public Const IOWKIT_PID_IOW40 As Long = IOWKIT_PRODUCT_ID_IOW40

' IO-Warrior 24
Public Const IOWKIT_PRODUCT_ID_IOW24 As Long = &H1501
Public Const IOWKIT_PID_IOW24 As Long = IOWKIT_PRODUCT_ID_IOW24

' IO-Warrior PowerVampire
Public Const IOWKIT_PRODUCT_ID_IOWPV1 As Long = &H1511
Public Const IOWKIT_PID_IOWPV1 As Long = IOWKIT_PRODUCT_ID_IOWPV1
Public Const IOWKIT_PRODUCT_ID_IOWPV2 As Long = &H1512
Public Const IOWKIT_PID_IOWPV2 As Long = IOWKIT_PRODUCT_ID_IOWPV2

' IO-Warrior 56
Public Const IOWKIT_PRODUCT_ID_IOW56 As Long = &H1503
Public Const IOWKIT_PID_IOW56 As Long = IOWKIT_PRODUCT_ID_IOW56

' Max number of pipes per IOW device
Public Const IOWKIT_MAX_PIPES As Long = 2

' pipe names
Public Const IOW_PIPE_IO_PINS As Long = 0
Public Const IOW_PIPE_SPECIAL_MODE As Long = 1

' Max number of IOW devices in system
Public Const IOWKIT_MAX_DEVICES As Long = 16

' IOW Legacy devices open modes
Public Const IOW_OPEN_SIMPLE As Long = 1
Public Const IOW_OPEN_COMPLEX As Long = 2

' first IO-Warrior revision with serial numbers
Public Const IOW_NON_LEGACY_REVISION = &H1010

' IO-Warrior low-level library API functions

Public Declare Function IowKitOpenDevice _
    Lib "iowkit" () _
As Long

Public Declare Sub IowKitCloseDevice _
    Lib "iowkit" _
    (ByVal iowHandle As Long)

Public Declare Function IowKitWrite _
    Lib "iowkit" _
    (ByVal iowHandle As Long, _
     ByVal numPipe As Long, _
     ByRef buffer As Byte, _
     ByVal length As Long _
    ) _
As Long

Public Declare Function IowKitRead _
    Lib "iowkit" _
    (ByVal iowHandle As Long, _
     ByVal numPipe As Long, _
     ByRef buffer As Byte, _
     ByVal length As Long _
    ) _
As Long

Public Declare Function IowKitReadNonBlocking _
    Lib "iowkit" _
    (ByVal iowHandle As Long, _
     ByVal numPipe As Long, _
     ByRef buffer As Byte, _
     ByVal length As Long _
    ) _
As Long

Public Declare Function IowKitReadImmediate _
    Lib "iowkit" _
    (ByVal iowHandle As Long, _
     ByRef Value As Long) _
As Long

' Get number of IOW devices
Public Declare Function IowKitGetNumDevs _
    Lib "iowkit" () _
As Long

' Get Nth IOW device handle
Public Declare Function IowKitGetDeviceHandle _
    Lib "iowkit" _
    (ByVal numDevice As Long) _
As Long

Public Declare Function IowKitSetLegacyOpenMode _
    Lib "iowkit" _
    (ByVal openMode As Long) _
As Long

Public Declare Function IowKitGetProductId _
    Lib "iowkit" _
    (ByVal iowHandle As Long) _
As Long

Public Declare Function IowKitGetRevision _
    Lib "iowkit" _
    (ByVal iowHandle As Long) _
As Long

Public Declare Function IowKitGetThreadHandle _
    Lib "iowkit" _
    (ByVal iowHandle As Long) _
As Long

Public Declare Function IowKitGetSerialNumber _
    Lib "iowkit" _
    (ByVal iowHandle As Long, ByRef serialNumber As Byte) _
As Long

Public Declare Function IowKitSetTimeout _
    Lib "iowkit" _
    (ByVal iowHandle As Long, ByVal TimeOut As Long) _
As Long

Public Declare Function IowKitSetWriteTimeout _
    Lib "iowkit" _
    (ByVal iowHandle As Long, ByVal TimeOut As Long) _
As Long

Public Declare Function IowKitCancelIo _
    Lib "iowkit" _
    (ByVal iowHandle As Long, _
     ByVal numPipe As Long) _
As Long




Public Sub Main()


    ' IO-Warrior handles
    Dim iowHandles(IOWKIT_MAX_DEVICES) As Long

    ' ProductID of IOWarrior
    Dim Pid As Long

    'Return for IowKitSetTimeout
    Dim to AS Long
    
    ' Initialize everything
    ' Open device
    iowHandles(0) = IowKitOpenDevice()
    
    ' Fail if can't open
    If iowHandles(0) = 0 Then
        ' Barf and exit from program
        MsgBox "Can not open device!", 0, "Error"
        End
    Else
        'MsgBox "Device Open", 0, "Sucess"
        
        to = IowKitSetTimeout(iowHandles(0), 1000)  
        Pid = IowKitGetProductId(iowHandles(0))
        
        If Pid = IOWKIT_PID_IOW24 Then
            MsgBox "IO-Warrior24 gefunden", 0, "IO-Warrior"
        Else
            MsgBox Pid, 0, "Product ID"
        End If   
         
    Dim nWritten As Long
    Dim data(8) As Byte

    ' Sicherheitshalber alles auf NULL setzen
         data(0) = &H00
        ' Set up bytes
        data(1) = &H0
        data(2) = &H0
        data(3) = &H0
        data(4) = &H0
        data(5) = &H0
        data(6) = &H0
        data(7) = &H0




        ' Set up Report ID
        data(0) = &H0
        ' Set up bytes
        data(1) = &H1A
        data(2) = &H2B
     
        ' Write to IOW 24
        nWritten = IowKitWrite(iowHandles(0), IOW_PIPE_IO_PINS, data(0), 3)
        
        ' Write must return 3 Bytes by writing IO
        If nWritten = 3 Then
           Debug.Print "Schreiben:" & data(0) & "-" & data(1) & "-" & data(2) & "-" & data(3) & "-" & data(4) & "-" & data(5) & "-" & data(6) & "-" & data(7) & "-" & data(8)

        Else
           Debug.Print "Fehler, irgendwas stimmt nicht"
        End If
        
         data(0) = &HFF
    
        ' Write to IOW 24
        nWritten = IowKitWrite(iowHandles(0), IOW_PIPE_SPECIAL_MODE, data(0), 8)
        ' Read from IOW 24
        nWritten = IowKitRead(iowHandles(0), IOW_PIPE_SPECIAL_MODE, data(0), 8)
        
        Debug.Print "Lesen:" & data(0) & "-" & data(1) & "-" & data(2) & "-" & data(3) & "-" & data(4) & "-" & data(5) & "-" & data(6) & "-" & data(7) & "-" & data(8)
     
        
        
    End If

    IowKitCloseDevice (iowHandles(0))

End Sub
Der Obere Teil ist der selbe wie gehabt. Im unteren Teil (die Main) ist es jetzt auf den IOW24 zugeschnitten.
Bei mir funktioniert es in Word also Makro ohne Fehler.

Die Daten data(1) und data(2) enthalten die Bytes für die Pins / Ports.
Kontrollieren kann man das ganze mit dem SimpleHIDWrite und dem Special Mode 0xFF.
Dasmit ließt man den Port Status aus.
shidw.JPG
shidw.JPG (48.14 KiB) Viewed 14854 times
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
higa
Posts: 6
Joined: Sat Jul 21, 2012 12:47 pm

Re: VBA Beispiel

Post by higa »

Hallo Christoph

ich danke allen, die sich dahinter gesetzt haben ganz herzlich für die Mühe, welche sie sich gemacht haben.

Ich stelle aber fest, dass der Code unter VBA bei weitem weder unter MS-Access noch MS-Word zum Laufen bringen ist. Erste f ehlerhafte Zeilen sind schon bei den Definitionen zu finden :(

Auch erfolgreiche Muster-Programme unter VB, wie das Muster auf der Homepage bringen keine umsetzbaren Aussagen:
Es ist mir unverständlich, welches Bit welche Aus- und Eingänge darstellen soll. Eigentlich wären ja je 8Bit Ein- und Ausgänge zwei Hex-Zeichen und nicht 4x8 "HEXereien". Wäre ja nicht so schlimm, wenn man die entsprechenden Bit noch extrahieren könnte, aber ich habe teilweise die entsprechen, funktionierenden Bit gar nicht gefunden.

Ich werde deshalb nun versuchen mich mit r.exe durchschlagen zu können.

Nochmals besten Dank. Vielleicht finde ich mal noch was und schaue aber weiterhin auf den Post.

Gruss Higa
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: VBA Beispiel

Post by Christoph Jung »

Um was für Fehler handelt es sich denn? Ich hab das durch einen Richtigen Compiler gejagt und der hat nicht gemeckert.
Es ist mir unverständlich, welches Bit welche Aus- und Eingänge darstellen soll. Eigentlich wären ja je 8Bit Ein- und Ausgänge zwei Hex-Zeichen und nicht 4x8 "HEXereien". Wäre ja nicht so schlimm, wenn man die entsprechenden Bit noch extrahieren könnte, aber ich habe teilweise die entsprechen, funktionierenden Bit gar nicht gefunden.
Beim einfachen Input / Output sind alle Bits der Ports Ein- und Ausgänge.
Ein Byte entspricht einem IO-Port und jedes Bit entspricht einem Pin und somit einem Ein-/Ausgang.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
higa
Posts: 6
Joined: Sat Jul 21, 2012 12:47 pm

Re: VBA Beispiel

Post by higa »

der Chip von Onlinesteuerung hat folgendes Schema:

Image

dort sind die Ein- und Ausgänge gesondert ausgeführt. Welcher Chip ist dann das? Auch die Demosoftware zeigt die Möglichkeit einen Schrittschalter im Eingang auf einen Ausgang zu programmieren. Leider ist der Zugriff per VBA für mich unverständlich. Eine Light-Variante mir r.exe habe ich nun zum laufen gebracht. Es wäre aber für mein Projekt sinnvoll die Eingänge auch verwenden zu können.

wie heisst dieser Chip auf der Webseite von Codemercs überhaupt?
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: VBA Beispiel

Post by Christoph Jung »

Wenn ich jetzt wüsst, was für ein Chip gemeint ist, dann wäre es leichter zu helfen.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: VBA Beispiel

Post by Guido Körber »

Nach dem Pinout ist das ein IOW24
Post Reply