Software Development

Custom Software

Some examples of developed software and interfaces

PLC and HMI software for Automatic Cutting and Packing machine (SELMA Factory)

PCL software for Automatic Ventilation system on cold store (NESTLE Vorsino, Russia)

Visual Basic software for Pitch-Roll machine (Western Digital, Thailand)

VB.NET + WPF software for Interactive Presentations

  • approx. 5000 lines of code at main core file
  • over 10 modules with 2500+ lines of code
  • 12 libraries used
  • 10+ real project of software (clients including Embassy of Indonesia, Customs Department, Goldenland, Essilor, SystemForm, Mubadala Petroleum)

.NET CODE SAMPLE:

'FOR MULTI-LAYER PNG PROCESSING
Private Sub GridBg_MouseDown(sender As Object, e As MouseButtonEventArgs) Handles GridBg.MouseDown
    Dim pt As Point = e.GetPosition(CType(sender, UIElement))
    hitResultsList.Clear()
    VisualTreeHelper.HitTest(GridBg, Nothing, New HitTestResultCallback(AddressOf ExtraHitTestResult), New PointHitTestParameters(pt))
    If hitResultsList.Count > 0 Then
        Dim str As String = ""
        For i = 0 To hitResultsList.Count - 1
            Dim obj As Object = hitResultsList.Item(i)
            If Not IsNothing(obj) Then
                'tmp fix to gelix 3d obj
                Try
                    str += " / " + obj.name.ToString
                Catch ex As Exception
                End Try
            End If
        Next
        ' MsgBox(str)
    End If
End Sub

XAML MARKUP SAMPLE:

<!– HOME SLIDES –>
<Border Name=”BorderHomeSlides” Margin=”0″ Grid.Column=”0″ Grid.ColumnSpan=”2″
CornerRadius=”0″ HorizontalAlignment=”Center” VerticalAlignment=”Center” Visibility=”Hidden”>
<Grid Name=”GridHomeSlides” Margin=”0″ HorizontalAlignment=”Center” VerticalAlignment=”Center” >

<!–ACTUAL HOME MULTI-SLIDER–>
<Grid Name=”GridHomeMuSli” HorizontalAlignment=”Stretch” VerticalAlignment=”Stretch”></Grid>

<mkit:MediaUriElement Name=”MediaUriElement1″ />
<tranc:Slideshow Name=”SlideShow” HorizontalAlignment=”Center” VerticalAlignment=”Center” />
<Image Name=”ImgRS1″ Stretch=”Uniform” MinWidth=”100″ MinHeight=”100″ HorizontalAlignment=”Center” VerticalAlignment=”Center” />
<Border HorizontalAlignment=”Right” VerticalAlignment=”Bottom” Margin=”5″ Name=”BrdHomeSlideDots”>
<StackPanel Name=”StackPanelHomeSlideDots” Orientation=”Horizontal”></StackPanel>
</Border>
</Grid>
</Border>

INTERFACE SAMPLE:

VB.NET + WPF software for Digital Menu, Remote Ordering and POS

  • 3 sub applications: client, server, monitoring
  • 4200+ lines of code at main client app file
  • 6 extra libs at client app
  • 10 modules for 60 kb of code at client app
  • 1000 lines at main eXML file for client app interface
  • 3000+ lines at server app main + submodules
  • real-life applications

CODE SAMPLE:

‘CHECK BILL BTN
Private Sub btnCheckBill_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles btnCheckBill.Click
TBlockTotal.Background = Nothing

    menu_order_num = 0
    client_status = "BILL"

    msg = Dev_name + "," + Dev_loc + "," + Dev_user + "$" + client_status
    HeartbeatTimer_Tick(Nothing, Nothing)

    bill_total = TBlockTotal.Text

    'FILL CHECKBILL STPAN LINES
    StPanCheckBillItems.Children.Clear()
    For Each itm As MenuItems In orderCol
        Dim grd As New StackPanel With {.Margin = New Thickness(0, 0, 0, 5)}
        grd.Children.Add(New TextBlock With {.Text = itm.Name + ", " + itm.Price1Info, .FontSize = 16})
        grd.Children.Add(New TextBlock With {.Text = CStr(itm.Price1) + " x " + CStr(itm.Quant) + " = " + CStr(itm.Sum), .FontSize = 14, .HorizontalAlignment = HorizontalAlignment.Right})
        'itm.Code, itm.Name, itm.Price1Info, itm.Price1, "x " & CStr(itm.Quant) & " =", itm.Sum, itm.Status, itm.ImageIconPath, itm.OptionsList)
        StPanCheckBillItems.Children.Add(grd)
    Next itm

    LbTotalBillLine2.Content = bill_total

    CheckBillNewScreen()

    orderList = New List(Of MenuItems)
    orderCol = New Collection()
    uiUpdates("bill")

    prev_grp = -1
    prev_cat = -1
    prev_itm = -1

    checkbill_snd.Play()
End Sub

INTERFACES:

VB.NET + WPF Home Automation control software and user interface

CODE SAMPLE:

‘LEVEL 2 — ZONES
Dim subitms2 As TreeViewItem = subitms1.Items(i)
For j = 0 To subitms2.Items.Count – 1
Dim loc_id2 As Integer = CInt(subitms2.Items(j).Header)

