WB5KIA
 

Questions and Answers

 
sdfdsf


QST Articles by WB5KIA

"Beginners' Computer Programming for Ham Radio Parts 1, 2 & 3" appeared
in the February, March and April 2003 issues of QST magazine.

 

Several ham radio utility projects and their Delphi 1 & 5 and Visual Basic 3 & 5 source code are in a package that can be downloaded now for Part 2 and Part 3 from the ARRLWeb www.arrl.org/files/qst-binaries. Look for the files 0303Grad.zip and 0304Grad.zip. The files are described in the second and third installments of a three part article about how to program Windows Amateur Radio projects for novice programmers by WB5KIA.

The beginners' computing articles ran in the February, March and April 2003 issues of QST. The Visual Basic 5 projects also load with Visual Basic 6, the Delphi projects with Delphi 7. Projects developed include utilities to calculate bearing and distance, grid squares from geographical coordinates, distances between grids, sunrise/sunset times for any QTH, how to use simple geographical maps in a program and other topics. The code for Part 2 and 3 is written so that beginners can get it into their compilers easily and use just the standard programming controls.


April QST

JULIAN DATE PROBLEM? Richard, W5SXD, correctly points out that the slashes in the code on Listing 3 should be back-slashes (\) instead of slashes (/).

partA = 146097 * (Year1 / 100) \ 4
partB = 1461 * (Year1 Mod 100)
\ 4
partC = (153 * Month1 + 2)
\ 5 + day1 + 1721119

The / 's divide and result in decimal fractions. Using \'s results in the required integers.

Provide text boxes for Year1, Month1, day1 and juliandate to calculate that March 28, 2003 is 2452727.

Private Sub Command1_Click()
day1 = Text4.Text
Month1 = Text1.Text
Year1 = Text3.Text
If Month1 > 2 Then
Month1 = Month1 - 3
ElseIf Month1 <= 2 Then
Month1 = Month1 + 9
Year1 = Year1 - 1
End If
partA = 146097 * (Year1 \ 100) \ 4
partB = 1461 * (Year1 Mod 100) \ 4
partC = (153 * Month1 + 2) \ 5 + day1 + 1721119
JulianDate = partA + partB + partC 'JULIAN DATE
Text2.Text = JulianDate
End Sub

 

ERRATA Part of the text in Listing 1 of page 40 of the April QST should read as follows:

DELPHI 5
// Calculate the grid from latitude and longitude data
// Latitude is the latitude in degrees, N+, S-
// Longitude is the longitude in degrees, W+, E-
// the resulting 6 character grid locator is the value placed
// in edit3.text
// Delphi has different string handling capabilities from VB and
requires
// different code
//Delphi 1 does not permit long strings in the code window
//such that the edit3.text needs to be broken into several
//statements

