Turn-key PCB assembly services in prototype quantities or low-volume to mid-volume production runs

Agile Web Development with Ruby on Rails

What is Ruby on Rails? Ruby on Rails (known also as RoR or simply Rails) is an object-oriented, multi-level, full-stack framework running via a programming language called Ruby. Many web developers choose to work in Ruby on Rails due to its numerous advantages. Why do developers love RoR? The best known advantage of Ruby on Rails web development is the speed. A variety of handy instruments and the support offered by Ruby on Rails community increase the speed of development by about 30-40%. With Ruby on Rails, you get excellent built-in testing, caching, localization, validation and deployment tools. And that’s not it. You also get an opportunity to customize routing and titles of the website sections, so that your projects always have simple and beautiful URLs. Database migration process is perfect in Rails. The database structure always stays in the repository, and every change in structure gets instantly documented.

Continue reading

Reading serial data from chipKIT UNO32 using Python3 and pyserial

installing python3 - path variable

Python is a great programming (scripting) language that is supported on all platforms. Embedded enthusiasts love it because of variety of modules that allows connecting things to internet and other crazy stuff by writing only few lines of code. Today my interest was to read serial data with using Python 3.3 and pyserial module. Python 3.3 is still new and there is a majority of modules that needs to be ported from Python 2 to Python 3, but I hope soon they will here. Serial module seems to be working fine in Windows 7 x64 and decided to share my experience. First of all download and install Python 3 (current release is Python 3.3) Just be sure to include “Add python.exe to Path” so you could run Python anywhere in you computer. We wont go in to details on how to setup this tool. It is pretty robust. After setup python install is placed in C:\Python33. To test if things work OK open command prompt and type python you should see python prompt:

Continue reading

Custom software design 2012

Not every company can easily afford the complete custom software design. There are several reasons for it; however the main one is the drastic tendency of the multiple templates used in this field. The usual templates are meant for different cases including most kinds of the offered software. They are basically used when the new product is actually based on something already existing, so you are not forced to start everything from the very beginning. Instead you can just use the basic template and make some kind of IT remix with it. As a result you will get the newly created software in comparably small time. This means less efforts, time and skills; however you still can get enough money for this work. Sure thing this creation will never be as craved as the one made from the start, yet some of the clients are completely satisfied with it. On the other hand there are cases when you just can’t use the basic stuff and have to perform the custom software design. This happens when the software is of the rare kind, so there are just not enough ready templates for it. On the other and the needed software can…

Continue reading

Leverage Existing Display Data Channel with I2C Adapter

You’ve been heard about the I2C before? However, do you know the exactly use of it? I2C or Inter-Integrated Circuit is a two-wire serial bus that commonly used in computer for extremely low-level communication. I2C can easily found in the microcontrollers, embedded systems, and industrial computers. DDC is simply an implementation of an I2C bus. The solid reason why you must use I2C because the cost is far cheaper than the Commercial USB to I2C, which can cost up to $100 to $250! DDC is established in four wires: +5VDC, ground, serial data and serial clock, the pin numbers of which will also vary depending on the type of video port used. For a 15-pin VGA cable, the pins function will be:

Continue reading

New WinAVR 20080411 has been released

Open source rocks isn’t it? Here is a new WinAVR 20080411 release available for download. As always new release has lots of tweaks, bug fixes and optimizations. There are new XMEGA series microcontrollers preliminary included in supported device list. So we may have a chance to put hands on these new cool AVR microcontrollers. Here is a list of new things in WinAVR: Support of new AVR devices: ATxmega128A1, ATxmega64A1, ATxmega32M1, ATxmega32C1, ATxmega32U4, ATtiny167; New GCC4.3.0 compiler; New version of AVR-LibC 1.6.2; Two new Makefile templates added where one will generate a library instead of an application (Makefile.lib), while another will enable whole program optimization. This seems to be new thing – it will be interesting to experiment with. New version of SRecord 1.38; New version of SimulAVR 0.1.2.5; Removed AVR-Ada (as they say – temporary)-I don’t need it anyway… Just recompiled my old code – seems to be working fine. So I recommend you to update to newer WinAVR version.

Continue reading

xDRV-driver for LPT with interrupt service routine

Driver xDRV.sys is driver developed by Иванов Д. Ð’.(www.pcports.ru) and is capable to work(read write) with any PC port under windows NT, 2000, XP. But main advantage of this driver is that it can catch and handle LPT port interrupts (in this case LPT1 with address 0x378 with IRQ 07). Program part of xDRV Lets see how this driver can be put in action. First of all download packed archive with driver and library with functions. xDRV.sys <13.2kB> In this package you will find driver xDRV.sys, dynamical library xDRV.dll, statical library xDRV.lib, which may be needed while compiling project with statical connection of dll and header file with function prototype description which can control driver. Let see the functions: bool xDRV_OpenDriver(); Driver xDRV.sys is dynamically loadable. For loading this driver and initializing this function is used. If driver is loaded successfully, then function returns TRUE otherwise FALSE. This function has to be called one time at the beginning. If function returned FALSE then try to restart computer might be xDRV.sys already has been loaded to the memory and function xDRV_StopDriver() wasn’t used. Driver and library has to be placed in same directory where project files are. void xDRV_StopDriver(); As it…

Continue reading

Control LPT port under windows XP using Delphi

Another way of controlling LPT port under Windows 2000 and XP using Delphi language. In this case library inpout32.dll is used which allows controlling LPT port registers. Ready project for Borland Delphi 7.0 you can download here: Project Files<187.5kB> And now how to do this from beginning. Start Borland Delphi 7.0 and make simple form where you can enter Data to be sent to port, Port Address, buttons for writing to and reading from port.   If you are familiar with building forms this should be ease task. OK now lets start programming. First of all wee need somehow to include inpout32.dll in to the project. For this Delphi has several ways, but lets stay to the easiest one when library is in same directory, where project is. Then in header in section uses we have to place function prototypes Out32 and Inp32 with special compiler directive external, saying where to find this finction. uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; function Inp32(PortAdr: word): byte; stdcall; external ‘inpout32.dll’; function Out32(PortAdr: word; Data: byte): byte; stdcall; external ‘inpout32.dll’;   Then lets go to the button methods. For this double click on button in form and you will…

Continue reading