Pick and Place Reversing – Part 1 – Inventory

In this series I am going to work on reverse engineering a Pick and Place machine. This because the software for it is a mess and we want to add several new functions to it.

The first part of reverse engineering any product is to make an inventory of what it contains, general components, what is used to make it work, etc.

The pick and place machine is a MDC 7722FV [Information] and is driven by a regular Windows XP machine (Intel E3200, 1GB of ram). There are several extra power things which seem more of an afterthought than an actual feature, there is for instance a vibrating feature for certain feeder trays, but it goes off to a regular light switch.

Because the machine hasn’t been used for a while so it will need to need to be cleaned first.

Before:

IMG_20140728_175447 IMG_20140728_175451 IMG_20140728_175454

 

After a good blowout:

IMG_20140728_175831 IMG_20140728_175850

Outside of the regular stuff, there is a capture card installed and a custom USB device (kpsUsba2 VID_04B4 PID_8613). The capture card is an Imagenation PXC200AL card which does appear to have some unix drivers according to some random Google links.

I installed an USB sniffer to monitor the raw data going to the USB device. It is an service called USBPcap which as the name suggests generates pcap files that can be loaded into wireshark.

The first step was to analyze the software, it is written in Visual Basic version 6, without P-Code enabled (that’s a shame) but the main code seems to be offloaded to different code, except for one module, every code is relatively small and should be easy to reverse. There is a total of 89 windows screens varying from input-, debug- , information-, calibrarion-, and help-forms. I will write some code that converts these to some more modern format, probably to C# (so it can be used in mono), or Qt (so it’s immediately cross platform), but for complete crossplatform compatibility we (or I) need to write a driver for the USB stack, and convert several modules, where the KPS module is the largest one (which is completely written in MFC C++, which will take a while longer to reverse).