Longitude:= strtofloat(Edit2.text);
Longitude:= -Longitude;
Latitude:= strtofloat(edit1.text);
Longitude:=(Longitude+180)/20;
Latitude:=(Latitude+90)/10;
A:=int(Longitude);
B:=int(Latitude);
Longitude:=(Longitude-A)*10;
Latitude:=(Latitude-B)*10;
C:=int(Longitude);
D:=int(Latitude);
edit3.text := chr(strtoint(floattostr(A+65))+
chr(strtoint(floattostr(B+65)))+chr(strtoint(floattostr(c+48)))+
chr(strtoint(floattostr(d+48)))+chr(strtoint(floattostr((INT((Long
itude-C)*24)+65))))
+chr(strtoint(floattostr((INT((Latitude-D)*24)+65))))


(note that edit3.text := ... and the four other lines shown in dark blue should be coded on a single line. In Delphi 1, this line needs to be broken into several strings. Give them names, add them together and equate them to edit3.text.)

The code in the article listing works in most instances. It, however, introduces a rounding error resulting in incorrect grid designations for some combinations of latitude and longitude. The code and files for the Delphi DGrid program on the ARRLWeb are correct. I apologize.

The VB code at the top of the page also has a small glitch.
W+, E- should have been W-,E+ for the algorithm listing as shown but W+, E- is correct for the full program listing that uses some simple input error routines and 'corrects' for the longitude sign.

Three ways to get the algorithm to work-- get the complete code from the ARRLWeb (it works fine) or
use the existing code but place a negative sign in front of
the longitude input for West degrees and nothing for East degrees or
change
p=(p+180)/20 to p=(180-p)/20 as suggested by KD4ITI.

Also in Listing 4, regarding the second listing, the 'End if' following theline 'List1.Selected(I) Then' is misplaced. See the VB Code page Comments from Readers to get the fix.

I apologize for not catching this and the listing 3 back-slashes when proofing the article.

OVERSIMPLIFIED LEAP YEAR CALCULATION IN THE DAY OF YEAR NUMBER? The years that are evenly divisible by 4 are leap years, while the years that are divisible by 100 are not, while the years that are divisible by 400 are. Thus, 1800, 1900, and 2100 are not leap years, while 2000 is. However, it is not correct to say the algorithm is incorrect. The simplified code leap year calculation provided in the day of year number algorithm is usable for the next 97 years as it is. There are other ways to determine leap year, most of them very similar to this example. What I wanted to show was a very simple way to calculate Day of Year Number.

The following algorithm in Visual Basic will, I believe, calculate Leap-Year for any year:

If (Year1 Mod 4 = 0 And Year1 Mod 100 <> 0) Or Year Mod 400 = 0 Then '(this goes on the line above)
LeapYear = 1
Else
LeapYear = 0
End If

Insert the code in place of

'check for leap-year
If (Year1/4) = Int(Year1/4) Then
leapyear=1
End If

in Listing 2. The 'leap year' algorithm can be coded as a function and you can use it every time you need to determine if a year is a leap-year post 2000 or safely use the simplified code in the original listing until 2100. Code the function as Boolean (True - False versus the 1 and 0 in the snippet). You can find out more about Boolean Data Types and the Mod Operator by consulting your Visual Basic Help File.

 


March QST

ERRATA There is a small typo in Table 1, page 36. In the Visual Basic listing, "Text2.txt = Length" should be "Text2.text = Length". This should not affect any of the programming code.

 

HOW ACCURATE ARE THE BEARING/DISTANCE CALCULATIONS? The calculations of great circle distance depend on spherical geometry and the assumption the Earth is round. Since the Earth has an oblate shape (squatter at the equator), a spherical model has some inherent error.

The Earth's semi-minor axis is used to calibrate the algorithm calculations. The Earth's: semi-major axis is 6378.206 km; semi-minor axis is 6356.583 km and the radius of a sphere of equal area is 6370.997 km (various sources publish slightly different values).

The algorithm in QST uses a value of 6356.775 for the semi-minor axis (it's easy to find in the code). With it, measurements are quite accurate for most purposes and the distance determined by the algorithm will never be overestimated. Alun, GW7KYT, suggests one might achieve a better estimate with a value of 6371.291. In 1987, Region 1 of the IARU recommended using this value to calculate distances for contest scoring.

Which value should you use? Neither value is precise for all communications paths and both introduce errors in the calculation of great circle paths. Consider the following:

The distance between Alun's QTH at 51.547 N, 3.564 W. to 33.01 North, 96.892 West results in:

1) S. geometry and 6356.775 is 7,395km
2) S. geometry and 6371.291 is 7,411km
3) S. geometry and 6367 is 7406km *
4) S. geometry and 6378 is 7419 km**
(* arithmetic average of the semi-major and minor axes. ** semi-major axis. S. geometry is abbreviation for spherical geometry) using the Bearing/Distance program.

A 1% error at these distances is approximately 74 km. A 0.1% error is a difference of about 7.4 km. The error using a spherical geometry calculation can be as large as about 0.3% or more.

