ASP.NET is a development framework for building web pages and web sites with HTML, CSS, JavaScript and server scripting. ASP.NET supports three different development models: Web Pages, MVC (Model View Controller), and Web Forms.
Monday, August 10, 2009
Change Date Format of System using VB 6.0
First add the below code to Module name "modTime":
Option Explicit
Public Const LOCALE_SLANGUAGE As Long = &H2
Public Const LOCALE_SSHORTDATE As Long = &H1F
Public Const DATE_LONGDATE As Long = &H2
Public Const DATE_SHORTDATE As Long = &H1
Public Const HWND_BROADCAST As Long = &HFFFF&
Public Const WM_SETTINGCHANGE As Long = &H1A
Public Declare Function PostMessage Lib "user32" _
Alias "PostMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Public Declare Function EnumDateFormats Lib "kernel32" _
Alias "EnumDateFormatsA" _
(ByVal lpDateFmtEnumProc As Long, _
ByVal Locale As Long, _
ByVal dwFlags As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(Destination As Any, _
Source As Any, _
ByVal Length As Long)
Public Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Public Declare Function GetLocaleInfo Lib "kernel32" _
Alias "GetLocaleInfoA" _
(ByVal Locale As Long, _
ByVal LCType As Long, _
ByVal lpLCData As String, _
ByVal cchData As Long) As Long
Public Declare Function SetLocaleInfo Lib "kernel32" _
Alias "SetLocaleInfoA" _
(ByVal Locale As Long, _
ByVal LCType As Long, _
ByVal lpLCData As String) As Long
Public Function fGetUserLocaleInfo(ByVal lLocaleID As Long, _
ByVal lLCType As Long) As String
Dim sReturn As String
Dim lReturn As Long
lReturn = GetLocaleInfo(lLocaleID, lLCType, sReturn, Len(sReturn))
If lReturn Then
sReturn = Space$(lReturn)
If lReturn Then
fGetUserLocaleInfo = Left$(sReturn, lReturn - 1)
End If
End If
End Function
Public Function theEnumDates(lDateFormatString As Long) As Long
theEnumDates = 1
End Function
Private Function GetStrFromPointer(sString As Long) As String
Dim lPos As Long
Dim sBuffer As String
sBuffer = Space$(128)
Call CopyMemory(ByVal sBuffer, sString, ByVal Len(sBuffer))
lPos = InStr(sBuffer, Chr$(0))
If lPos Then
GetStrFromPointer = Left$(sBuffer, lPos - 1)
End If
End Function
Then Add Form with Command Button and add the below code in Button_click event:
Dim xCID As Long
Dim xChangedFormat As String
xCID = GetSystemDefaultLCID()
xChangedFormat = "dd/MM/yy"
If xChangedFormat <> "" Then
Call SetLocaleInfo(xCID, LOCALE_SSHORTDATE, xChangedFormat)
Call PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0&, ByVal 0&)
Call EnumDateFormats(AddressOf theEnumDates, xCID, DATE_SHORTDATE)
End If
Thursday, July 23, 2009
Use the toolbar control
Press Ctrl-T to open the Tools dialog. Select Microsoft Windows Common Controls.
Add an ImageList control to the form.
Left-click on the ImageList and select the Properties command.
Click on the Images tab.
Click the Insert Picture button and find your button bitmaps. You can probably find the standard Windows 95 bitmaps in the Common/Graphics section of your computer's programming area. On my computer this is:
C:\Program Files\Microsoft Visual Studio\Common\Graphics\Bitmaps\TlBr_W95
When you have added all your button images, click the Ok button.
Add a Toolbar control to your form.
Left-click on the Toolbar and select the Properties command.
On the General tab, find the ImageList field (3rd from the top in my version). Select the ImageList control from step 2.
Click the Buttons tab.
Click Insert Button to add a button to the Toolbar. Fill in appropriate fields:
Caption appears on the button. For a normal button, leave this blank.
Key is passed to the Toolbar's event handler. This is one way you can tell which button was clicked. Enter a short key word here.
ToolTipText is displayed when the user lets the mouse rest over the button. Enter something short but helpful here. Remember that the user sees only a small picture if Caption is blank, so even very short text is useful here. For example, "Cut" is a good tip for the cut button.
Image is the index of the button's picture in the ImageList control. 0 means no image. 1 is the first image in the ImageList.
Experiment with the other button properties to see how they work.
When you have added all the buttons, click Ok.
Double click on the Toolbar to open the code editor in its ButtonClick event handler. This routine takes as a parameter a Button object representing the button pressed. Look at Button.Key to see which button was pressed.
Note that if you modify the ImageList after you have attached it to the Toolbar, you may mess up the Toolbar. For this reason, you should try to put every picture you will need in the ImageList first. Then initialize the Toolbar.
When the user clicks a button, the Toolbar control's ButtonClick event fires. You can use the buton's Key property to tell which button was clicked.
Private Sub Toolbar1_ButtonClick(ByVal Button As _
MSComctlLib.Button)
Select Case Button.Key
Case "Cut"
MsgBox "Cut"
Case "Copy"
MsgBox "Copy"
Case "Center"
MsgBox "Center"
Case "Snapshot"
MsgBox "Snapshot"
End Select
End Sub
Some additional tips from Gary German:
Toolbar graphics can be assigned from external files at runtime. But, the graphics on each toolbar must all be the same size, otherwise they'll look bad. Specifically, the first button to which a graphic is assigned "wins", and all following graphics will be stretched, if necessary, to fit in that same size.
Max number of buttons on a toolbar is 255.
If you need to create some buttons with graphics, and others with text only, don't use the button's .Caption property - it will cause all buttons to grow vertically because the text is placed below the missing graphic. Instead, use a routine to turn the text you want to display into a graphic, and assign this "graphic" to the image list, and then the toolbar button.
Sunday, July 19, 2009
Center a Form Accounting for the Taskbar and Other Appbars
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Const SM_CXFULLSCREEN = 16
Private Const SM_CYFULLSCREEN = 17
Private Sub Form_Load()
Dim lLeft As Long
Dim lTop As Long
With Me
lLeft = (Screen.TwipsPerPixelX * _
(GetSystemMetrics(SM_CXFULLSCREEN) / 2)) - (.Width / 2)
lTop = (Screen.TwipsPerPixelY * _
(GetSystemMetrics(SM_CYFULLSCREEN) / 2)) - (.Height / 2)
.Move lLeft, lTop
End With
End Sub
Classic VB - What is Option Explicit, and why should I use it?
Putting the "Option Explicit" statement at the top of a code module (which includes forms/modules/classes/...) forces you to declare all variables that you have used in that module, using Dim or similar.
If you try to run your code when a variable hasn't been declared, it will be highlighted, and you will get a clear error: "Variable not defined"
Why should I use it?
You are probably thinking "errors are bad, I don't want that!", but this is actually a very good error - as it tells you about problems that are hard to spot otherwise.
Have a look at this code, can you see why it gives the wrong answers?
vb Code:
Dim MyVariable As Integer MyVariable = 10 MsgBox MyVariable 'should show 10 MyVariable = MyVariable + 1 MsgBox MyVariable 'should show 11 MyVariable = MyVaraible - 2 MsgBox MyVariable 'should show 9 Instead of showing us "10", "11", "9", the messages actually show us "10", "11", "-2"!
The reason for this is that I mis-spelt the variable name (MyVariable = MyVaraible - 2), so VB being 'kind' creates a new variable (which has a default value of 0), and uses it in the calculation.
In the code above it is fairly easy to spot the mistake, but the more code you have the harder it gets to find mistakes like this - generally all you know is that the code is not working properly, but you can't tell why.
Instead of spending lots of time trying to work it out, simply having Option Explicit at the top of the code file will tell you what (and where) the problem is, so all you need to do is correct the variable name (or declare the variable, if it was meant to be a different one!).
Can I have it added to my code automatically?
Yes you can, but only to new files that you create - you will need to add it yourself to existing files.
To have it added to all new files you create, simply select "Tools" -> "Options", and tick the "Require Variable Declaration" box.
Friday, July 17, 2009
VB 6.0 code for Hex to Decimal Conversion
Dim lngOut As Long
Dim i As Integer
Dim c As Integer
For i = 1 To Len(HexNum)
c = Asc(UCase(Mid(HexNum, i, 1)))
Select Case c
Case 65 To 70
lngOut = lngOut + ((c - 55) * 16 ^ (Len(HexNum) - i))
Case 48 To 57
lngOut = lngOut + ((c - 48) * 16 ^ (Len(HexNum) - i))
Case Else
End Select
Next i
HextoDec = lngOut
End Function
VB 6.0 code fro HID Communication and create Excel using data from Hid Device
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Const SW_HIDE = 0
Private Const SW_MAXIMIZE = 3
Private Const SW_MINIMIZE = 6
Private Const SW_RESTORE = 9
Private Const SW_SHOW = 5
Private Const SW_SHOWDEFAULT = 10
Private Const SW_SHOWMAXIMIZED = 3
Private Const SW_SHOWMINIMIZED = 2
Private Const SW_SHOWMINNOACTIVE = 7
Private Const SW_SHOWNA = 8
Private Const SW_SHOWNOACTIVATE = 4
Private Const SW_SHOWNORMAL = 1
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&
Private Const SE_ERR_ACCESSDENIED = 5 ' access denied
Private Const SE_ERR_ASSOCINCOMPLETE = 27
Private Const SE_ERR_DDEBUSY = 30
Private Const SE_ERR_DDEFAIL = 29
Private Const SE_ERR_DDETIMEOUT = 28
Private Const SE_ERR_DLLNOTFOUND = 32
Private Const SE_ERR_NOASSOC = 31
Private Const SE_ERR_OOM = 8 ' out of memory
Private Const SE_ERR_SHARE = 26
Private Const STYLE_NORMAL = 11
Dim bAlertable As Long
Dim Capabilities As HIDP_CAPS
Dim DataString As String
Dim DetailData As Long
Dim DetailDataBuffer() As Byte
Dim DeviceAttributes As HIDD_ATTRIBUTES
Dim DevicePathName As String
Dim DeviceInfoSet As Long
Dim ErrorString As String
Dim EventObject As Long
Dim HIDHandle As Long
Dim HIDOverlapped As OVERLAPPED
Dim LastDevice As Boolean
Dim MyDeviceDetected As Boolean
Dim MyDeviceInfoData As SP_DEVINFO_DATA
Dim MyDeviceInterfaceDetailData As SP_DEVICE_INTERFACE_DETAIL_DATA
Dim MyDeviceInterfaceData As SP_DEVICE_INTERFACE_DATA
Dim Needed As Long
Dim OutputReportData(7) As Byte
Dim PreparsedData As Long
Dim ReadHandle As Long
Dim Result As Long
Dim Security As SECURITY_ATTRIBUTES
Dim Timeout As Boolean
Dim my_data As Byte
Dim qty As Integer
Dim txtline, h As String
Dim i, j, k As Integer
Dim objExcel As New Excel.Application
Dim data() As String
Dim oWB As Excel.Workbook
Dim oWS As Excel.Worksheet
Dim dtlog() As String
Dim log, time, time1, date2, date1 As String
Dim datalg() As String
Dim filename, interval, timediff As String
Dim volt1, volt2, cur1, cur2, bcur, freq1, freq2 As String
Dim vlt1value, vlt2value, cr1value, cr2value, bcrvalue, fr1value, fr2value As String
Dim datear() As String
Dim dtr As String
Dim sFile, sfile1 As String
Dim cell As Integer
Dim chrcur, dishrcur, gntime, nongntime, fault, file3, fault1 As String
Dim exdate, extime As String
Dim edate() As String
Dim etime() As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim bname, bname1, wkflname, sfile2 As String
'Set these to match the values in the device's firmware and INF file.
'0925h is Lakeview Research's vendor ID.
Const MyVendorID = &H1234
Const MyProductID = &H2
Function FindTheHid() As Boolean
'Makes a series of API calls to locate the desired HID-class device.
'Returns True if the device is detected, False if not detected.
Dim Count As Integer
Dim GUIDString As String
Dim HidGuid As GUID
Dim MemberIndex As Long
LastDevice = False
MyDeviceDetected = False
'Values for SECURITY_ATTRIBUTES structure:
Security.lpSecurityDescriptor = 0
Security.bInheritHandle = True
Security.nLength = Len(Security)
'******************************************************************************
'HidD_GetHidGuid
'Get the GUID for all system HIDs.
'Returns: the GUID in HidGuid.
'The routine doesn't return a value in Result
'but the routine is declared as a function for consistency with the other API calls.
'******************************************************************************
Result = HidD_GetHidGuid(HidGuid)
Call DisplayResultOfAPICall("GetHidGuid")
'Display the GUID.
GUIDString = _
Hex$(HidGuid.Data1) & "-" & _
Hex$(HidGuid.Data2) & "-" & _
Hex$(HidGuid.Data3) & "-"
For Count = 0 To 7
'Ensure that each of the 8 bytes in the GUID displays two characters.
If HidGuid.Data4(Count) >= &H10 Then
GUIDString = GUIDString & Hex$(HidGuid.Data4(Count)) & " "
Else
GUIDString = GUIDString & "0" & Hex$(HidGuid.Data4(Count)) & " "
End If
Next Count
'lstResults.AddItem " GUID for system HIDs: " & GUIDString
'******************************************************************************
'SetupDiGetClassDevs
'Returns: a handle to a device information set for all installed devices.
'Requires: the HidGuid returned in GetHidGuid.
'******************************************************************************
DeviceInfoSet = SetupDiGetClassDevs _
(HidGuid, _
vbNullString, _
0, _
(DIGCF_PRESENT Or DIGCF_DEVICEINTERFACE))
Call DisplayResultOfAPICall("SetupDiClassDevs")
DataString = GetDataString(DeviceInfoSet, 32)
'******************************************************************************
'SetupDiEnumDeviceInterfaces
'On return, MyDeviceInterfaceData contains the handle to a
'SP_DEVICE_INTERFACE_DATA structure for a detected device.
'Requires:
'the DeviceInfoSet returned in SetupDiGetClassDevs.
'the HidGuid returned in GetHidGuid.
'An index to specify a device.
'******************************************************************************
'Begin with 0 and increment until no more devices are detected.
MemberIndex = 0
Do
'The cbSize element of the MyDeviceInterfaceData structure must be set to
'the structure's size in bytes. The size is 28 bytes.
MyDeviceInterfaceData.cbSize = LenB(MyDeviceInterfaceData)
Result = SetupDiEnumDeviceInterfaces _
(DeviceInfoSet, _
0, _
HidGuid, _
MemberIndex, _
MyDeviceInterfaceData)
Call DisplayResultOfAPICall("SetupDiEnumDeviceInterfaces")
If Result = 0 Then LastDevice = True
'If a device exists, display the information returned.
If Result <> 0 Then
'******************************************************************************
'SetupDiGetDeviceInterfaceDetail
'Returns: an SP_DEVICE_INTERFACE_DETAIL_DATA structure
'containing information about a device.
'To retrieve the information, call this function twice.
'The first time returns the size of the structure in Needed.
'The second time returns a pointer to the data in DeviceInfoSet.
'Requires:
'A DeviceInfoSet returned by SetupDiGetClassDevs and
'an SP_DEVICE_INTERFACE_DATA structure returned by SetupDiEnumDeviceInterfaces.
'*******************************************************************************
MyDeviceInfoData.cbSize = Len(MyDeviceInfoData)
Result = SetupDiGetDeviceInterfaceDetail _
(DeviceInfoSet, _
MyDeviceInterfaceData, _
0, _
0, _
Needed, _
0)
DetailData = Needed
Call DisplayResultOfAPICall("SetupDiGetDeviceInterfaceDetail")
'Store the structure's size.
MyDeviceInterfaceDetailData.cbSize = _
Len(MyDeviceInterfaceDetailData)
'Use a byte array to allocate memory for
'the MyDeviceInterfaceDetailData structure
ReDim DetailDataBuffer(Needed)
'Store cbSize in the first four bytes of the array.
Call RtlMoveMemory _
(DetailDataBuffer(0), _
MyDeviceInterfaceDetailData, _
4)
'Call SetupDiGetDeviceInterfaceDetail again.
'This time, pass the address of the first element of DetailDataBuffer
'and the returned required buffer size in DetailData.
Result = SetupDiGetDeviceInterfaceDetail _
(DeviceInfoSet, _
MyDeviceInterfaceData, _
VarPtr(DetailDataBuffer(0)), _
DetailData, _
Needed, _
0)
Call DisplayResultOfAPICall(" Result of second call: ")
'Convert the byte array to a string.
DevicePathName = CStr(DetailDataBuffer())
'Convert to Unicode.
DevicePathName = StrConv(DevicePathName, vbUnicode)
'Strip cbSize (4 bytes) from the beginning.
DevicePathName = Right$(DevicePathName, Len(DevicePathName) - 4)
'******************************************************************************
'CreateFile
'Returns: a handle that enables reading and writing to the device.
'Requires:
'The DevicePathName returned by SetupDiGetDeviceInterfaceDetail.
'******************************************************************************
HIDHandle = CreateFile _
(DevicePathName, _
GENERIC_READ Or GENERIC_WRITE, _
(FILE_SHARE_READ Or FILE_SHARE_WRITE), _
Security, _
OPEN_EXISTING, _
0&, _
0)
Call DisplayResultOfAPICall("CreateFile")
'Now we can find out if it's the device we're looking for.
'******************************************************************************
'HidD_GetAttributes
'Requests information from the device.
'Requires: The handle returned by CreateFile.
'Returns: an HIDD_ATTRIBUTES structure containing
'the Vendor ID, Product ID, and Product Version Number.
'Use this information to determine if the detected device
'is the one we're looking for.
'******************************************************************************
'Set the Size property to the number of bytes in the structure.
DeviceAttributes.Size = LenB(DeviceAttributes)
Result = HidD_GetAttributes _
(HIDHandle, _
DeviceAttributes)
Call DisplayResultOfAPICall("HidD_GetAttributes")
If Result <> 0 Then
Else
End If
'Find out if the device matches the one we're looking for.
If (DeviceAttributes.VendorID = MyVendorID) And _
(DeviceAttributes.ProductID = MyProductID) Then
'It's the desired device.
MyDeviceDetected = True
Else
MyDeviceDetected = False
'If it's not the one we want, close its handle.
Result = CloseHandle _
(HIDHandle)
DisplayResultOfAPICall ("CloseHandle")
End If
End If
'Keep looking until we find the device or there are no more left to examine.
MemberIndex = MemberIndex + 1
Loop Until (LastDevice = True) Or (MyDeviceDetected = True)
'Free the memory reserved for the DeviceInfoSet returned by SetupDiGetClassDevs.
Result = SetupDiDestroyDeviceInfoList _
(DeviceInfoSet)
Call DisplayResultOfAPICall("DestroyDeviceInfoList")
If MyDeviceDetected = True Then
FindTheHid = True
'Learn the capabilities of the device
Call GetDeviceCapabilities
'Get another handle for the overlapped ReadFiles.
ReadHandle = CreateFile _
(DevicePathName, _
(GENERIC_READ Or GENERIC_WRITE), _
(FILE_SHARE_READ Or FILE_SHARE_WRITE), _
Security, _
OPEN_EXISTING, _
FILE_FLAG_OVERLAPPED, _
0)
Call DisplayResultOfAPICall("CreateFile, ReadHandle")
Call PrepareForOverlappedTransfer
Else
End If
End Function
Private Function GetDataString _
(Address As Long, _
Bytes As Long) _
As String
'Retrieves a string of length Bytes from memory, beginning at Address.
'Adapted from Dan Appleman's "Win32 API Puzzle Book"
Dim Offset As Integer
Dim Result$
Dim ThisByte As Byte
For Offset = 0 To Bytes - 1
Call RtlMoveMemory(ByVal VarPtr(ThisByte), ByVal Address + Offset, 1)
If (ThisByte And &HF0) = 0 Then
Result$ = Result$ & "0"
End If
Result$ = Result$ & Hex$(ThisByte) & " "
Next Offset
GetDataString = Result$
End Function
Private Function GetErrorString _
(ByVal LastError As Long) _
As String
'Returns the error message for the last error.
'Adapted from Dan Appleman's "Win32 API Puzzle Book"
Dim Bytes As Long
Dim ErrorString As String
ErrorString = String$(129, 0)
Bytes = FormatMessage _
(FORMAT_MESSAGE_FROM_SYSTEM, _
0&, _
LastError, _
0, _
ErrorString$, _
128, _
0)
'Subtract two characters from the message to strip the CR and LF.
If Bytes > 2 Then
GetErrorString = Left$(ErrorString, Bytes - 2)
End If
End Function
Private Sub close_Click()
DataGrid1.Visible = False
DataGrid2.Visible = False
DataGrid3.Visible = False
fraSendAndReceive.Visible = False
Frame1.Visible = False
End Sub
Private Sub cmdContinuous_Click()
'Enables the user to select 1-time or continuous data transfers.
If cmdContinuous.Caption = "Start" Then
qty = 0
Text1.Text = ""
my_data = 0
Text2.Enabled = False
Command1.Enabled = False
Command2.Enabled = False
Label3.Caption = "0% completed"
'Change the command button to Cancel Continuous
cmdContinuous.Caption = "Stop"
'Enable the timer to read and write to the device once/second.
tmrContinuousDataCollect.Enabled = True
Call ReadAndWriteToDevice
Else
'Change the command button to Continuous
cmdContinuous.Caption = "Start"
Text2.Enabled = True
Command1.Enabled = True
Command2.Enabled = True
'Disable the timer that reads and writes to the device once/second.
tmrContinuousDataCollect.Enabled = False
End If
End Sub
Private Sub cmddata_Click()
filename = App.Path & "\Log Files\" & Text4.Text & ".log"
date1 = ""
date2 = ""
time = ""
time1 = ""
Text1.Enabled = True
Command3.Enabled = True
Dim fso As New FileSystemObject
If fso.FileExists(App.Path & "\Excel Files\" & Text5.Text & ".xls") = False Then
Workbooks.open filename:=sfile2
Set oWB = objExcel.Application.ActiveWorkbook
oWB.SaveAs (App.Path & "\Excel Files\" & Text5.Text & ".xls")
objExcel.Visible = True
Else
If MsgBox("Filename already exists.Do you want to repalce it?", vbYesNo + vbCritical, "Deletion") = vbYes Then
Workbooks.open filename:=sfile2
Set oWB = objExcel.Application.ActiveWorkbook
oWB.Save
objExcel.Visible = True
Else
MsgBox "Please Enter Another File Name"
objExcel.Visible = False
End If
End If
End Sub
Private Sub cmdOnce_Click()
Call ReadAndWriteToDevice
End Sub
Private Sub DisplayResultOfAPICall(FunctionName As String)
'Display the results of an API call.
Dim ErrorString As String
ErrorString = GetErrorString(Err.LastDllError)
'Scroll to the bottom of the list box.
lstResults.ListIndex = lstResults.ListCount - 1
End Sub
Private Sub Combo1_Click()
date1 = ""
date2 = ""
time = ""
time1 = ""
interval = Trim(Combo1.Text)
If interval = "All" Then
convertexcel
convertexcelcumdata
convertexcelfaultdata
End If
If interval = "5min" Then
convertexcel5min
convertexcelcumdata
convertexcelfaultdata
End If
If interval = "10 min" Then
convertexcel10min
convertexcelcumdata
convertexcelfaultdata
End If
Text1.Enabled = True
Command3.Enabled = True
Adodc1.ConnectionString = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sfile2
Adodc1.RecordSource = "SELECT * FROM [Sheet1$]"
Adodc1.Refresh
Adodc2.ConnectionString = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sfile1
Adodc2.RecordSource = "SELECT * FROM [Sheet1$]"
Adodc2.Refresh
Adodc3.ConnectionString = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & file3
Adodc3.RecordSource = "SELECT * FROM [Sheet1$]"
Adodc3.Refresh
Set DataGrid1.DataSource = Adodc1
DataGrid1.Refresh
Set DataGrid2.DataSource = Adodc2
DataGrid2.Refresh
Set DataGrid3.DataSource = Adodc3
DataGrid3.Refresh
DataGrid1.Columns("Date").Width = 1000 'test here
DataGrid1.Columns("Time").Width = 1000
DataGrid1.Columns("Voltage(ERRU1)").Width = 1500
DataGrid1.Columns("Voltage(ERRU2)").Width = 1500
DataGrid1.Columns("Current(ERRU1)").Width = 1500
DataGrid1.Columns("Current(ERRU2)").Width = 1500
DataGrid1.Columns("Charging Current").Width = 1500
DataGrid1.Columns("Discharging Current").Width = 1700
DataGrid1.Columns("Alternator RPM").Width = 1500
DataGrid2.Columns("Date").Width = 800 'test here
DataGrid2.Columns("Time").Width = 800
DataGrid2.Columns("Charging Current").Width = 1400
DataGrid2.Columns("Discharging Current").Width = 1700
DataGrid2.Columns("Generation Time").Width = 1400
DataGrid3.Columns("Date").Width = 800 'test here
DataGrid3.Columns("Time").Width = 800
DataGrid3.Columns("Fault").Width = 3100
DataGrid1.Visible = True
End Sub
Private Sub Command1_Click()
Dim fso As New FileSystemObject
If fso.FileExists(App.Path & "\Log Files\" & Text2.Text & ".log") = False Then
Open App.Path & "\Log Files\" & Text2.Text & ".log" For Output As #1
Print #1, Text1.Text
Close #1
MsgBox "File saved successfully!"
Else
If MsgBox("Filename already exists.Do you want to repalce it?", vbYesNo + vbCritical, "Deletion") = vbYes Then
Open App.Path & "\Log Files\" & Text2.Text & ".log" For Output As #1
Print #1, Text1.Text
Close #1
MsgBox "File saved successfully!"
Else
MsgBox "Please Enter Another File Name"
End If
End If
End Sub
Private Sub Command2_Click()
Call Startup
Call FindTheHid
If MyDeviceDetected = True Then
Label4.ForeColor = &HFF00&
Label4.Caption = " Device is connected on port"
cmdContinuous.Enabled = True
Else
Label4.ForeColor = &HFF
Label4.Caption = " Device is not connected on port"
cmdContinuous.Enabled = False
End If
End Sub
Private Sub Command3_Click()
Dim fso As New FileSystemObject
If fso.FileExists(App.Path & "\Log Files\" & Text4.Text & ".log") = False Then
Open App.Path & "\Log Files\" & Text4.Text & ".log" For Output As #1
Print #1, Text1.Text
Close #1
MsgBox "File saved successfully!"
Else
If MsgBox("Filename already exists.Do you want to repalce it?", vbYesNo + vbCritical, "Deletion") = vbYes Then
Open App.Path & "\Log Files\" & Text4.Text & ".log" For Output As #1
Print #1, Text1.Text
Close #1
MsgBox "File saved successfully!"
Else
MsgBox "Please Enter Another File Name"
End If
End If
filename = App.Path & "\Log Files\" & Text4.Text & ".log"
convertexcel
convertexcelcumdata
Adodc1.ConnectionString = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sfile2
Adodc1.RecordSource = "SELECT * FROM [Sheet1$]"
Adodc1.Refresh
Adodc2.ConnectionString = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sfile1
Adodc2.RecordSource = "SELECT * FROM [Sheet2$]"
Adodc2.Refresh
DataGrid1.Visible = True
DataGrid2.Visible = True
DataGrid3.Visible = True
Frame1.Visible = True
Label6.Visible = True
Combo1.Visible = True
Label1.Visible = True
Label8.Visible = True
Text5.Visible = True
Label9.Visible = True
cmddata.Visible = True
fraSendAndReceive.Visible = False
Label3.Visible = False
objExcel.Application.Quit
Text5.Text = "Default"
Label8.Caption = "Your Current FileName:"
End Sub
Private Sub Command4_Click()
Set oWB = objExcel.Workbooks.open(App.Path & "\Excel Files\" & Text5.Text & ".xls")
objExcel.Visible = True
End Sub
Private Sub download_Click()
fraSendAndReceive.Visible = True
Label3.Visible = True
DataGrid1.Visible = False
Frame1.Visible = False
DataGrid2.Visible = False
DataGrid3.Visible = False
DataGrid4.Visible = False
Command3.Enabled = False
End Sub
Private Sub exit_Click()
End
End Sub
Private Sub export_Click()
filename = App.Path & "\Log Files\" & Text4.Text & ".log"
convertexcel
convertexcelcumdata
Adodc1.ConnectionString = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sfile2
Adodc1.RecordSource = "SELECT * FROM [Sheet1$]"
Adodc1.Refresh
Adodc2.ConnectionString = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sfile1
Adodc2.RecordSource = "SELECT * FROM [Sheet2$]"
Adodc2.Refresh
DataGrid1.Visible = True
DataGrid2.Visible = True
DataGrid3.Visible = True
Frame1.Visible = True
Label6.Visible = True
Combo1.Visible = True
Label1.Visible = True
Label8.Visible = True
Text5.Visible = True
Label9.Visible = True
cmddata.Visible = True
fraSendAndReceive.Visible = False
Label3.Visible = False
objExcel.Application.Quit
Text5.Text = "Default"
Label8.Caption = "Your Current FileName:"
End Sub
Private Sub Form_Load()
frmMain.Show
my_data = 0
tmrDelay.Enabled = False
Call Startup
Call FindTheHid
If MyDeviceDetected = True Then
Label4.ForeColor = &HFF00&
Label4.Caption = " Device is connected on port"
cmdContinuous.Enabled = True
Else
Label4.ForeColor = &HFF
Label4.Caption = " Device is not connected on port"
cmdContinuous.Enabled = False
End If
On Error Resume Next
MkDir App.Path & "\Log Files"
On Error Resume Next
MkDir App.Path & "\Excel Files"
On Error Resume Next
MkDir App.Path & "\Temp"
objExcel.DisplayAlerts = False
Dim oFs As New FileSystemObject
Dim oFolder As Folder
Dim oFile As file
DeleteAllFiles App.Path & "\Temp"
End Sub
Public Function DeleteAllFiles(ByVal FolderSpec As String) As Boolean
Dim oFs As New FileSystemObject
Dim oFolder As Folder
Dim oFile As file
If oFs.FolderExists(FolderSpec) Then
Set oFolder = oFs.GetFolder(FolderSpec)
On Error Resume Next
For Each oFile In oFolder.Files
oFile.Delete True 'setting force to true
'deletes read-only file
Next
DeleteAllFiles = oFolder.Files.Count = 0
End If
End Function
Private Sub Form_Unload(Cancel As Integer)
Call Shutdown
End Sub
Private Sub GetDeviceCapabilities()
'******************************************************************************
'HidD_GetPreparsedData
'Returns: a pointer to a buffer containing information about the device's capabilities.
'Requires: A handle returned by CreateFile.
'There's no need to access the buffer directly,
'but HidP_GetCaps and other API functions require a pointer to the buffer.
'******************************************************************************
Dim ppData(29) As Byte
Dim ppDataString As Variant
'Preparsed Data is a pointer to a routine-allocated buffer.
Result = HidD_GetPreparsedData _
(HIDHandle, _
PreparsedData)
Call DisplayResultOfAPICall("HidD_GetPreparsedData")
'Copy the data at PreparsedData into a byte array.
Result = RtlMoveMemory _
(ppData(0), _
PreparsedData, _
30)
Call DisplayResultOfAPICall("RtlMoveMemory")
ppDataString = ppData()
'Convert the data to Unicode.
ppDataString = StrConv(ppDataString, vbUnicode)
'******************************************************************************
'HidP_GetCaps
'Find out the device's capabilities.
'For standard devices such as joysticks, you can find out the specific
'capabilities of the device.
'For a custom device, the software will probably know what the device is capable of,
'so this call only verifies the information.
'Requires: The pointer to a buffer containing the information.
'The pointer is returned by HidD_GetPreparsedData.
'Returns: a Capabilites structure containing the information.
'******************************************************************************
Result = HidP_GetCaps _
(PreparsedData, _
Capabilities)
Call DisplayResultOfAPICall("HidP_GetCaps")
'******************************************************************************
'HidP_GetValueCaps
'Returns a buffer containing an array of HidP_ValueCaps structures.
'Each structure defines the capabilities of one value.
'This application doesn't use this data.
'******************************************************************************
'This is a guess. The byte array holds the structures.
Dim ValueCaps(1023) As Byte
Result = HidP_GetValueCaps _
(HidP_Input, _
ValueCaps(0), _
Capabilities.NumberInputValueCaps, _
PreparsedData)
Call DisplayResultOfAPICall("HidP_GetValueCaps")
'lstResults.AddItem "ValueCaps= " & GetDataString((VarPtr(ValueCaps(0))), 180)
'To use this data, copy the byte array into an array of structures.
'Free the buffer reserved by HidD_GetPreparsedData
Result = HidD_FreePreparsedData _
(PreparsedData)
Call DisplayResultOfAPICall("HidD_FreePreparsedData")
End Sub
Private Sub InitializeDisplay()
Dim Count As Integer
Dim ByteValue As String
'Create a dropdown list box for each byte to send.
For Count = 0 To 255
If Len(Hex$(Count)) < 2 Then
ByteValue = "0" & Hex$(Count)
Else
ByteValue = Hex$(Count)
End If
frmMain.cboByte0.AddItem ByteValue, Count
Next Count
For Count = 0 To 255
If Len(Hex$(Count)) < 2 Then
ByteValue = "0" & Hex$(Count)
Else
ByteValue = Hex$(Count)
End If
frmMain.cboByte1.AddItem ByteValue, Count
Next Count
'Select a default item for each box
frmMain.cboByte0.ListIndex = 0
frmMain.cboByte1.ListIndex = 128
'Check the autoincrement box to increment the values each time a report is sent.
chkAutoincrement.Value = 1
End Sub
Private Sub PrepareForOverlappedTransfer()
'******************************************************************************
'CreateEvent
'Creates an event object for the overlapped structure used with ReadFile.
'Requires a security attributes structure or null,
'Manual Reset = True (ResetEvent resets the manual reset object to nonsignaled),
'Initial state = True (signaled),
'and event object name (optional)
'Returns a handle to the event object.
'******************************************************************************
If EventObject = 0 Then
EventObject = CreateEvent _
(Security, _
True, _
True, _
"")
End If
Call DisplayResultOfAPICall("CreateEvent")
'Set the members of the overlapped structure.
HIDOverlapped.Offset = 0
HIDOverlapped.OffsetHigh = 0
HIDOverlapped.hEvent = EventObject
End Sub
Private Sub ReadAndWriteToDevice()
'Sends two bytes to the device and reads two bytes back.
Dim Count As Integer
'Report Header
'Some data to send
'(if not using the combo boxes):
'OutputReportData(0) = &H12
'OutputReportData(1) = &H34
'OutputReportData(2) = &HF0
'OutputReportData(3) = &HF1
'OutputReportData(4) = &HF2
'OutputReportData(5) = &HF3
'OutputReportData(6) = &HF4
'OutputReportData(7) = &HF5
'If the device hasn't been detected or it timed out on a previous attempt
'to access it, look for the device.
If MyDeviceDetected = False Then
MyDeviceDetected = FindTheHid
End If
If MyDeviceDetected = True Then
'Get the bytes to send from the combo boxes.
'Increment the values if the autoincrement check box is selected.
If chkAutoincrement.Value = 1 Then
If cboByte0.ListIndex < 255 Then
cboByte0.ListIndex = cboByte0.ListIndex + 1
Else
cboByte0.ListIndex = 0
End If
If cboByte1.ListIndex < 255 Then
cboByte1.ListIndex = cboByte1.ListIndex + 1
Else
cboByte1.ListIndex = 0
End If
End If
OutputReportData(0) = cboByte0.ListIndex
'OutputReportData(1) = cboByte1.ListIndex
'Write a report to the device
Call WriteReport
'Read a report from the device.
Call ReadReport
Else
End If
'Scroll to the bottom of the list box.
lstResults.ListIndex = lstResults.ListCount - 1
'If the list box has more than 300 items, trim the contents.
If lstResults.ListCount > 300 Then
For Count = 1 To 100
lstResults.RemoveItem (Count)
Next Count
End If
End Sub
Private Sub ReadReport()
'Read data from the device.
Dim Count
Dim data_count
Dim NumberOfBytesRead As Long
'Allocate a buffer for the report.
'Byte 0 is the report ID.
Dim ReadBuffer() As Byte
Dim UBoundReadBuffer As Integer
'******************************************************************************
'ReadFile
'Returns: the report in ReadBuffer.
'Requires: a device handle returned by CreateFile
'(for overlapped I/O, CreateFile must be called with FILE_FLAG_OVERLAPPED),
'the Input report length in bytes returned by HidP_GetCaps,
'and an overlapped structure whose hEvent member is set to an event object.
'******************************************************************************
Dim ByteValue As String
'The ReadBuffer array begins at 0, so subtract 1 from the number of bytes.
ReDim ReadBuffer(Capabilities.InputReportByteLength - 1)
'Scroll to the bottom of the list box.
lstResults.ListIndex = lstResults.ListCount - 1
'Do an overlapped ReadFile.
'The function returns immediately, even if the data hasn't been received yet.
data_count = 0
Top:
Result = ReadFile _
(ReadHandle, _
ReadBuffer(0), _
CLng(Capabilities.InputReportByteLength), _
NumberOfBytesRead, _
HIDOverlapped)
Call DisplayResultOfAPICall("ReadFile")
'lstResults.AddItem "waiting for ReadFile"
'Scroll to the bottom of the list box.
lstResults.ListIndex = lstResults.ListCount - 1
bAlertable = True
'******************************************************************************
'WaitForSingleObject
'Used with overlapped ReadFile.
'Returns when ReadFile has received the requested amount of data or on timeout.
'Requires an event object created with CreateEvent
'and a timeout value in milliseconds.
'******************************************************************************
Result = WaitForSingleObject _
(EventObject, _
6000)
Call DisplayResultOfAPICall("WaitForSingleObject")
'Find out if ReadFile completed or timeout.
Select Case Result
Case WAIT_OBJECT_0
'ReadFile has completed
Case WAIT_TIMEOUT
'Timeout
'Cancel the operation
'*************************************************************
'CancelIo
'Cancels the ReadFile
'Requires the device handle.
'Returns non-zero on success.
'*************************************************************
Result = CancelIo _
(ReadHandle)
Call DisplayResultOfAPICall("CancelIo")
'The timeout may have been because the device was removed,
'so close any open handles and
'set MyDeviceDetected=False to cause the application to
'look for the device on the next attempt.
CloseHandle (HIDHandle)
Call DisplayResultOfAPICall("CloseHandle (HIDHandle)")
CloseHandle (ReadHandle)
Call DisplayResultOfAPICall("CloseHandle (ReadHandle)")
MyDeviceDetected = False
Case Else
MyDeviceDetected = False
End Select
If data_count < 511 Then
txtBytesReceived.Text = ""
For Count = 1 To UBound(ReadBuffer)
'Add a leading 0 to values 0 - Fh.
If Len(Hex$(ReadBuffer(Count))) < 2 Then
ByteValue = "0" & Hex$(ReadBuffer(Count))
Else
ByteValue = Hex$(ReadBuffer(Count))
End If
Text1.Text = Text1.Text & ByteValue & " "
data_count = data_count + 1
'Display the received bytes in the text box.
txtBytesReceived.SelStart = Len(txtBytesReceived.Text)
txtBytesReceived.SelText = ByteValue & vbCrLf
Next Count
GoTo Top
End If
'******************************************************************************
'ResetEvent
'Sets the event object in the overlapped structure to non-signaled.
'Requires a handle to the event object.
'Returns non-zero on success.
'******************************************************************************
Call ResetEvent(EventObject)
Call DisplayResultOfAPICall("ResetEvent")
End Sub
Private Sub Shutdown()
'Actions that must execute when the program ends.
'Close the open handles to the device.
Result = CloseHandle _
(HIDHandle)
Call DisplayResultOfAPICall("CloseHandle (HIDHandle)")
Result = CloseHandle _
(ReadHandle)
Call DisplayResultOfAPICall("CloseHandle (ReadHandle)")
End Sub
Private Sub Startup()
Call InitializeDisplay
tmrContinuousDataCollect.Enabled = False
tmrContinuousDataCollect.interval = 1000
End Sub
Private Sub new_Click()
fraSendAndReceive.Visible = True
Label3.Visible = True
'Text1.Visible = True
End Sub
Private Sub open_Click()
CommonDialog1.DialogTitle = "Open File"
CommonDialog1.Filter = "Log Documents (*.log)|*.log|Text Documents (*.txt)|*.txt|Excel Spreadsheets (*.xls)|*.xls"
CommonDialog1.FilterIndex = 1
CommonDialog1.Flags = cdlOFNFileMustExist + cdlOFNHideReadOnly
CommonDialog1.ShowOpen
filename = CommonDialog1.filename
Dim fl As String
fl = CommonDialog1.FileTitle
If filename = "" Then
Else
convertexcel
convertexcelcumdata
convertexcelfaultdata
sFile = App.Path & "\Excel Files\Default.xls"
Adodc1.ConnectionString = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sfile2
Adodc1.RecordSource = "SELECT * FROM [Sheet1$]"
Adodc1.Refresh
Adodc2.ConnectionString = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sfile1
Adodc2.RecordSource = "SELECT * FROM [Sheet1$]"
Adodc2.Refresh
Adodc3.ConnectionString = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & file3
Adodc3.RecordSource = "SELECT * FROM [Sheet1$]"
Adodc3.Refresh
Set DataGrid1.DataSource = Adodc1
DataGrid1.Refresh
Set DataGrid2.DataSource = Adodc2
DataGrid2.Refresh
Set DataGrid3.DataSource = Adodc3
DataGrid3.Refresh
DataGrid1.Columns("Date").Width = 1000 'test here
DataGrid1.Columns("Time").Width = 1000
DataGrid1.Columns("Voltage(ERRU1)").Width = 1500
DataGrid1.Columns("Voltage(ERRU2)").Width = 1500
DataGrid1.Columns("Current(ERRU1)").Width = 1500
DataGrid1.Columns("Current(ERRU2)").Width = 1500
DataGrid1.Columns("Charging Current").Width = 1500
DataGrid1.Columns("Discharging Current").Width = 1700
DataGrid1.Columns("Alternator RPM").Width = 1500
DataGrid2.Columns("Date").Width = 800 'test here
DataGrid2.Columns("Time").Width = 800
DataGrid2.Columns("Charging Current").Width = 1400
DataGrid2.Columns("Discharging Current").Width = 1700
DataGrid2.Columns("Generation Time").Width = 1400
DataGrid3.Columns("Date").Width = 800 'test here
DataGrid3.Columns("Time").Width = 800
DataGrid3.Columns("Fault").Width = 3100
If interval = "5min" Then
DataGrid4.Visible = True
DataGrid1.Visible = False
End If
DataGrid1.Visible = True
DataGrid2.Visible = True
DataGrid3.Visible = True
Frame1.Visible = True
Label6.Visible = True
Combo1.Visible = True
Label1.Visible = True
Label8.Visible = True
Text5.Visible = True
Label9.Visible = True
cmddata.Visible = True
fraSendAndReceive.Visible = False
Label3.Visible = False
objExcel.Application.Quit
Text5.Text = "Default"
Label8.Caption = "Your Current FileName:"
End If
End Sub
Private Sub tmrContinuousDataCollect_Timer()
If my_data < Val(Text3.Text) * 2.54 Then
Call ReadAndWriteToDevice
Else
tmrContinuousDataCollect.Enabled = False
End If
qty = Round((my_data / 2.54) * (100 / Val(Text3.Text)), 0)
If qty > 98 Then
cmdContinuous.Caption = "Start"
Command1.Enabled = True
Command2.Enabled = True
Text2.Enabled = True
End If
If qty > 100 Then
qty = 100
End If
Label3.Caption = qty & "% Completed"
If Label3.Caption = "100% Completed" Then
Label6.Visible = True
Combo1.Visible = True
Label1.Visible = True
cmddata.Visible = True
Command3.Enabled = True
Text4.Enabled = True
End If
End Sub
Private Sub tmrDelay_Timer()
Timeout = True
tmrDelay.Enabled = False
End Sub
Private Sub WriteReport()
'Send data to the device.
Dim Count As Integer
Dim NumberOfBytesRead As Long
Dim NumberOfBytesToSend As Long
Dim NumberOfBytesWritten As Long
Dim ReadBuffer() As Byte
Dim SendBuffer() As Byte
'The SendBuffer array begins at 0, so subtract 1 from the number of bytes.
ReDim SendBuffer(Capabilities.OutputReportByteLength - 1)
'******************************************************************************
'WriteFile
'Sends a report to the device.
'Returns: success or failure.
'Requires: the handle returned by CreateFile and
'The output report byte length returned by HidP_GetCaps
'******************************************************************************
'The first byte is the Report ID
SendBuffer(0) = 0
SendBuffer(1) = my_data
NumberOfBytesWritten = 0
Result = WriteFile _
(HIDHandle, _
SendBuffer(0), _
CLng(Capabilities.OutputReportByteLength), _
NumberOfBytesWritten, _
0)
Call DisplayResultOfAPICall("WriteFile")
my_data = my_data + 1
For Count = 1 To UBound(SendBuffer)
lstResults.AddItem " " & Hex$(SendBuffer(Count))
Next Count
End Sub
Function convertexcel()
Dim line As String
Dim Count As String
h = 2
Dim TextLine As String
Open filename For Input Shared As #1
Do While Not EOF(1) '// Loop until end of file.
Line Input #1, TextLine '// Read line into variable.
' use the TextLine herer...
line = TextLine
Loop
Close #1
'create excel file
Set oWB = objExcel.Workbooks.Add
Set oWS = oWB.Worksheets("Sheet1")
bname = oWB.Name
oWS.Cells.Columns.AutoFit
oWS.Cells.WrapText = False
oWS.Range("A1").Value = "Date"
oWS.Range("B1").Value = "Time"
oWS.Range("C1").Value = "Voltage(ERRU1)"
oWS.Range("D1").Value = "Current(ERRU1)"
oWS.Range("E1").Value = "Voltage(ERRU2)"
oWS.Range("F1").Value = "Current(ERRU2)"
oWS.Range("G1").Value = "Charging Current"
oWS.Range("H1").Value = "Discharging Current"
oWS.Range("I1").Value = "Alternator RPM"
dtlog = Split(line, "FE FF")
For k = 0 To UBound(dtlog) - 1
log = dtlog(k)
If k = 0 Then
Dim dlog() As String
dlog = Split(log, "FF")
log = dlog(1)
End If
datalg = Split(log, " ")
Count = UBound(datalg)
If Count <= 21 Then
If Count >= 18 Then
time = datalg(3) & ":" & datalg(2)
date1 = datalg(4) & "/" & datalg(5) & "/" & datalg(6)
If exdate = "" Then
exdate = date1
Else
exdate = exdate & "," & date1
End If
If extime = "" Then
extime = time
Else
extime = extime & "," & time
End If
If dtr = "" Then
dtr = date1
Else
dtr = dtr + "," + date1
End If
oWS.Range("A" & h).Value = " " & Trim$(Trim$(datalg(4)) & "/" & Trim$(datalg(5)) & "/" & Trim$(datalg(6)))
oWS.Range("B" & h).Value = datalg(3) & ":" & datalg(2)
volt1 = HextoDec(datalg(7) & datalg(8))
vlt1value = Round((volt1 - 511) * 0.495, 2)
If vlt1value < 0 Then
vlt1value = 0
End If
cur1 = HextoDec(datalg(11) & datalg(12))
cr1value = Round((cur1 - 511) * 2.44, 2)
If cr1value < 0 Then
cr1value = 0
End If
volt2 = HextoDec(datalg(9) & datalg(10))
vlt2value = Round((volt2 - 511) * 0.495, 2)
If vlt2value < 0 Then
vlt2value = 0
End If
cur2 = HextoDec(datalg(13) & datalg(14))
cr2value = Round((cur2 - 511) * 2.44, 2)
If cr2value < 0 Then
cr2value = 0
End If
bcur = HextoDec(datalg(15) & datalg(16))
bcrvalue = Round((bcur - 511) * 2.44, 2)
freq1 = HextoDec(datalg(17) & datalg(18))
fr1value = Round((freq1 * 0.79) * 7.5)
If bcrvalue < 0 Then
bcrvalue = 0
End If
If fr1value < 0 Then
fr1value = 0
End If
oWS.Range("C" & h).Value = vlt1value
oWS.Range("D" & h).Value = cr1value
oWS.Range("E" & h).Value = vlt1value
oWS.Range("F" & h).Value = cr2value
oWS.Range("G" & h).Value = bcrvalue
oWS.Range("I" & h).Value = fr1value
h = h + 1
End If
End If
Count = ""
Next k
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'You use Excel 2007
FileExtStr = ".xls": FileFormatNum = 56
End If
TempFilePath = App.Path
TempFileName = "\Temp\All" & Hour(Now) & "-" & Minute(Now) & "-" & Second(Now)
oWB.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
oWB.close SaveChanges:=True
sfile2 = TempFilePath & TempFileName & FileExtStr
objExcel.Application.Quit
End Function
Function convertexcel5min()
DataGrid1.Visible = False
Dim line As String
Dim Count As String
h = 2
Dim TextLine As String
Open filename For Input Shared As #1
Do While Not EOF(1) '// Loop until end of file.
Line Input #1, TextLine '// Read line into variable.
' use the TextLine herer...
line = TextLine
Loop
Close #1
'create excel file
Dim fso As New FileSystemObject
Set oWB = objExcel.Workbooks.Add
Set oWS = oWB.Worksheets("Sheet1")
bname = oWB.Name
oWS.Cells.Columns.AutoFit
oWS.Cells.WrapText = False
bname = oWB.Name
oWS.Range("A1").Value = "Date"
oWS.Range("B1").Value = "Time"
oWS.Range("C1").Value = "Voltage(ERRU1)"
oWS.Range("D1").Value = "Current(ERRU1)"
oWS.Range("E1").Value = "Voltage(ERRU2)"
oWS.Range("F1").Value = "Current(ERRU2)"
oWS.Range("G1").Value = "Charging Current"
oWS.Range("H1").Value = "Discharging Current"
oWS.Range("I1").Value = "Alternator RPM"
dtlog = Split(line, "FE FF")
For k = 0 To UBound(dtlog) - 1
log = dtlog(k)
If k = 0 Then
Dim dlog() As String
dlog = Split(log, "FF")
log = dlog(1)
End If
datalg = Split(log, " ")
Count = UBound(datalg)
If Count <= 21 Then
If Count >= 18 Then
time = datalg(4) & "/" & datalg(5) & "/" & datalg(6) & " " & datalg(3) & ":" & datalg(2)
date1 = datalg(4) & "/" & datalg(5) & "/" & datalg(6)
If date1 >= date2 Then
date2 = date1
If time >= time1 Then
time1 = Format(DateAdd("n", 5, time), "dd/MM/yy hh:mm")
time = ""
date1 = ""
oWS.Range("A" & h).Value = " " & datalg(4) & "/" & datalg(5) & "/" & datalg(6)
oWS.Range("B" & h).Value = datalg(3) & ":" & datalg(2)
volt1 = HextoDec(datalg(7) & datalg(8))
vlt1value = Round((volt1 - 511) * 0.495, 2)
If vlt1value < 0 Then
vlt1value = 0
End If
cur1 = HextoDec(datalg(11) & datalg(12))
cr1value = (cur1 - 511) * 2.44
If cr1value < 0 Then
cr1value = 0
End If
volt2 = HextoDec(datalg(9) & datalg(10))
vlt2value = Round((volt2 - 511) * 0.495, 2)
If vlt2value < 0 Then
vlt2value = 0
End If
cur2 = HextoDec(datalg(13) & datalg(14))
cr2value = (cur2 - 511) * 2.44
If cr2value < 0 Then
cr2value = 0
End If
bcur = HextoDec(datalg(15) & datalg(16))
bcrvalue = Round((bcur - 511) * 2.44, 2)
freq1 = HextoDec(datalg(17) & datalg(18))
fr1value = Round((freq1 * 0.79) * 7.5)
If bcrvalue < 0 Then
bcrvalue = 0
End If
If fr1value < 0 Then
fr1value = 0
End If
oWS.Range("C" & h).Value = vlt1value
oWS.Range("D" & h).Value = cr1value
oWS.Range("E" & h).Value = vlt2value
oWS.Range("F" & h).Value = cr2value
oWS.Range("G" & h).Value = bcrvalue
oWS.Range("I" & h).Value = fr1value
h = h + 1
End If
End If
End If
End If
Count = ""
Next k
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'You use Excel 2007
FileExtStr = ".xls": FileFormatNum = 56
End If
TempFilePath = App.Path
TempFileName = "\Temp\5min" & Hour(Now) & "-" & Minute(Now) & "-" & Second(Now)
oWB.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
oWB.close SaveChanges:=True
sfile2 = TempFilePath & TempFileName & FileExtStr
objExcel.Application.Quit
End Function
Function convertexcel10min()
Dim line As String
Dim Count As String
h = 2
Dim TextLine As String
'Open App.Path & "\download.log" For Input Access Read As #nHandle
Open filename For Input Shared As #1
Do While Not EOF(1) '// Loop until end of file.
Line Input #1, TextLine '// Read line into variable.
' use the TextLine herer...
line = TextLine
Loop
Close #1
'create excel file
Dim fso As New FileSystemObject
If fso.FileExists(App.Path & "\Excel Files\Default.xls") = False Then
Set oWB = objExcel.Workbooks.Add
Set oWS = oWB.Worksheets("Sheet1")
bname = oWB.Name
Else
Workbooks.open filename:=sfile2
Set oWB = objExcel.Application.ActiveWorkbook
Set oWS = oWB.Worksheets("Sheet1")
bname = oWB.Name
End If
bname = oWB.Name
oWS.Cells.Columns.AutoFit
oWS.Cells.WrapText = False
oWS.Range("A1").Value = "Date"
oWS.Range("B1").Value = "Time"
oWS.Range("C1").Value = "Voltage(ERRU1)"
oWS.Range("D1").Value = "Current(ERRU1)"
oWS.Range("E1").Value = "Voltage(ERRU2)"
oWS.Range("F1").Value = "Current(ERRU2)"
oWS.Range("G1").Value = "Charging Current"
oWS.Range("H1").Value = "Discharging Current"
oWS.Range("I1").Value = "Alternator RPM"
dtlog = Split(line, "FE FF")
For k = 0 To UBound(dtlog) - 1
log = dtlog(k)
If k = 0 Then
Dim dlog() As String
dlog = Split(log, "FF")
log = dlog(1)
End If
datalg = Split(log, " ")
Count = UBound(datalg)
If Count <= 21 Then
If Count >= 18 Then
time = datalg(4) & "/" & datalg(5) & "/" & datalg(6) & " " & datalg(3) & ":" & datalg(2)
date1 = datalg(4) & "/" & datalg(5) & "/" & datalg(6)
If date1 >= date2 Then
date2 = date1
If time >= time1 Then
time1 = Format(DateAdd("n", 10, time), "dd/MM/yy hh:mm")
time = ""
date1 = ""
oWS.Range("A" & h).Value = " " & datalg(4) & "/" & datalg(5) & "/" & datalg(6)
oWS.Range("B" & h).Value = datalg(3) & ":" & datalg(2)
volt1 = HextoDec(datalg(7) & datalg(8))
vlt1value = Round((volt1 - 511) * 0.495, 2)
If vlt1value < 0 Then
vlt1value = 0
End If
cur1 = HextoDec(datalg(11) & datalg(12))
cr1value = (cur1 - 511) * 2.44
If cr1value < 0 Then
cr1value = 0
End If
volt2 = HextoDec(datalg(9) & datalg(10))
vlt2value = Round((volt2 - 511) * 0.495, 2)
If vlt2value < 0 Then
vlt2value = 0
End If
cur2 = HextoDec(datalg(13) & datalg(14))
cr2value = (cur2 - 511) * 2.44
If cr2value < 0 Then
cr2value = 0
End If
bcur = HextoDec(datalg(15) & datalg(16))
bcrvalue = Round((bcur - 511) * 2.44, 2)
freq1 = HextoDec(datalg(17) & datalg(18))
fr1value = Round((freq1 * 0.79) * 7.5)
If bcrvalue < 0 Then
bcrvalue = 0
End If
If fr1value < 0 Then
fr1value = 0
End If
oWS.Range("C" & h).Value = vlt1value
oWS.Range("D" & h).Value = cr1value
oWS.Range("E" & h).Value = vlt2value
oWS.Range("F" & h).Value = cr2value
oWS.Range("G" & h).Value = bcrvalue
oWS.Range("I" & h).Value = fr1value
h = h + 1
End If
End If
End If
End If
Count = ""
Next k
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'You use Excel 2007
FileExtStr = ".xls": FileFormatNum = 56
End If
TempFilePath = App.Path
TempFileName = "\Temp\10min" & Hour(Now) & "-" & Minute(Now) & "-" & Second(Now)
oWB.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
oWB.close SaveChanges:=True
sfile2 = TempFilePath & TempFileName & FileExtStr
objExcel.Application.Quit
End Function
Public Function HextoDec(HexNum As String) As Long
Dim lngOut As Long
Dim i As Integer
Dim c As Integer
For i = 1 To Len(HexNum)
c = Asc(UCase(Mid(HexNum, i, 1)))
Select Case c
Case 65 To 70
lngOut = lngOut + ((c - 55) * 16 ^ (Len(HexNum) - i))
Case 48 To 57
lngOut = lngOut + ((c - 48) * 16 ^ (Len(HexNum) - i))
Case Else
End Select
Next i
HextoDec = lngOut
End Function
Function convertexcelcumdata()
'nHandle = FreeFile
Dim line As String
Dim Count As String
h = 2
Dim TextLine As String
'Open App.Path & "\download.log" For Input Access Read As #nHandle
'Open filename For Input Access Read As #1
Open filename For Input Shared As #1
Do While Not EOF(1) '// Loop until end of file.
Line Input #1, TextLine '// Read line into variable.
' use the TextLine herer...
line = TextLine
Loop
Close #1
Set oWB = objExcel.Workbooks.Add
Set oWS = oWB.Worksheets("Sheet1")
bname1 = oWB.Name
oWS.Cells.Columns.AutoFit
oWS.Cells.WrapText = False
oWS.Range("A1").Value = "Date"
oWS.Range("B1").Value = "Time"
oWS.Range("C1").Value = "Charging Current"
oWS.Range("D1").Value = "Discharging Current"
oWS.Range("E1").Value = "Generation Time"
oWS.Range("F1").Value = "Non Generation Time"
dtlog = Split(line, "FE FF")
For k = 0 To UBound(dtlog) - 1
log = dtlog(k)
If k = 0 Then
Dim dlog() As String
dlog = Split(log, "FF")
log = dlog(1)
End If
Dim vl As String
vl = Mid(log, 2, 2)
If vl = "02" Then
datalg = Split(log, " ")
Dim dt As String
Count = UBound(datalg)
If Count <= 21 Then
If Count >= 11 Then
Dim dt1 As String
edate = Split(exdate, ",")
dt1 = edate(1)
Dim tm As String
etime = Split(extime, ",")
tm = etime(1)
chrcur = HextoDec(datalg(2) & datalg(3) & datalg(4))
dishrcur = HextoDec(datalg(5) & datalg(6) & datalg(7))
gntime = HextoDec(datalg(8) & datalg(9))
nongntime = HextoDec(datalg(10) & datalg(11))
oWS.Range("A" & h).Value = dt1
oWS.Range("B" & h).Value = tm
oWS.Range("C" & h).Value = chrcur
oWS.Range("D" & h).Value = dishrcur
oWS.Range("E" & h).Value = gntime
oWS.Range("F" & h).Value = nongntime
h = h + 1
End If
End If
End If
Count = ""
Next k
oWB.Save
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'You use Excel 2007
FileExtStr = ".xls": FileFormatNum = 56
End If
TempFilePath = App.Path
TempFileName = "\Temp\cum" & Hour(Now) & "-" & Minute(Now) & "-" & Second(Now)
oWB.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
oWB.close SaveChanges:=True
sfile1 = TempFilePath & TempFileName & FileExtStr
objExcel.Application.Quit
End Function
Function convertexcelfaultdata()
Dim line As String
Dim Count As String
h = 2
Dim TextLine As String
Open filename For Input Shared As #1
Do While Not EOF(1) '// Loop until end of file.
Line Input #1, TextLine '// Read line into variable.
' use the TextLine herer...
line = TextLine
Loop
Close #1
'create excel file
Set oWB = objExcel.Workbooks.Add
Set oWS = oWB.Worksheets("Sheet1")
bname1 = oWB.Name
oWS.Cells.Columns.AutoFit
oWS.Cells.WrapText = False
oWS.Range("A1").Value = "Date"
oWS.Range("B1").Value = "Time"
oWS.Range("C1").Value = "Fault"
dtlog = Split(line, "FE FF")
For k = 0 To UBound(dtlog) - 1
log = dtlog(k)
If k = 0 Then
Dim dlog() As String
dlog = Split(log, "FF")
log = dlog(1)
End If
Dim vl As String
vl = Mid(log, 2, 2)
If vl = "04" Then
datalg = Split(log, " ")
Count = UBound(datalg)
If Count <= 21 Then
If Count >= 8 Then
fault = datalg(7)
If fault = "E1" Then
fault1 = "Alternator Failure"
End If
If fault = "E2" Then
fault1 = "Power Voltage"
End If
If fault = "E3" Then
fault1 = "UVC Failure"
End If
If fault = "E4" Then
fault1 = "Power Circuit Failure"
End If
If fault = "E5" Then
fault1 = "OVC Trip to OVC Reset"
End If
If fault = "E6" Then
fault1 = "Overload"
End If
If fault = "E7" Then
fault1 = "Short Circuit"
End If
If fault = "E8" Then
fault1 = "Battery Low Voltage"
End If
If fault = "E9" Then
fault1 = "Phase Failure"
End If
If fault = "EA" Then
fault1 = "Shaft Failure"
End If
oWS.Range("A" & h).Value = " " & datalg(4) & "/" & datalg(5) & "/" & datalg(6)
oWS.Range("B" & h).Value = datalg(3) & ":" & datalg(2)
oWS.Range("C" & h).Value = fault1
h = h + 1
End If
End If
End If
Count = ""
Next k
oWB.Save
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'You use Excel 2007
FileExtStr = ".xls": FileFormatNum = 56
End If
TempFilePath = App.Path
TempFileName = "\Temp\fault" & Hour(Now) & "-" & Minute(Now) & "-" & Second(Now)
oWB.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
oWB.close SaveChanges:=True
file3 = TempFilePath & TempFileName & FileExtStr
objExcel.Application.Quit
End Function
VB 6.0 code for Creating Excel
Dim objExcel As New Excel.Application
Dim oWB As Excel.Workbook
Dim oWS As Excel.Worksheet
Function convertexcel()
Dim line As String
Dim Count As String
h = 2
Dim TextLine As String
Open filename For Input Shared As #1
Do While Not EOF(1) '// Loop until end of file.
Line Input #1, TextLine '// Read line into variable.
' use the TextLine herer...
line = TextLine
Loop
Close #1
'create excel file
Set oWB = objExcel.Workbooks.Add
Set oWS = oWB.Worksheets("Sheet1")
bname = oWB.Name
oWS.Cells.Columns.AutoFit
oWS.Cells.WrapText = False
oWS.Range("A1").Value = "Date"
oWS.Range("B1").Value = "Time"
oWS.Range("C1").Value = "Voltage(ERRU1)"
oWS.Range("D1").Value = "Current(ERRU1)"
oWS.Range("E1").Value = "Voltage(ERRU2)"
oWS.Range("F1").Value = "Current(ERRU2)"
oWS.Range("G1").Value = "Charging Current"
oWS.Range("H1").Value = "Discharging Current"
oWS.Range("I1").Value = "Alternator RPM"
dtlog = Split(line, "FE FF")
For k = 0 To UBound(dtlog) - 1
log = dtlog(k)
If k = 0 Then
Dim dlog() As String
dlog = Split(log, "FF")
log = dlog(1)
End If
datalg = Split(log, " ")
Count = UBound(datalg)
If Count <= 21 Then
If Count >= 18 Then
time = datalg(3) & ":" & datalg(2)
date1 = datalg(4) & "/" & datalg(5) & "/" & datalg(6)
If exdate = "" Then
exdate = date1
Else
exdate = exdate & "," & date1
End If
If extime = "" Then
extime = time
Else
extime = extime & "," & time
End If
If dtr = "" Then
dtr = date1
Else
dtr = dtr + "," + date1
End If
oWS.Range("A" & h).Value = " " & Trim$(Trim$(datalg(4)) & "/" & Trim$(datalg(5)) & "/" & Trim$(datalg(6)))
oWS.Range("B" & h).Value = datalg(3) & ":" & datalg(2)
volt1 = HextoDec(datalg(7) & datalg(8))
vlt1value = Round((volt1 - 511) * 0.495, 2)
If vlt1value < 0 Then
vlt1value = 0
End If
cur1 = HextoDec(datalg(11) & datalg(12))
cr1value = Round((cur1 - 511) * 2.44, 2)
If cr1value < 0 Then
cr1value = 0
End If
volt2 = HextoDec(datalg(9) & datalg(10))
vlt2value = Round((volt2 - 511) * 0.495, 2)
If vlt2value < 0 Then
vlt2value = 0
End If
cur2 = HextoDec(datalg(13) & datalg(14))
cr2value = Round((cur2 - 511) * 2.44, 2)
If cr2value < 0 Then
cr2value = 0
End If
bcur = HextoDec(datalg(15) & datalg(16))
bcrvalue = Round((bcur - 511) * 2.44, 2)
freq1 = HextoDec(datalg(17) & datalg(18))
fr1value = Round((freq1 * 0.79) * 7.5)
If bcrvalue < 0 Then
bcrvalue = 0
End If
If fr1value < 0 Then
fr1value = 0
End If
oWS.Range("C" & h).Value = vlt1value
oWS.Range("D" & h).Value = cr1value
oWS.Range("E" & h).Value = vlt1value
oWS.Range("F" & h).Value = cr2value
oWS.Range("G" & h).Value = bcrvalue
oWS.Range("I" & h).Value = fr1value
h = h + 1
End If
End If
Count = ""
Next k
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'You use Excel 2007
FileExtStr = ".xls": FileFormatNum = 56
End If
TempFilePath = App.Path
TempFileName = "\Temp\All" & Hour(Now) & "-" & Minute(Now) & "-" & Second(Now)
oWB.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
oWB.close SaveChanges:=True
sfile2 = TempFilePath & TempFileName & FileExtStr
objExcel.Application.Quit
End Function
VB 6.0 code for checking file existing in a folder
Dim fso As New FileSystemObject
If fso.FileExists(App.Path & "\Excel Files\Default.xls") = False Then
Else
EndIf
VB 6.0 code for read data from a file
Open filename For Input Shared As #1
Do While Not EOF(1) '// Loop until end of file.
Line Input #1, TextLine '// Read line into variable.
' use the TextLine herer...
line = TextLine
Loop
Close #1
VB 6.0 code for Open file using Microsoft Common Dialog Control 6.0
CommonDialog1.Filter = "Log Documents (*.log)|*.log|Text Documents (*.txt)|*.txt|Excel Spreadsheets (*.xls)|*.xls"
CommonDialog1.FilterIndex = 1
CommonDialog1.Flags = cdlOFNFileMustExist + cdlOFNHideReadOnly
CommonDialog1.ShowOpen
Dim filename As string
filename = CommonDialog1.filename
Dim fl As String
fl = CommonDialog1.FileTitle
VB 6.0 code for delete all files in a folder
MkDir App.Path & "\Temp"
DeleteAllFiles App.Path & "\Temp"
Public Function DeleteAllFiles(ByVal FolderSpec As String) As Boolean
Dim oFs As New FileSystemObject
Dim oFolder As Folder
Dim oFile As file
If oFs.FolderExists(FolderSpec) Then
Set oFolder = oFs.GetFolder(FolderSpec)
On Error Resume Next
For Each oFile In oFolder.Files
oFile.Delete True 'setting force to true
'deletes read-only file
Next
DeleteAllFiles = oFolder.Files.Count = 0
End If
End Function
Check Tablename in Database using VB 6.0
Dim rs As New ADODB.Recordset
Dim tables() as String
Dim tablename as String
Dim msg as String
Dim table1 as String
If con.State = adStateOpen Then
con.Close
End If
con.Open
Set rs = con.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE"))
Do Until rs.EOF
If table1 = "" Then
table1 = rs!table_name
Else
table1 = table1 & "," & rs!table_name
End If
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
msg = IsInArray(tablename, tables())
Public Function IsInArray(FindValue As Variant, arrSearch As Variant) As Boolean
On Error GoTo LocalError
If Not IsArray(arrSearch) Then Exit Function
If Not IsNumeric(FindValue) Then FindValue = LCase(FindValue)
IsInArray = InStr(1, vbNullChar & Join(arrSearch, vbNullChar) & vbNullChar, _
vbNullChar & FindValue & vbNullChar) > 0
Exit Function
LocalError:
'Justin (just in case)
End Function
Check value in an array using VB 6.0
Dim tablename as String
Dim msg as String
msg = IsInArray(tablename, tables())
Public Function IsInArray(FindValue As Variant, arrSearch As Variant) As Boolean
On Error GoTo LocalError
If Not IsArray(arrSearch) Then Exit Function
If Not IsNumeric(FindValue) Then FindValue = LCase(FindValue)
IsInArray = InStr(1, vbNullChar & Join(arrSearch, vbNullChar) & vbNullChar, _
vbNullChar & FindValue & vbNullChar) > 0
Exit Function
LocalError:
'Justin (just in case)
End Function
Minimize VB 6.0 Application to TaskBar and checking if it is already running
Then add a module named modPublic.bas in the project and add the following code in the module which are the public declaration and API call code:
Option Explicit
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As MinimiseIconData) As Boolean
'constants required by Shell_NotifyIcon API call:
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201 'Button down
Public Const WM_LBUTTONUP = &H202 'Button up
Public Const WM_LBUTTONDBLCLK = &H203 'Double-click
Public Const WM_RBUTTONDOWN = &H204 'Button down
Public Const WM_RBUTTONUP = &H205 'Button up
Public Const WM_RBUTTONDBLCLK = &H206 'Double-click
Then add other module named modType for the public type declaration for the project. Add the following code in this module:
Public Type MinimiseIconData
cbSize As Long
hwnd As Long
uId As Long
uFlags As Long
uCallBackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Then on the Form1 properties select the icon which you want to display when your application is minimised to the task bar.
Note: icon has the extention .ico
Add one command button on the form
Then in the Form1 code page add the following code:
Option Explicit
Private minIco As MinimiseIconData
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Load()
If App.PrevInstance Then
End
End If
With minIco
.cbSize = Len(minIco)
.hwnd = Me.hwnd
.uId = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallBackMessage = WM_MOUSEMOVE
.hIcon = Me.Icon ' <== You can change this to another icon
.szTip = "Double-click this icon to make the application visible" & vbNullChar ' <== You can change this also.
End With
Shell_NotifyIcon NIM_ADD, minIco
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngButtonAction As Long
lngButtonAction = X / Screen.TwipsPerPixelX
Select Case lngButtonAction
Case WM_LBUTTONDBLCLK
' Left mouse button has been double clicked
' If app is currently minimized ….
Me.WindowState = vbNormal
Me.Show
'If Me.WindowState = vbMinimized Then ' … then restore it to normal size
' Me.WindowState = vbNormal
' Shell_NotifyIcon NIM_DELETE, nid ' and remove the icon
'ElseIf Not Me.Visible Then ' Else, if the app is hidden …
' Me.Show ' then show the form again
' Me.WindowState = vbNormal
' Shell_NotifyIcon NIM_DELETE, nid ' and remove the icon
'End If
Case WM_LBUTTONDOWN
' You could put code in here to make something happen when
' left mouse button is single clicked on the icon
Case WM_RBUTTONDOWN
' You could put code in here to make something happen when
' right mouse button is single clicked on the icon
End Select
End Sub
Private Sub Form_Resize()
On Error Resume Next
If Me.WindowState = vbMinimized Then
Me.Hide
Shell_NotifyIcon NIM_ADD, minIco
Else ' otherwise don't show it
Me.Show
Shell_NotifyIcon NIM_DELETE, minIco ' ç This removes the icon
End If
End Sub
Private Sub Form_Terminate()
Shell_NotifyIcon NIM_DELETE, minIco
End Sub
Tuesday, April 28, 2009
DateTime Convertion in 24 Hour Format
System.Globalization.CultureInfo cultEnGb = new System.Globalization.CultureInfo("en-GB");
System.Globalization.CultureInfo cultEnUs = new System.Globalization.CultureInfo("en-US");
DateTime dtGb = Convert.ToDateTime(datDate, cultEnGb.DateTimeFormat); datDate = dtGb.ToString(cultEnUs.DateTimeFormat.ShortDatePattern);
return datDate;}
Monday, April 27, 2009
ASP.Net 2.0 C# DateTime IFormatProvider Using ParseExact
DateTime .ParseExact
DateTime.Parse
To use IFormatProvider you have to pass the culture info for DateTime format coz in different cultures DateTime format of displaying the sequence of month and date varies.
E.g.:
For French Culture use the following:
IFormatProvider culture = new CultureInfo("fr-Fr", true);
For US English use the following:
IFormatProvider culture = new CultureInfo("fr-Fr", true);
Both cultures mentioned above accept the different DateTime Formats.
If you are using
DateTime.Parse
then you have to pass the MM/dd/yyyy hh:mm:ss
Format of DateTime for French culture and dd/MM/yyyy hh:mm:ss for US English culture. You have to check the format for different cultures by changing the position of month and day.
Using DateTime Parse:
dt = DateTime.Parse(myDateTimeString, culture,DateTimeStyles.NoCurrentDateDefault);
Using DateTime ParseExact:
dt = DateTime.ParseExact(myDateTimeString,"MM/dd/yyyy hh:mm:ss", culture, DateTimeStyles.NoCurrentDateDefault);
C# Code to ParseExact the DateTime String:
string myDateTimeString;
myDateTimeString = "19/02/2008 05:44:00";
IFormatProvider culture = new CultureInfo("fr-Fr", true);
dt = DateTime.ParseExact(myDateTimeString,"dd/MM/yyyy hh:mm:ss", culture, DateTimeStyles.NoCurrentDateDefault);
Response.Write(dt.Day + "/" + dt.Month + "/" + dt.Year);
Saturday, March 21, 2009
Windows form close and open next form in Windows Application in C#.NET
Form2.StartPosition = FormStartPosition.CenterParent;
this.Hide();
Form2.ShowDialog();
this.Close();
Wednesday, March 4, 2009
Find if a value exists in an Array in VB6.0
Option Explicit
Public Function IsInArray(FindValue As Variant, arrSearch As Variant) As Boolean
On Error GoTo LocalError
If Not IsArray(arrSearch) Then Exit Function
If Not IsNumeric(FindValue) Then FindValue = UCase(FindValue)
IsInArray = InStr(1, vbNullChar & Join(arrSearch, vbNullChar) & vbNullChar, _
vbNullChar & FindValue & vbNullChar) > 0
Exit Function
LocalError:
'Justin (just in case)
End Function
Usage:
Private Sub Command1_Click()
Dim x(5) As String
x(0) = 5
x(1) = 100
x(2) = 2000
x(3) = 11
x(4) = 7
x(5) = 1010
MsgBox IsInArray(10, x)
End Sub
Tuesday, March 3, 2009
VB code to show all table names of a databse
Dim con As New ADODB.Connection
Dim tables() As String
Dim table1, tablename As String
Dim i As Integer
Private Sub Command1_Click()
If con.State = adStateOpen Then
con.Close
End If
con.Open "Provider=SQLOLEDB.1;Data Source=.;Initial Catalog=GMS;Integrated Security=SSPI"
Set rs = New ADODB.Recordset
Set rs = con.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE"))
Do Until rs.EOF
'MsgBox rs!table_name
'Combo1.AddItem (rs!table_name)
If table1 = "" Then
table1 = rs!table_name
Else
table1 = table1 & "," & rs!table_name
End If
rs.MoveNext
Loop
rs.Close
tablename = "adcdata"
Set rs = Nothing
tables() = Split(table1, ",")
For i = 0 To UBound(tables()) - 1
If tablename = tables(i) Then
MsgBox "yes"
Else
End If
Next i
MsgBox table1
End Sub
Private Sub Form_Load()
'con.ConnectionString = "provider=microsoft.jet.oledb.4.0;" & " data source=" & App.Path & "\rubberpark.mdb"
End Sub
Tuesday, February 10, 2009
VB code to create kml file and open google earth with sms application
Dim sms() As String
Dim sm() As String
Dim lat, lon, d1, d2 As String
Dim lat1, lon1 As Double
Dim lt1, ln1 As Double
Dim u, loc, s, n, msg, ms, tid, tre, mob As String
Dim i As Integer
Dim temp, t, l, g, o, e, result As Double
Dim h() As String
Dim k() As String
Private Sub Combo1_Click()
MSComm1.CommPort = Combo1.Text
End Sub
Private Sub Command1_Click()
If MSComm1.InBufferCount > 0 Then
u = MSComm1.Input
Text1.Text = Text1.Text & us = Mid(u, 2, 4)
n = Mid(u, 13, 1)
If Mid(u, 2, 4) = "CMTI" Then
loc = Mid(u, 13, 1)
MSComm1.Output = "AT+CMGR=" & loc & Chr(13)
Text1.Text = Text1.Text & "AT+CMGR=" & loc & Chr(13)
Text1.Text = MSComm1.Input
message = Text1.Text
'message = "@0996.54553,N,07630.23133449,E,@0968.5172,N,07639.4825,E"
message = "@0997.9844,N,07660.2006,E,@0968.5172,N,07639.4825,E"
sms() = Split(message, "@")
mess = sms(1)
sm() = Split(mess, ",")
lat = sm(0)
convert (lat)
lat1 = resultl
t1 = lat1
d1 = sm(1)
lon = sm(2)
convert (lon)
lon1 = result
ln1 = lon1
d2 = sm(3)
Dim stAppName As String
Create KML FILE:
Dim path As String
Shell """C:\Program Files\Google\Google Earth\GoogleEarth.exe"" ""C:\Program Files\Google\Google Earth\ret.kml"""
End Sub
Private Sub Command2_Click()
MSComm1.Output = "AT+CMGS=" & Chr(34) & "+91" & num & Chr(34) & Chr(13) & "123456FORWARD" & Chr(26)
End Sub
Private Sub Command3_Click()
MSComm1.Output = "AT+CMGS=" & Chr(34) & "+91" & num & Chr(34) & Chr(13) & "123456RIGHT" & Chr(26)
End Sub
Private Sub Command4_Click()
MSComm1.Output = "AT+CMGS=" & Chr(34) & "+91" & num & Chr(34) & Chr(13) & "123456LEFT" & Chr(26)
End Sub
Private Sub Command5_Click()
MSComm1.PortOpen = True
End Sub
Private Sub Command6_Click()
MSComm1.PortOpen = False
End Sub
Private Sub Command7_Click()
MSComm1.Output = "AT+CMGS=" & Chr(34) & "+91" & num & Chr(34) & Chr(13) & "123456PULLY" & Chr(26)
End Sub
Function convert(val As String)
temp = val
h() = Split(temp, ".")
t = h(0)
l = t / 100
n = h(1)
k() = Split(l, ".")
g = k(0)
o = k(1)
e = o + n
result = g + "." + e
End Function
Private Sub Timer1_Timer()
If MSComm1.InBufferCount > 0 Then
Text1.Text = MSComm1.Input
End If
End Sub
Crystal Reports with Selection formula
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WEIGHBRIDGE1
{
public partial class MonthReport : Form
{
SqlConnection scn = new SqlConnection("Data Source=.;Initial Catalog=Weighingbridge;Integrated Security=True");
public MonthReport()
{
InitializeComponent();
}
private static string mth;
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.Text == "January")
{
mth = "January";
}
if (comboBox1.Text == "February")
{
mth = "February";
}
if (comboBox1.Text == "March")
{
mth = "March";
}
if (comboBox1.Text == "April")
{
mth = "April";
}
if (comboBox1.Text == "May")
{
mth = "May";
}
if (comboBox1.Text == "June")
{
mth = "June";
}
if (comboBox1.Text == "July")
{
mth = "July";
}
if (comboBox1.Text == "August")
{
mth = "August";
}
if (comboBox1.Text == "September")
{
mth = "September";
}
if (comboBox1.Text == "October")
{
mth = "October";
}
if (comboBox1.Text == "November")
{
mth = "November";
}
if (comboBox1.Text == "December")
{
mth = "December";
}
//-------------------------------------------------------------------------------------------- if (mth == "January")
{
Class1.month = "{Transaction.Dateoftransaction} in '1/1/2007' to ' 1/31/2007' ";
}
if (mth == "February")
{
Class1.month = "{Transaction.Dateoftransaction} in ' 1/2/2007' to ' 28/2/2007' ";
}
if (mth == "March")
{
Class1.month = "{Transaction.Dateoftransaction} in ' 1/3/2007' to '31/3/2007' ";
}
if (mth == "April")
{
Class1.month = "{Transaction.Dateoftransaction} in ' 1/4/2007' to '30/4/2007' ";
}
if (mth == "May")
{
Class1.month = "{Transaction.Dateoftransaction} in ' 1/5/2007' to ' 31/5/2007' ";
}
if (mth == "June")
{
Class1.month = "{Transaction.Dateoftransaction} in ' 1/6/2007' to ' 30/6/2007' ";
}
if (mth == "July")
{
Class1.month = "{Transaction.Dateoftransaction} in ' 1/7/2007' to ' 31/7/2007' ";
}
if (mth == "August")
{
Class1.month = "{Transaction.Dateoftransaction} in '1/8/2007' to '31/8/2007' ";
}
if (mth == "September")
{
Class1.month = "{Transaction.Dateoftransaction} in '1/9/2007' to '30/9/2007' ";
}
if (mth == "October")
{
Class1.month = "{Transaction.Dateoftransaction} in '1/10/2007' to '31/10/2007' ";
}
if (mth == "November")
{
Class1.month = "{Transaction.Dateoftransaction} in '1/11/2007' to '30/11/2007' ";
}
if (mth == "December")
{
Class1.month = "{Transaction.Dateoftransaction} in '1/12/2007' to '31/12/2007' ";
}
MonthlyReportPrint mr = new MonthlyReportPrint();
mr.Show();
}
}
}==============================================================================================using System;
using System.Collections.Generic;
using System.Text;using System.Data;
namespace WEIGHBRIDGE1
{
public class Class1
{
public Class1()
{
}
public static string strno;
public static string date;
public static string fdate;
public static string tdate;
public static string month;
public static string billno;
public static string cname;
//public string strno { get; set; }
}
}
========================================================================================using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WEIGHBRIDGE1
{
public partial class MonthlyReportPrint : Form
{
SqlConnection scn = new SqlConnection("Data Source=.;Initial Catalog=Weighingbridge;Integrated Security=True");
public MonthlyReportPrint()
{
InitializeComponent();
}
private void MonthlyReportPrint_Load(object sender, EventArgs e)
{
//scn.Open();
//SqlDataAdapter da = new SqlDataAdapter("select * from [Transaction] ", scn);
//DataSet ds = new DataSet();
//da.Fill(ds);
//CrystalmonthReport cm = new CrystalmonthReport();
//cm.SetDataSource(ds);
//crystalReportViewer1.ReportSource = cm;
crystalReportViewer1.SelectionFormula = Class1.month;
}
}
}=========================================================================================
Encryption and Decription
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;using System.Text;
using System.Security.Cryptography;
using System.IO;using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string str= Encrypt("Silpa");
SqlConnection con = new SqlConnection("Data Source=INFO-9;Initial Catalog=test;Integrated Security=True");
SqlCommand cmd=new SqlCommand("insert into pwdd values('"+str+"')",con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
string str1 = Decrypt("88tlfz/eGbtHNKDnXU6gQw==");
}
public static string Decrypt(string TextToBeDecrypted)
{
RijndaelManaged RijndaelCipher = new RijndaelManaged();
string Password = "CSC";
string DecryptedData;
try {
byte[] EncryptedData = Convert.FromBase64String(TextToBeDecrypted);
byte[] Salt = Encoding.ASCII.GetBytes(Password.Length.ToString());
//Making of the key for decryption
PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(Password, Salt);
//Creates a symmetric Rijndael decryptor object.
ICryptoTransform Decryptor = RijndaelCipher.CreateDecryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));
MemoryStream memoryStream = new MemoryStream(EncryptedData);
//Defines the cryptographics stream for decryption.THe stream contains decrpted data
CryptoStream cryptoStream = new CryptoStream(memoryStream, Decryptor, CryptoStreamMode.Read);
byte[] PlainText = new byte[EncryptedData.Length];
int DecryptedCount = cryptoStream.Read(PlainText, 0, PlainText.Length); memoryStream.Close();
cryptoStream.Close();
//Converting to string
DecryptedData = Encoding.Unicode.GetString(PlainText, 0, DecryptedCount);
}
catch
{
DecryptedData = TextToBeDecrypted;
}
return DecryptedData;
}
public static string Encrypt(string TextToBeEncrypted)
{
RijndaelManaged RijndaelCipher = new RijndaelManaged();
string Password = "CSC";
byte[] PlainText = System.Text.Encoding.Unicode.GetBytes(TextToBeEncrypted);
byte[] Salt = Encoding.ASCII.GetBytes(Password.Length.ToString()); PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(Password, Salt);
//Creates a symmetric encryptor object.
ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));
MemoryStream memoryStream = new MemoryStream();
//Defines a stream that links data streams to cryptographic transformations CryptoStream cryptoStream = new CryptoStream(memoryStream, Encryptor, CryptoStreamMode.Write);
cryptoStream.Write(PlainText, 0, PlainText.Length);
//Writes the final state and clears the buffer
cryptoStream.FlushFinalBlock();
byte[] CipherBytes = memoryStream.ToArray();
memoryStream.Close();
cryptoStream.Close();
string EncryptedData = Convert.ToBase64String(CipherBytes);
return EncryptedData;
}
}
Using Authorization with Swagger in ASP.NET Core
Create Solution like below LoginModel.cs using System.ComponentModel.DataAnnotations; namespace UsingAuthorizationWithSwagger.Models { ...
-
Output: using Microsoft.VisualBasic; using System; using System.Collections; using System.Collections.Generic; using S...
-
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.D...
-
<?xml version="1.0" encoding="utf-8"?> <Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting...