Hobcat
Hobcat installer download: hobcatsetup.exe
Hobcat
database browser help
Hobcat database browser setup
Hobcat USB Interface
Hobcat is developed as a PC control, configuration and monitoring program for the TrxAVR_Picastar transceiver control board.
Communication with
TxrAVR is via USB.
TrxAVR uses a FT245R USB devicefrom FTDI (Future Technology
Devices International Ltd).
This device and its supporting software provide a complete USB interface solution.
The device contains FIFO buffers, EEPROM, clock circuit and USB resistors.
FTDI provide PC drivers in the form of a dll (ftd2xx.dll). This dll is used by:
Hobcat connects to ft2dxx.dll which must be installed for Hobcat to run.
Hobcat source code and installation/upgrades
Hobcat
is written in Delphi 6 and uses developer addons: Raize components,
Express Quantum Grid suite, Embedded HTML help.
Recent source code is downloadable as: hobcat
source code (It will not compile without the Delphi addons!)
Installation uses
Wise Installmaster 8.1. The installer program, HobcatSetup.exe is both an installer
and upgrader.
It does the following:
Hobcat has built in FTP
upgrade utility which checks the homebrew-radios.net website for a newer version,
and then optionally downloads the latest hobcatsetup.exe. (.... has stopped
working - under investigation!)
Hobcat windows
Hobcat
is written using a MDI (Multiple Document interface).
This allows several windows to open simultaneously (as with wordprocessor or
spreadsheet documents).
The open documents are listed in the Windows menu. The windows
may be shown one at a time or cascaded or tiled.
At present, Hobcat contains the following windows:
TrxAVR_Picastar
Setup/configuration
Hobcat provides menu options for configuration of a TrxAVR-Picastar transceiver
vai USB link.
These are descibed in detail in the seup instructions:
Setup
1 Overview
Setup 2 USB
Setup
3 Prorgamming
Setup 4 DSP
code¶ms etc
SWR
calibration description
SWR
- do a clibration
SWR
- Calibration summary
Multiple Windows
With a large resolution monitor, Hobcat can display
mulitple monitoring and control windows.
Debug window
Hobcat's debug window is shown below:
Hobcat's debug display
is monitoring selected TxrAVR internal variables via the FT245R USB port.
The toolbar controls provide for 'singleshot' or repetitive monitoring.
Each variable needs only single line of code adding to TxrAVR's taDebug.c module.
eg: result &=
dbSendVar("EncoderTest[1]",(uint8_t*)&EncoderTest[1],'B','D');
This line of code includes the variable name as text and
the formatting requiement (B = byte, D = decimal display)
- Thus no setting up is needed on the PC-based Hobcat program - It simply asks
TxrAVR for the configured variables.
In the above display, the 9600baud messages from Encoders8 are controlling the
values of the array of eight test variables, EncoderTest[0-7].
(The variable: StringRx0 shown above contains
the latest Encoders8 output: $3+01
(which means encoder 3 increment by one)
The right pane has been
dedicated for the PORT, DDR and PIN registers of the Atmega2560's eleven I/O
ports.
Other Atmega2560 hardware registers can be optionally displayed in the left
variables pane , eg: ADMUX, EIMSK etc as shown.
DDS window
Hobcats DDS window is shown below;
The A and B VFO windows display all the
data in the A and B Vfo slots.
Mouse control and some key board control is provided.
VFO A/B switching is by left-clicking the frequency display.
(Right-clicking the frequency display allows manual frequency entry)
The above display shows XIT - selected
by a long pressof # on the transceiever or by the XIT button.
Split is on initially by default, as in Picastar.
VFOs are labelled R and T as in TrxAVR-Picastar and VOF frequencies are initially
that or the previous
active VFO.
On transmit, the transmit VFO show as active (yellow digits) and has a transmit indicator.
Clicking the Split button
switches Split off but maintains XIT mode. With Split off, transmit frequency
is that of VFO A
VFO A freqeuncy window has been right-clicked
to allow manual frequency entry.
(The backspace and ESC keys are supported)
MOX button
(manual
T/R switching)
Version 1.055 added a MOX button to the DDS window. See: Hobcat
MOX
DSP window
Hobcats DSP window is shown
below.
The minimum monitor resolution requirement is 1024x768. (800x600 is not supported!)
Hobcat's DSP display on receive is shown below:
The parameter names and max, min and multiplier are from User2b2.xjp, but the data is from TrxAVR.
The
parameter list EXCLUDES those parameters whose name in Use2b2.xjp is preceded
by an 'x'.
This fact is hard coded in TrxAVR-Picatar.
These locked parameters were optimised by G3XJP when Picastar development ended
in September 2008
and should not need to be changed.
( They could in fact be changed in User2b2.xjp and then transmitted to TrxAVR....
this is seriously not recommended .... hence no access to them
in Hobcat / TrxAVR)
Note the yellow edit
box. Clicking on the Noise blank level cell displays the grey down arrow.
A further
click on this arrow displays the yellow spin edit box which allows the volume
to be adjusted. TrxAVR_Picastar responds
as you adjust it.. and the value is stored in EEPROM). A final click away from
the edit box completes the edit.
The bottom right controls display the status ot the corresponding TrxAVR switches
and also provide PC control of these switches.
The G, Y and R buttons will switch parameter sets on TrxAVR-Picastar.
The enc column shows the assignment TrxAVR's rotary encoders and potentiomters
to parameter control (see Encoders8).
TrxAVR supports upto eight encoders (labelled 1 to 8) and two patentiomters
(labelled A and B). The assignment of these is made in TrxAVR.
The analogue pots are easy to connect but are of somewhat limited use as the
parameter assumes the pot-defined value as soon as assigned.
Volume (2.1) is the most obvious use, and is modified to range 50-100 (rather
than 0-100). The full ADC range of 0-1023 might not be achieved
and so the parameter range is controlled by ADC range 100-960. (ie the parameter
control uses approx. 85% of the pot's rotation)
Note that when
you control the DSP with Hobcat, you are communnicating with the DSP through
TrxAVR which converts the USB commands
into serial telemetry to the DSP. The adjustments that you make are stored in
TrxAVR's 24LC512 EEPROM and so are retained on power down/up.
However. if DDS39 = parameter-reset-mode is on, all parameters will be set to
deafult backup values on startup.
TrxAVR-Picastar operates
with parameter 5.2 set to 2. This provides for simultaneous internal (S-meter,
graphic DSP display)
and external (Hobcat) monitoring.
I was able to confirm the correct operating of this DSP display by running Hobcat's DSP display (via USB) and G3XJP's DSP monitor display (via RS232) alongside each other in the PC screen.
Data
route:
The
DSP unit has two-way 9600 baud telemetry with UART2 of TrxAVR's ATmega2560 controller.
This is routed through a 3.5mm jack socket which allows standard Picastar communication
via serial link.
This is used by G3XJP's test and IF clalibration programs. (and some G3XJP loader
functions if you wish)
Hobcat's DSP display on transmit is shown below:
Coding:
Hobcat is
written using Borland Delphi 6 with addon software:
Raize components
These provides enhanced versions of standard windows controls, eg: flat buttons.
The LED bar indicator is also due to Raize.
Developer Express
Quantum Grid Suite
This provides a superb
set of components for data-aware grid and tree list development.
(superb = great effects from minimal coding!!)
The are four instances of their TdxDbgrid on the DSP window. The uppermost is
the gain bar which is a grid with one row, one (visible) column and no header!
The grids are designed to display data from remote database datasets using SQL
quereies. ( You can in fact do live editing of database tables accross the internet)
In Hobcat there is no database. However, DE provide a very useful TMEMdata component
which is descendant of Deplhi's TDataSet component which is the common ancestor
of various database access components. TMemdata has database-like fields. You
link it to the grid, create some fields corresponding to the grid columns and
then populate and add records, one for each grid row. TMEMdata is thus a tempory
memory based database.
The meter bars and calibration markings are produced by intercepting the cell
drawing message and drawing lines and rectangles. DE make it relatively easy:
One mouse click creates a skeleton cell-owner-draw intercept routine with column
number, row number, cell coordinates, cell drawing canvas etc etc all provided
as parameters. (This routine will be called every time the cell is redrawn ..
ie: on data upadates - but also .. repetitively .. when you move the window
or drag something accross it..... all this is taken care of .. I dont have to
do it))
Below is part of the cell owner -draw routine for the cell with eight abr meters
// The following parameter provided automatically
are used here:
// ACanvas - the drawing object with lines, rectangles, brushes,
pens, drawing routiens etc
// ARect - a rectangle (left, top, right and bottom) which
defines the grid cell that we are drawing
//ANode - the current mode (= grid row) -whose field values
contain the data
//AColumn - the current grid column
//ADone - a true/false variable. We are in a interception before
the start of the built in default cell drawing routine
// - setting ADone := true will block the default
routine from overwriting our handwork
// In other situations, this owner draw facitily might
just change a colour or font style for the cell (using AFont)
// and so ADone is not set as we want the default routine
to draw the text but with our font changes.
with ACanvas,
ARect do
begin
dbpeak := ANode.Values[MeterDbPeakFieldIndex]; //
read the peak value field for this node (row)
Pen.Style := psSolid; // Pen is
a property of ACanvas
Pen.Mode := pmCopy;
Pen.Color := dxDBGrid_Meter.GridLineColor; //
defined in a property editor table
Pen.Width := 1;
if AColumn = MCol_Meter then //
if we drawing the meter-bar cell
begin
Brush.Color := clWindow; //
window colour to blank the cell
FillRect(ARect); //
Blan teh cell. ARect has screen coordinates of the cells corners
for i := 1 to 9 do //
we are dividing the 90dB bar into 9 x 10 blobs
begin
x := Left+40*i; //Left
is the X coord of cell left (+ 40 pixels per 10dB)
MoveTo(x,Top); //
go to the top at this X position
LineTo(x,Top+2); //
draw downwards a three pixel calibration line
MoveTo(x,Bottom-2); //go
to cell bottom at this X position
LineTo(x,Bottom); //
draw upwards a three pixel calibration line
end;
//
BarRect is a rectangle for the meter bar blobs
BarRect.Top
:= Top+3; // top of BarRect is 3px below top of cell (clears
the cal marks)
BarRect.Bottom := Bottom-3; //bottom
of BarRect is 3px above the bottom of cell
for i := 1 to dbpeak do //
we will draw one bar for every dB
begin
BarRect.Left := Left-2+i*4;
// x coord = left of cell -2 + 4 x dBs
BarRect.Right := Left+i*4; //
x coord = left of cell + 4 x dBs ( so 3 pixels wide)
Brush.Color := BarColours[(i-1)
DIV 10]; // we already have table of nine colour codes
FillRect(BarRect); //
draw the rectangular blob using BarRect coords, and Brush.color
end;
ADone := true; //
Block the subsequent built-in default cell drawing routine
end; //
from doing anything to this cell that we have so carefully drawn!