A more precise great circle distance could be calculated using a distance model based on the actual ellipticity of the Earth. The spherical model, using an 'average' axis value of 6371 km, has an accuracy of about 0.3 percent or better. Some claim using an elliptical model reduces the error to a range of 0.1 to 0.3 percent, however, experts in geodesy indicate all these calculated measurements are approximations.

Alun alerted me to a Pascal program by W9IP and N1BWT that depends on an actual oblate Earth geometry and algorithms described by P.D. Thomas, 1970, "Spheroidal geodesics,reference systems & local geometry", U.S. NavalOceanographic Office SP-138, 165 pp. The mathematics is more involved than for the simple spherical model shown in the article and may interest some readers. The source code is in the public domain. I've converted it to Delphi and will post the revised source shortly if anyone asks.

 

QUESTIONS REGARDING THE CALCULATION OF BEARINGS AND DISTANCES...LATITUDE REQUIRES A (-) FOR (S) .. DOES LONGITUDE REQUIRE A (-) FOR (E) ? HOW DO I ENTER A DESTINATION LONGITUDE OF 100 E ? Yes, south latitudes (below the equator) require a (-) and longitude east also require a (-) as the algorithm is written.

You enter a longitude of 100 degrees east like:
- 100 or 100.23 east as -100.23 West longitudes are entered as positive values, East longitudes are entered as negative values.
Think of a flat, Mercator-like map of the world that has a framework like this:

For locations up to 180 degrees West of the prime meridian, that is Canada, USA, South America, use a positive longitude. Use a negative value for degrees east. Some programs reverse this convention, that is,-180 longW ---0--- +180E as shown in black in the above figure. Geographers and cartographers use West and East, programmers assign a sign to these measurements.