‘L2 own elements:
Dim TbZoneTitle As New TextBlock With {.Text = xmlData1.Elements(loc_id2).itmTitle, .FontSize = 22, .Foreground = Brushes.White,
.Padding = New Thickness(5), .TextWrapping = TextWrapping.Wrap, .Margin = New Thickness(5, 0, 0, 10)}
TbZoneTitle.Effect = New Effects.DropShadowEffect With {.BlurRadius = 0, .ShadowDepth = 2}
TbZoneTitle.Name = xmlData1.Elements(loc_id2).itmUID + “_label”
If IsNothing(FindName(TbZoneTitle.Name)) Then ScrollStack.RegisterName(TbZoneTitle.Name, TbZoneTitle)

Dim stpanzone As New StackPanel With {.Orientation = Orientation.Vertical}
stpanzone.Children.Add(TbZoneTitle)
Dim brd_zone As New Border With {.BorderBrush = Brushes.Black, .BorderThickness = New Thickness(0),
.Margin = New Thickness(5), .CornerRadius = New CornerRadius(5), .Background = BConv(“#66000000”)}
‘L3 container:
Dim stpanzone_btns As New StackPanel With {.Orientation = Orientation.Horizontal}
stpanzone.Children.Add(stpanzone_btns)
brd_zone.Child = stpanzone
wrpan.Children.Add(brd_zone)

‘LEVEL 3 — LIGHTS
Dim subitms3 As TreeViewItem = subitms2.Items(j)
For k = 0 To subitms3.Items.Count – 1
Dim loc_id3 As Integer = CInt(subitms3.Items(k).Header)

‘L3 own elements:
AddButtons(loc_id3, stpanzone_btns)

‘…
Next k
Next j

VB.NET + WPF Interactive Presentation Interface for SSG, Thailand

VB.NET + WPF Digital Signage software

  • 3 sub applications: Admin, CMS, Playback
  • Plugins support
  • 23 modules at CMS app
  • 380 KB code at CMS app
  • 16 extra libs at CMS app
  • template system
  • and so on

XML TEMPLATE SAMPLE:

<?xml version=”1.0″ encoding=”utf-8″?>
<screens>
<template>
<set id=”title” type=”str” def=”New Screen” minmax=”” sel=”” title=”Title” hint=”…” />
<set id=”dir” type=”str” def=”NewScreen” minmax=”” sel=”” title=”Directory” hint=”…” />

<set id=”layout” type=”str” def=”” minmax=”” sel=”HOR STACK,VER STACK,LAYERS” title=”Layout” hint=”…” break=”True”/>

<set id=”left” type=”int” def=”0″ minmax=”0,11520″ sel=”” title=”Left” hint=”…” break=”True”/>
<set id=”top” type=”int” def=”0″ minmax=”0,11520″ sel=”” title=”Top” hint=”…” />
<set id=”width” type=”int” def=”240″ minmax=”0,11520″ sel=”” title=”Width” hint=”…” />
<set id=”height” type=”int” def=”240″ minmax=”0,11520″ sel=”” title=”Height” hint=”…” />
<set id=”margin” type=”int” def=”0″ minmax=”0,25″ sel=”” title=”Margin” hint=”…” />

<set id=”time_limit_enabled” type=”bool” def=”False” minmax=”” sel=”” title=”SCHEDULED” hint=”…” break=”True”/>
<set id=”time_limit_from” type=”timedate” def=”08-00-00,2014-08-01″ minmax=”” sel=”” title=” from date and time” hint=”…” />
<set id=”time_limit_to” type=”timedate” def=”18-00-00,2014-10-01″ minmax=”” sel=”” title=” to date and time” hint=”…” />

</template>
</screens>

CODE SAMPLE:

Public Sub New(ByVal localsource_path As String, ByVal custom_root As String, ByVal sel_package As String)

Me.LocalSourcePath = localsource_path
Me.CustomRoot = custom_root
Me.SelectedPackagePath = sel_package

Dim LocalContentPreTitle As New TextBlock With {.Text = “LOCAL:”, .FontSize = 14, .Foreground = Brushes.White, .Margin = New Thickness(10, 0, 0, 5)}

Dim LocalContentIcon As New Grid With {.Width = 150, .Height = 75, .Background = Brushes.White, .Margin = New Thickness(5), .Name = “LocalContentIcon”}
Dim LocalContentSelectionBorder As New Border With {.HorizontalAlignment = HorizontalAlignment.Stretch, .VerticalAlignment = VerticalAlignment.Stretch,
.Name = “LocalContentSelectionBorder”, .BorderThickness = New Thickness(5), .Margin = New Thickness(-5),
.BorderBrush = New SolidColorBrush(ColorConverter.ConvertFromString(“#6ab4d8”)), .Visibility = Visibility.Hidden}
Dim LocalContentTitle As New TextBlock With {.Text = “Local Content”, .FontSize = 18, .Margin = New Thickness(5, 5, 5, 5)}
Dim LocalContentPath As New TextBlock With {.Text = Me.LocalSourcePath, .FontSize = 10,
.TextWrapping = TextWrapping.Wrap, .Margin = New Thickness(5, 30, 5, 5)}
Dim LocalContentFrontGrid As New Grid With {.Background = New SolidColorBrush(ColorConverter.ConvertFromString(“#99000000”)),
.Name = “LocalContentFrontGrid”, .Visibility = Visibility.Visible}

With LocalContentIcon.Children
.Add(LocalContentSelectionBorder)
.Add(LocalContentTitle)
.Add(LocalContentPath)
.Add(LocalContentFrontGrid)
End With

INTERFACES: