05-05-2014 03:47 PM
I tried to use the following converter but it doesn`t work. Diadem says ')' expected in line 1. What is wrong with this code?
Option Explicit 'Erzwingt die explizite Deklaration aller Variablen in einem Script.
Public Function BinaryToDecimal(Binary As String) As Long
Dim n As Long
Dim s As Integer
For s = 1 To Len(Binary)
n = n + (Mid(Binary, Len(Binary) - s + 1, 1) * (2 ^ _
(s - 1)))
Next s
BinaryToDecimal = n
End Function
Public Function DecimalToBinary(DecimalNum As Long) As _
String
Dim tmp As String
Dim n As Long
n = DecimalNum
tmp = Trim(Str(n Mod 2))
n = n \ 2
Do While n <> 0
tmp = Trim(Str(n Mod 2)) & tmp
n = n \ 2
Loop
DecimalToBinary = tmp
End Function
Thanks in advance!
05-06-2014 12:12 AM
VBS differs in syntax from VB. Your method would look like this.
Option Explicit
Function BinaryToDecimal(Binary)
Dim n
Dim s
For s = 1 To Len(Binary)
n = n + (Mid(Binary, Len(Binary) - s + 1, 1) * (2 ^ (s - 1)))
Next
BinaryToDecimal = n
End Function
Function DecimalToBinary(DecimalNum)
Dim tmp
Dim n
n = DecimalNum
tmp = Trim(Str(n Mod 2))
n = n \ 2
Do While n <> 0
tmp = Trim(Str(n Mod 2)) & tmp
n = n \ 2
Loop
DecimalToBinary = tmp
End Function
MsgBox BinaryToDecimal("110")
05-06-2014 10:08 AM
Hi musterman,
Here's the VBScript library of functions I created before DataPlugins shipped in DIAdem 9.1.
Brad Turpin
DIAdem Product Support Engineer
National Instruments
05-06-2014 04:13 PM
Thanks for your solutions! I came a big step further through that.
Now I´m nearly at the solution. I wrote following programm.
The first part reads in special parts of a file from my pc into an array.
The second part converts the binary parts into hex-values. (here only meinArray(0), but I am going to insert a loop)
The third part converts the hex-values in 2`s complement into signed decimal values
The problem is only how to give the values from the second part into the third part. It doesn´t work with the following solution:
'first part
Dim fso, zeile, Textdatei, Zeichen1, Zeichen2, meinArray(128), i, txt
' Zugriff auf das Dateisysten
Set fso = CreateObject("Scripting.FileSystemObject")
Set Textdatei = fso.OpenTextFile("C:\Users\Christoph\Desktop\Projekt\11061543.003",1)
Textdatei.Skip(40960)
do
Zeichen1 = Textdatei.Read(1)
Zeichen2 = Textdatei.Read(1)
meinArray(i)= Zeichen2 & Zeichen1
i=i+1
loop while i<128
For i = LBound(meinArray) To UBound(meinArray)
txt = txt & meinArray(i) & vbCrLf
Next
MsgBox txt
'second part
Function StrToHex(Values) ' useful for debugging!
Dim j, k, TempVal, HexVals
IF NOT IsArray(Values) THEN
TempVal = Values
ReDim Values(0)
Values(0) = TempVal
END IF ' the Values input is a Scaler-- map to a 1 element Array
ReDim HexVals(UBound(Values))
FOR j = 0 TO UBound(Values)
HexVals(j) = ""
FOR k = 0 TO Len(Values(j))-1
HexVals(j) = HexVals(j) & Right("0" & Hex(Asc(Mid(Values(j), k+1, 1))), 2)
NEXT ' k
NEXT ' j
IF NOT IsEmpty(TempVal) THEN
TempVal = HexVals(0)
HexVals = TempVal
END IF ' the Values input was a Scaler-- return a Scaler
StrToHex = HexVals ' returns a Variant array of [Hex][Codes][in][each][Value()]
End Function ' StrToHex()
StrToHex(meinArray(0))
'third part
Function TwoComplement8Bits(StrToHex)
TwoComplement8Bits=CInt(StrToHex)
If TwoComplement8Bits>127 Then
TwoComplement8Bits=-1*((Not (TwoComplement8Bits Or &hff00))+1)
End If
End Function
MsgBox TwoComplement8Bits(StrToHex)