If you prefer to enter West longitude as a negative value, remove the negative signs in front of the Wr and Wt values in the algorithim i.e. change
Wr = -(W1-180... to Wr = (W1-180 in the program listing and do the same for the Wt value.

What coordinate system you use depends on what other utilities your algorithm might interface with and the form any coordinate information needs to be in to work with other parts of your program.

 

DELPHI ROUNDING--STEVE, I WANTED TO USE THE ROUNDTO FUCTION BUT I GUESS DELPHI 5 DOESN'T SEEM TO HAVE IT SO THAT I COULD ROUND OFF THE DECIMAL TO 2 PLACES. IS THERE ANY FUNCTION IN DELPHI TO DO THIS?? I KNOW DELPHI-6 HAS ROUNDTO. D5 has the Int, Round, Trunc and Frac functions. The last one gives you the fractional part, the others functions give you the big part (use help on your D5 to find out exactly how they differ). None do exactly what you want to do, so try this using the Dipole example code:

begin
MHz := StrToFloat(Edit1.text);
Length := 468/Mhz;

length := length * 100;
length := int(length) * 0.01;

Edit2.Text := FloatToStr(Length);
end;

to actually truncate the value.

Or, you can do this:

begin
MHz := StrToFloat(Edit1.text);
Length := 468/Mhz;
// Edit2.Text := FloatToStr(Length);
Edit2.text :=(format('%.2f',[length]));
end;

to make the output look pretty without changing the variable value!


Change the 2f to 4f to get additional decimal places (or 3f or 6f etc).

Or you can write your own function:

function RoundTo(X : Real) : Real;

begin
X:= X * 100;
X := int(X) * 0.01;
Result := X
end;

To use the Delphi RoundTo function, place the RoundTo function code in a form's global area (Just below the


implementation

{$R *.DFM}


********** <---- goes here!!!

Put the following code in the event handler (in this case the event handler is the Form1 button click).

begin
MHz := StrToFloat(Edit1.text);
Length := 468/Mhz;
length := RoundTo(length);
Edit2.Text := FloatToStr(Length);
end;

If you want to round another variable in the same program, just call otherVariable := RoundTo(otherVariable);

What about Visual Basic? Try:

Private Sub Command1_Click()
Mhz = Text1.Text
Length = 468 / Mhz
'Text2.Text = Length
Text2.Text = Format(Length, "###0.00")
End Sub

or

Private Sub Command1_Click()
Mhz = Text1.Text
Length = 468 / Mhz
Length = Int(Length * 100)
Length = Length * 0.01
Text2.Text = Length
End Sub

 

WHERE ARE THE WORLD BITMAPS?, WHERE CAN I DOWNLOAD DIGITAL COASTLINE DATA?, WHERE CAN I FIND THE WORLDMAP.DAT FILE? Digital images (bitmaps) of the World are available at:
http://www.evl.uic.edu/pape/data/Earth/
Earth must be spelled with a capital 'E' as is printed on page 42 of Feb. 2003 QST. The images are available at several scales and formats. They are very nice.



If you are interested in the huge digital images databases of coastline and cultural data, go here: http://www.evl.uic.edu/pape/data/WDB/
The largest text based dataset is about 30 Mb and is only available in a tar compression file. Winzip won't handle them. A different file decompressor is needed. You may be able to find one on the Web.

If you are interested in the small coastline data set used in the demonstration program described in the article, you need to first download the 1.2 Mb zip file package mentioned in the article at the ARRLWeb: www.arrl.org/files/qst-binaries
After you reach the download page, locate the file in the list called 0303Grad.zip. There are four folders in the 0303Grad.zip file. A copy of the smaller database mapping file worldmap.dat, the small text based file with latitude/longitude coordinates for world coastlines, is included in three of these folders. Find the folder DMap or, VB5Maps or VBMap. Each folder has the source code for the map demonstration program, the executable file and a copy of the file WORLDMAP.dat. WORLDMAP.dat can be read with Notepad, the text editor that is part of all Windows programs.

The digital files at www.cia.gov/cia/publications/factbook are no longer available at that site. There is other information there that might be useful in your programming. Mr. Pape's WDB site mentioned above has links to a source which contains HUGE binary files..but Mr. Pape's recently indicated, the links may be permanently broken.

 

HOW CAN I GET THE BEARING/DISTANCE PROGRAM TO GIVE ME THE DISTANCE IN MILES RATHER THAN KILOMETERS? Multiplying kilometers by 0.6214 results in a conversion to miles. Substitute the following:

Distance = Int(6356.775 * GG +.5) * 0.6214 for VB or

Distance := INT(6356.775 * GG +.5) * 0.6214; for Delphi.

Want both measurements? Name the miles conversion Distance2 instead of Distance. Put the Distance2 line immediately after the existing Distance line. Place an additional Delphi edit box or VB text box on the form. Depending what this edit/text box is named, insert the following code after the line beginning Edit2.Text in Delphi or the line Text6.Text in VB --

EditMiles.text := FloatToStr(Distance2); for Delphi or

TextMiles.text =Str$(Distance2) for VB.

where the EditMiles or TextMiles is the name of the box.

 

HOW CAN I INCLUDE PRINTER COMMANDS, HOW CAN I USE A SOUND CARD, HOW CAN I...? Depending on which compiler you have, you can get excellent answers to these and other questions about general programming tasks at one of the Internet sites mentioned in Table 3 of Part 1 of the article. Look for a heading on these sites like PROGRAM, FAQ, or TIPS. Then search for the topic or control for which you want to find some example code. Someone likely has posted a detailed explanation. Alternatively, search the Internet with a search engine phrase looking something like ---- "Visual Basic""Sound Card" source or "Delphi""Sound Card" source to find alternative sites. You may have to add additional words to narrow your search ... "source code", tip, soundcard, etc. The examples in books in your local library should be adequate for most tasks. Sometimes reading another explanation in a different book might make the process clearer. There is no single way to program anything...different programmer--different route. Do whatever works for you. If you've tried the above and can't find anything, I would be glad to try to help -- send me an e-mail, I'll answer when I can. I'm like most of you, not a professional programmer and am still learning too.

The correct way to print is to use a printer dialog with a drop down menu and such in both VB and Delphi. Consult the library or a programming guru. The following will work but I don't necessarily recommend doing it this way, but it will get you technical data output on paper quickly. To print to the screen, use this code with VB after putting a Picture box on your form:

Picture1.Print a, code

--the a and code are your output variables. To print to a printer, use this code with VB :

Printer.Print a, code

--The a and code are your output variables. This is simple, non-formatted but works. With Delphi, add the word Printers to the uses clause in the main code window and this code:

begin
Printer.BeginDoc;
Printer.Canvas.TextOut(0,10,(floattostr(a)
+' '+floattostr(code)));
//continues from above line
Printer.EndDoc;
end;

assuming a and code are double precision or use Printer.Canvas.TextOut(0,10,(a+' '+code)); if they are strings.

Sound Cards? Try the ActiveX tutorial by Jack Hoxley at www.dx4vb.da.ru or look at G4ILO's site as shown in Table 4 of Part 1 and view his Delphi code practice program source code. I think it was done in Delphi 3 but the code works with D5 too. He uses a sound card to produce Morse CW audio, all manually coded. Checkout www.programmersheaven.com and look for the following files: gravis.zip, nsbtut10.zip, sblast09.zip, awe32prg.zip --I believe most of this code is in Turbo Pascal. Also try www.giangrandi.ch/jack//radio/morse-e.shtml ---look for Tymorse, again in Turbo Pascal.

 

WHAT IS THE VARIABLE H0 FOR IN THE BEARING/DISTANCE PROGRAM? The H0 variable is a remnant of a previous programming exercise. When the original code was developed,the length of BASIC variables was limited to a few characters. H0 was calculated to relate the angular distance data to a statute miles scale rather than to kilometers. It has no function in the current program.

back to top


February QST

HOW CAN I WRITE A LOGGING PROGRAM? Coding a logging program is a bit too much to explain in a beginners magazine article. There isn't enough space to discuss all the coding issues involved even here.

I have written a PSK program using WA0TTN's PSK ActiveX control (the application's screen is shown in a QEX article) that has a self contained logger. I've also written the log program whose main screen is shown in the Part 1 QST article. The original log program was written in Delphi 1 Professional. It had very few lines of code. It was very simple. The latest version got very complex as I added additional logging routines and features. I'll try to find time to clean up the code and post it on this site's Delphi Code page in the next few weeks for these projects. (Sorry, I wont' be able to post this till some time after May I have however posted Delphi and VB logging projects that use only the STANDARD controls on the Delphi and VB Code pages.)

