Also, ich hab mir nochmal das Beispielprogramm für VisualBasic
angesehen. Scheint bei VB6 stehengeblieben zu sein. So weit meine ich
die Unterscheide zwischen der alten VB-Welt und der .NET-Welt schon zu
kennen.
Ok, ich benutze Visual Basic .NET.
Weiter oben wurde nach dem Inhalt der DLL gefragt, ich kann wie gesagt
nur mit dem .bas-Modul des alten VB6-Beispielprogrammes dienen, in dem
die DLL-Funktionen deklariert sind:
1 | Attribute VB_Name = "HB628_Module"
|
2 | Option Explicit
|
3 |
|
4 | ' Declare statements for all the functions in the HB628.dll
|
5 | ' NOTE: These statements assume that the DLL file is located in
|
6 | ' the same directory as this project.
|
7 | ' If you change the location of the DLL, be sure to change the location
|
8 | ' in the declare statements also.
|
9 | Public Declare Function HB628_Open Lib "hb628.dll" (ByVal ComPort As Byte, ByVal Timeout As Long) As Boolean
|
10 | Public Declare Function HB628_Close Lib "hb628.dll" () As Boolean
|
11 | Public Declare Function HB628_Read_Channel Lib "hb628.dll" (ByVal Channel As Byte, ByRef Result As Integer, ByRef Error As Byte) As Boolean
|
12 | Public Declare Function HB628_Read_All_Channel Lib "hb628.dll" (ByRef Result_Array As Integer, ByRef Error As Byte) As Boolean
|
13 | Public Declare Function HB628_Set_Digital_Output Lib "hb628.dll" (ByVal Channel As Byte, ByVal Value As Byte, ByRef Error As Byte) As Boolean
|
14 | Public Declare Function HB628_Set_All_Digital_Output Lib "hb628.dll" (ByVal Value As Byte, ByRef Error As Byte) As Boolean
|
15 | Public Declare Function HB628_Set_TimeOut Lib "hb628.dll" (ByVal Value As Byte, ByRef Error As Byte) As Boolean
|
16 |
|
17 |
|
18 | 'Errors
|
19 | Public Const Err_No = 0 'no error
|
20 | Public Const ERR_TX = 1 'Tx error
|
21 | Public Const ERR_RX = 2 'Rx error
|
22 | Public Const ERR_CS = 3 'control sum error
|
23 | Public Const ERR_PARAM = 4 'parameters value error
|
Die Frage ist aber wirklich, brauch ich diese DLL. Macht die überhaupt
etwas anderes/tiefergehendes, als die nötigen 3-Byte-Sequenzen zum
Senden zu erzeugen und die 3-Byte-Antwort abwarten, low- und hibyte
zusammenschrauben und Prüfsumme kontrollieren.
Sowas kann ich mir mittlerweile selbst als Funktionen oder gar class
schreiben, ist ja echt kein Hexenwerk, sondern einfach eine kleine
Fleißaufgabe. Muß ich mir halt einen SerialPort als Steuerelement ins
Projekt holen, aber was ist daran schlimm oder unprofessionell?
Hier mal der Codeschnipsel, der (ohne Prüfsumme und Timeout) den
A/D-Kanal 1 liest:
1 | HB628.Write("c01")
|
2 | While HB628.BytesToRead < 3
|
3 | End While
|
4 | HiByte = HB628.ReadByte
|
5 | LoByte = HB628.ReadByte
|
6 | CheckSum = HB628.ReadByte
|
7 | EngUnits = 256 * HiByte + LoByte
|
HB628 ist der Name, den ich dem SerialPort gegeben habe.
Es gibt einen anderen, älteren Thread, in dem jemand eine c#-class
vorstellt, welche wohl die alte DLL "umhüllt" und zugänglich macht. Hat
mir aber nichts gebracht, weil a) in c# statt VB und b) nach meinem
Wissenstand zu umständlich/unverständlich.
Viele Grüße
Tom.