Programming and Software Development
Programmers are not made but born. For people that don't desire to program it is the most boring of work.
I will have to keep my commentary to a minimum regarding my programming examples. If you have questions about them please ask on my forums. These examples will contain some open source code that I found on the internet as well.
BASIC and PASCAL
I first learned to program BASIC and PASCAL early on in High School using Apple II and Commodore 64 computers.
Remember the classic code:
10 PRINT "Hello"
20 GOTO 10
This code would lockup a computer and display "Hello" over and over again at a break neck speed.
Modern Visual Basic is quite a bit different and has become the preferred business programming language.
Visual Basic for Microsoft Access
VBA is a tailored version of Microsoft Visual Basic. It is designed to work with Microsoft Office products mainly Access, Excel and Word. I have used VBA in Excel, Access and Word for database dashboards, database custom reports, sales information tracking, project tracking and scheduling.
Visual Basic 6.0
This program was designed to work with USB magnetic card readers and SERIAL barcode scanners. The idea was to capture information from trade shows and add more sales lead information without having to use the trade show rental equipment. The salesman would then export the leads to an Excel workbook. This proved to be unrealistic because you never knew what hardware was going to be used from trade show to trade show. None the less it is the basis for USB and SERIAL software communication.
I wrote this software to monitor a prototype biomass gasifier. The gasifier had a Modicon PLC with a RS232 Modbus card which I connected to a computer's serial port. To connect the software to the PLC the computer serial port number is entered into "Com#"; then click "Connect to PLC". For development there are five Modbus tests and an event log. To retrieve temperatures, system air pressure, flue gas oxygen percentage, blowers air flow rates and biomass fuel feed rates click "Start Polling". The GasifierClients that connect to the GasifierServer are listed in the connections status listing.
Sorry due to legalities I can't post more of this project.
To connect GasifierClient.exe to a GasifierServer.exe server an IP address or DNS URL (example: http://machine.somedomain.com) is entered into the Remote IP textbox; then click "Connect". The connection status is displayed in "Connection" and "Rec" displays the number of received bytes. The "Rec" should be increasing continuously. If it isn't, then something is wrong and you are not receiving updated information. Alarm events are listed in the "Alarms" section. When GasifierClient is receiving data it can be logged. In the "Data Logging" section click "Start". A "File Save As" dialog window will appear. Browse to the location to store your data file and name it. The data log file is a comma separated file (CSV) because this file type can be easily imported into analysis software. Data is written to the file every minute.
Sorry due to legalities I can't post more of this project.
For more information on Modbus go to Modbus Explained
Visual C++ 6.0
This is a 3-D screensaver that you can easily customize by changing the program resource bitmaps with your pics and logos.
Moving the mouse doesn't deactivate the screensaver; you have to click a mouse button or press a key on the keyboard.
Chadscr.scr is a Microsoft Foundation Classes (MFC) program. I used the OpenGL libraries that come with all versions of Windows to accomplish the 3-D animation.
Visual Studio 2008
This is what I use for programming now and I like it very much. The "IBM Database Add-Ins for Visual Studio" has allowed me to write apps that interface with IBM's DB2 Database. Using the "Rebex" library my apps are sending files by FTPS.
With Visual Studio 2008 I have created an ASP.NET Website that pulls information from an ERP on the IBM DB2 Database. It uses Microsoft SQL Server 2008 and Application Services for SQL Server to manage website user security. Database information tracked by the app is store in its own database on the MS SQL server.
ASP.NET Example for PCI Compliance
This ASP.NET application takes into account all the core security principals for PCI compliance. You can find out how to do session management, async encryption and html output filtering. This example include scripts to create addition tables in your MS SQL Server and it also leverages the ASP.NET Membership provider.
You will need to do a few things before this project will work.
When you run aspnet_regsql.exe to install the Asp.net database and services you may want to call the new database “sans” for quick setup.
Also you will need to change the main “web.config” line:
<add name="TestConnectionString" connectionString="Data Source=TEST2;Initial Catalog=sans;Integrated Security=True"
Replace the “Data Source=TEST2” to your SQL Server instance.
I know I left out a try\catch here or there.
I needed to create a website that would run on all operating systems and browsers with total mediation and graphic animation. This is what I came up with. Its a nice visual benchmark test for mobile devices. The graphics are speed up with load caching.
EDI AS2 Communication and SFTP File Uploads
This program does enterprise EDI and SFTP communications with a large retail chain. It has been in production use for a years. I personally don't like to use 3rd VAN's if possible. Instead I opted to purchase the IP Works EDI V8 from NSoftware. The IP Works .Net components allowed me to do direct to customer AS2 EDI communication. For SFTP communications I chose the Rebex FTP/SSL for .NET Framework 2.0 components. I highly recommend both of these software companies.
EDI purchase orders are received on an ASP.NET website and the data stored in a Microsoft SQL database. This Forms application Purchase Orders tab displays the purchase order tables. When staff click the ACK check box for an EDI PO an EDI acknowledgement is sent via AS2 communication to the customer's servers. Once staff create a sales order in the ERP they check off the QDB column for the PO. This causes the application to pull sales order information from the ERP database and put it in the EDI database with initial shipping information. I wrote a console application that runs as a scheduled task on a server to package the shipping formation and send it as a file SFTP update to the customer's GIS shipping system. Double clicking on a line item in the Purchase Order tab opens the PO in Excel for sales order entry into the ERP or printing.
I will only be able to display snippets of code since this is a production software package.
The Invoices tab display the EDI database invoices tables. On the same day a sales order is shipped in the ERP staff add the ERP invoice number. This causes the application to pull final ERP sales order, shipping and shipping barcode scanning label information (another one of my app's) to be added to the EDI database for SFTP transmission to the customer's GIS system.
When staff check off the SENT column for an EDI invoice the invoice is sent AS2 to the customer for payment.
This whole process is a major money and time saver for both customer and vendor.
Visual Studio 2010 C# Outlook Add-in Code Examples
I wrote an Outlook 2010 add-in to copy email communications to our Syteline ERP's Customer Interactions.
This first version was a Outlook Form Region that would be display when emails were previewed from specific Outlook mail item folders. Emails were saved into a *.msg file and a DocTrak record created linking the message file to the customer interaction. The user would need to choose which system to search for a contact and the contact type. Once found a contact or company record could be added to the export list. All entries in the export list would get a DocTrak link and a copy of the email text in a Syteline customer interaction.
After using this for a while I decide this process was too complicated and cumbersome which led to a rewrite.
Outlook Form Region Code Examples:
For the rewrite I decided to make the Outlook Add-in a button in the Ribbon and in the main Message Tab. The picture of the Outlook Ribbon below shows the button circled in red. The button would only appear when you open a mail item. Clicking the Export button open a Windows Form that has a real time search as you type feature that populates the list below. To copy the email to Syteline customer interactions or service order incidents all the user has to do is double click the line in the search results datagrid.
Outlook Add-in Ribbon Code Examples:
Ribbon Message Tab
One of the projects I worked on required me to source computer hardware for an outdoor environment. I decided to recommend Eurotech PC104 Embedded Computers. PC104 boards are stackable small square form factor that easily mount into enclosures. To add more IO capabilities you purchase boards that simply stack onto the PC104 bus connector one on top of the other. Another reason I went with Eurotech was they offered an Embedded Linux toolchain ready to go.
Zeus Embedded PC Linux C++ code example:
Zeus Embedded PC
The nice thing about the Zeus's GPIO is that there is a lot of it and its 5 volts which works nicely with relays.
Viper Embedded PC Linux C++ with Viper IO Board code example:
Viper Embedded PC
Viper IO Board
The bad thing about the Viper's GPIO is that its 3 volts. Eurotech had the Viper IO Board available which saved me from having to develop with transistor based relays.
Titan Embedded PC Linux C++ with AIM104-Relay8/IN8 code example:
Titan Embedded PC
The bad thing about the Titan's GPIO is that its 3 volts. Eurotech has the AIM104-Relay8/IN8 available which saved me from having to develop with transistor based relays.
Linux C++ C-56 Thermal Printer code example:
Hengstler C-56 Thermal Printer
The C-56 Thermal Printer is very reliable in outdoor environments.
Linux C++ Fork a program into a Daemon service code example:
The best way to contact Chad is by email at firstname.lastname@example.org.