I find working with databases is easier in Delphi than VB. It's a personal preference. If you use an Access database, certainly use VB...it was designed to work well with it. I designed my Delphi logger to use a dBASE dbIV database for the logbook. Why? I can use built-in search and sort routines and the database can be easily accessed by both VB and Delphi. I am finalizing several simple logging programs using both VB and Delphi. I hope they will be the basis of a possible future QST article or book that will discuss programming and a logging program, among other things. The article will show how to use text files, simple binary files, Access and dbIV to store the log.

Part of the 'secret' of writing a logging program is to establish a database template for the log information you'll capture before you start coding your program. The database would contain fields for time, date, station, RST....whatever you want to log. I include several 'dummy' fields in the template for expansion. If you code your program and discover you don't have enough data fields, you are looking at a major program rewrite. With dummy fields, you use more space in your database to store data in return for future flexibility!

Part 3 of the QST article directs you to articles in the literature that describe how to write a logging program in BASIC. The resources in Listing 5 should give you ideas and some nifty example code (Listing 5 is actually in the ARRLWeb download). For Access and dBASE, consult the sections in the book you use to help with your programming that discusses databases. In its simplest terms, a logging program is just a database with a lot of fancy attachments. It will require lots of manual code if you use a text or binary based database and much less with a 'standard' database like dBASE or Access. In a way, you trade one kind of headache for another depending on which programming route you follow.

 

THE FREE DELPHI PROGRAM MENTIONED WOULD NOT DOWNLOAD. HOW CAN I GET IT?. Even Delphi Personal is a big file (~150 Mb). You will probably need a T1 line. You have to fill out Borland's survey prior to being allowed to download the program. If you can not download it, try the site later. One reader was successful visiting the site the day following his first attempt at downloading when the site was being stubborn.

Alternatively, consider downloading Visual Basic 5 indicated in the Book List sidebar. This link was working March 6th.

msdn.microsoft.com/vbasic/downloads/updates
/VisualBasic5.asp
You can also find compiler updates for VB 4,5 and 6. Try also:

http://www.msdn.microsoft.com/vbasic/downloads/samples
/default.asp
Try searching here

Look for the Microsoft Visual Basic Control Creation Edition and follow the link. This is a version of Visual Basic 5 that allows you to create ActiveX controls. It also allows creation of destop applications but with restrictions. As described in the article, you can save the source code you write but the code has to be run from the design environment because the program will not create an exe file. When you later acquire a full version, you can compile the source code you develop with the Control Creation Edition and make an exe file! Great for a free try at seeing whether you really want to start programming prior to buying the full featured software.

 

I CAN'T DOWNLOAD THE LARGE DELPHI OR VISUAL BASIC PROGRAMS MENTIONED WITH MY SLOW CONNECTION!. Look for one of the suggested books that have a working version of VB6 on CD at your library or used book store. My local library has 4 different books that have a disk with a copy of either a VB5 or VB6 demo. These work - I used one demo to confirm that my VB5 programs load with VB6. A semi-regional book chain called Half-Price Books here in Dallas has had copies of the some of the books in the Book List recently. They also have other books not mentioned in the article that have a disk (and versions describing VB5) at prices between 3 and 15$. I am aware of a book devoted to Delphi that includes a copy of Delphi 4 Standard but only saw it in a second hand store once. Any of these will get you an inexpensive introduction as described in the article.

 

I WANT TO PROGRAM THE COM PORTS (SERIAL PORTS). WHAT DO I NEED? The professional versions of Visual Basic have a control called MSComm. It will allow you to easily program the ports for most functions. Visual Basic standard and both the standard and professional versions of Delphi DO NOT have a communication control. With Delphi, I have successfully used a free control called TComport referenced on page 37 in Feb. QST and recently the excellent and free TurboPower Async Professional. (see the Recent News to see how to get it!)

Several vbx and ocx controls and a DLL are available that I believe can be used with Visual Basic standard. I don't use the VB controls/dll nor do I have a link reference so you're own your own to search the net. The article by W0DZ in QST (Feb 2002, pp. 33-35) mentioned in my article uses the MSComm control. I think the complete code can now be downloaded from the Internet. Search for W0DZ and Slide Rule Dial or something like that. His code works nicely. He did a great job!

It is possible to program the serial ports using ANY of these products using Windows API calls -- it requires a lot of manual programming to do anything fancy. However, turning on and off a switch (the DTR line for example) is not hard. I have not closely looked at the Delphi code described by Mark Erbaugh, N8ME, in his article in the Sept/Oct 2002 QEX where he described an ActiveX control to control the Ten-Tec Pegasus. It appears he wrote his own Delphi 5 code for serial communication (included in the following download). His code is at http://www.arrl.org/qexfiles under the name 0209ERBAUGH.ZIP . Mark's article is called "Customize the Ten-Tec Pegasus--Without Soldering."

 

WILL DELPHI V5.0 PRO RUN ON MY WINDOWS XP FOR HOME? I had some experiences with XP where some software was not compatible but D5 is OK. I know that the VB6 trial software that comes with a VB6 book by Reselman would not load on my Xp computer but it loaded fine on another computer with Windows 95. Visual Basic 5 Pro loaded just fine on Xp so I believe that the Xp problem is with that particular trial edition. Whether there are problems with loading other software on Xp or not, I don't know. Since a reader loaded the VB6 trial that comes with Sams "Teach..VB6 in 21 days" OK on his Xp, other versions are probably alright. My copies of Delphi 1 and Visual Basic 3 are on another computer with Windows 95.

 

I FOUND DELPHI V5.0 PROFESSIONAL AVAILABLE FOR for $31.99 + shipping... Several readers have found this ad or one similar. It turned out to be for a license ONLY...no media (CD) or documentation. This you don't want. Be sure to ask / find out what you are getting before you order over the Internet! Consult the Recent Prices side bar in the article, if a price is significantly different from what I listed (and checked in early January), it might be a huge bargain or something you don't want or expect. Please be careful.

 

I FOUND MS VB 6.0 PRO EDITION AT A COMPUTER SHOW FOR $60 THERE IS AN ORANGE STICKER ON THE FRONT OF IT STATING "ACADEMIC PRICE". IS THAT THE SAME AS ACADEMIC EDITION? IS IT RESTRICTED TO PERSONAL USE? HOW CAN I TELL? (I HAVE NOT OPENED IT YET) I imagine Academic Price means the Academic Edition. The dealer should have explained what it meant. As far as restrictions, you would have to read the terms that are printed on the Microsoft license that should be in the box (if your copy is brand new). There might be a license explanation on the side of the box. It is probable you can not sell the applications you develop with the 'Academic Price' version. I believe the academic version is identical or nearly so to the ordinary Pro version other than price and license restrictions...I don't really know. There might be other software limitations. If reading the license doesn't clear up your concerns, a note or phone call to Microsoft could give you the confidence to use it as it was intended. If it isn't what you expected, you might be able to return it to the dealer.

 

I HAVE A COPY VB 3 THAT IS RATHER OLD AND I WANT TO GET A NEWER VERSION AT A CHEAP PRICE. WHERE ON THE INTERNET WOULD YOU RECOMMEND THAT I GO TO GET A NEWER VERSION? THE NEWER THE BETTER; THE CHEAPER THE BETTER. I DO WANT TO GET THE PROFESSIONAL VERSION SINCE I WANT TO GET THE DATABASE OPTION.I don't buy over the Internet. I bought my programming software through the ads in PC Magazine and a phone call. The company I bought from probably has an Internet outlet too.

I researched some of the pricing information mentioned in my article by searching with the Google search engine using phrases like --- "visual basic 6" price order --- and other 'logical' words in combination. Several 'cut rate software places' should appear in the list the search engine develops. My e-mail demonstrates people found all kinds of 'deals' on the Internet, most of them legitimate, some too good to be true. It is possible to buy only a license to use some of these compilers...no media (i.e. CD) at GREAT apparent prices. Of course, you don't want that! You might find your bargain using the Internet but please be careful and ask questions about the software you are contemplating. Make sure of what your are getting before you complete the sale.

You might be entitled to buy a product upgrade. Upgrades are available for some versions. The newest VB might not let you upgrade from VB3. Read the terms on the box to see if you qualify for an upgrade!

E-Bay and other auctions have "used" products (they should be ok as long as you get ALL the media, a copy of the license and assurances that the original is no longer loaded on someone else's computer, and an indication in the license document that transfers are actually permitted and under what terms. Newer products might have different license terms.) and new in the box products (remainders from stores that went out of business acquired by entrepreneurs) and sold legitimately.

Both brand new in the box software and pre-owned software with all its documentation might be on offer at Half-Price Books and other used book stores. At least this is the case in the Dallas area. If a box is open, read the license and see if the terms apply to your unrestricted use. Use your judgement.

New Learning editions are a reasonable, safe purchase but there are no database controls included and no communications control...you would have to use a third party control. I coded Delphi and VB logging programs using just the 'standard' controls. Most parts of the programs are working nicely although it was harder to program than using the preset stuff you can use with the Pro edition.

VB.net is very changed from VB6 such that VB3-6 source code will need to be at least partially re-written for use with it. Whatever you decide, when you buy your compiler, ask questions and be careful! Many of the sites on the Internet also have telephone numbers. I would ask questions before purchasing something.

 

MY INITIAL INTEREST WITH HAM RADIO STARTED WITH PACKET...WHEN I GOT MY TICKET AND STARTED PLAYING AROUND WITH IT, I WAS SORELY DISAPPOINTED WITH THE INTERFACES, FUNCTIONS, FEATURES, ETC. I'M INTERESTED IN DOING SOME CUSTOM PROGRAMMING, INTERFACE AROUND THE RS-232 INTERFACE AND WAS WONDERING WHAT YOUR OPINION(S) ARE WHETHER VB WOULD BE A USEFUL TOOL TO DO THIS. I CAN PROGRAM IN C PLUS ABOUT A DOZEN OTHER LANGUAGES BUT FOR THIS PROJECT WANT TO WORK AT A HIGHER LEVEL AND FOCUS ON THE GUI. VB, with the MsComm control (read VB Pro), does a nice job with serial communications for me. Some people do not like the MsComm control. The N1MM VB6 Pro logging program mentioned in Table 4 in the article uses another communications control that I believe is in the public domain.

I have programmed packet applications using VB with MsComm and Delphi with a comparable control. The programs work flawlessly with my PK-232 and the TNC on my TS-2000. I have RTTY capability with the PK-232. Its command set uses text commands for both modes and other modes I have not attempted. All one really needs to command a TNC is a made to purpose terminal program and a knowledge of the required commands. I wrote several related programs to strip DX spots off our local packet cluster (using both VB and Delphi) and a program to plot APRS location data on a map. My TS-2000 is controlled with programs written with both VB and Delphi. Some of the source code for these projects will appear in another article or perhaps in a book later this year. I intend to put some code on this site in April to show how to get started on projects like this in either VB or Delphi.

It's not reasonable to expect to write a program to decode and transmit PSK or one with lots of real time number crunching with VB. VB is too slow for this type of programming. Delphi might work fine although I haven't tried signal processing in native Delphi code. VB is fine as an interface with the DLLs mentioned in the QST article or with a program or DLL you might program in C+ and link to with VB. If you require super speed, considering your programming background, you might think about Borland C++ Builder (or Visual C++ which I am less familiar) if the GUI is all you are interested in. C++ Builder uses the 'same' controls as Delphi.

back to top


Other

 

QEX ARTICLE


September/October 2002

The September/October 2002 QEX Magazine contains an article entitled "Amateur Radio Software: It Keeps Getting Better." The article describes DOS and Windows tools radio amateurs will find useful to program their radio projects. The article tells where to get affordable compilers, what can be done with them to develop software to use in your ham shack and lists a lot of programming resources. If you missed the QEX article, the complete article is available in pdf format in the zipped file here.

QEX PDF File
The pdf file is "Reproduced with permission. Copyright ARRL, 2002, all rights reserved.
This material originally appeared in
QEX: Forum for Communications Experimenters (
www.arrl.org/qex)

Please do not post this pdf file on other sites. Link to this one.

back to top

 


WB5KIA



LOGBOOK


You May Want to Visit one of the Useful Sites Below
Borland/Delphi
The main Delphi site.

Microsoft/VB
Microsoft VB developer site

PSK ActiveX
PSK Core DLL
PSK Resources

Maps
Digital Maps and Coordinates

ARRL QEX
QEX Binary Files

ARRL QST
QST Binary Files




































































































































































































































































































































































































































































































































































































































































































This Site Designed by Francis Gradijan, KD5HTB © 2003  

Last updated 10/6/2004

All materials, unless otherwise stated, on this site are Copyright © 2003 by Stephen J. Gradijan, WB5KIA

Any programs and their documentation or code snippets are offered without warranty of any kind. WB5KIA, makes no claim as to their suitability for any purpose. These programs are AS IS, and changes may be made to them at any time without incurring any obligations to former users. The entire risk arising from the use of these programs remains with the user.

HTML code designed by KD5HTB. For web-designing at a low price contact KD5HTB at

Comments and report broken links to: WB5KIA