Scanner Screen: Free Open Source Software for Uniden Scanners

Ubbe

Member
Joined
Sep 8, 2006
Messages
9,665
Location
Stockholm, Sweden
I would like to see either the real time log headlines for system, department and channel to be used as buttons for hold, or the actual live text boxes for those to be reacting to mouse clicks for a hold function. The layout would still look the exact same but are sensitive to mouse clicks.

I have done some progress in supporting TRX1 and TRX2 but still only in analog conventional but they don't use a easy ascii text system as Uniden do so to support digital I have to change from delimited mode reading to instead read in a 100 byte data block and pick out the info depending of system type and mode.

Whistler-Scanner-Screen.jpg


/Ubbe
 

Vonskie

Member
Joined
Feb 7, 2005
Messages
521
Location
Allen, TX
With git hub there is a way to have more than two people working on a project and merge changes. I have never used this feature. So for now it’s cut and paste
 

Ubbe

Member
Joined
Sep 8, 2006
Messages
9,665
Location
Stockholm, Sweden
Could you please do a change to make the first time/date grid font height to half size as it looks better to me and will allow more of the date to show when the window are sized smaller. I simple made a "div by 2" at the Form Create procedure and at the Change font height procedure for the StaticTextTime grid.

This is the first time I do high level coding that needs it to be compiled to create an executable program. I've done some simple Basic programming 30 years ago but usually I do hex code hacking by looking in a book for the CPU what opcodes that represents the hex code and write the code directly in hex. I have to google everything now as I have no real clue what an integer or boolean are so it's a time consuming task to try and make a working Whistler support. There's also those pesky syntax things that if a semicolon are missing or shouldn't be there then the error points at a problem that really happened 10-20 rows further up in the code. Not to mention the numerous times I have forgotten to close the program and when running the compile to create the exe file it comes up with a totally, to me, unrelated error message.

/Ubbe
 

Vonskie

Member
Joined
Feb 7, 2005
Messages
521
Location
Allen, TX
Could you please do a change to make the first time/date grid font height to half size as it looks better to me and will allow more of the date to show when the window are sized smaller. I simple made a "div by 2" at the Form Create procedure and at the Change font height procedure for the StaticTextTime grid.

This is the first time I do high level coding that needs it to be compiled to create an executable program. I've done some simple Basic programming 30 years ago but usually I do hex code hacking by looking in a book for the CPU what opcodes that represents the hex code and write the code directly in hex. I have to google everything now as I have no real clue what an integer or boolean are so it's a time consuming task to try and make a working Whistler support. There's also those pesky syntax things that if a semicolon are missing or shouldn't be there then the error points at a problem that really happened 10-20 rows further up in the code. Not to mention the numerous times I have forgotten to close the program and when running the compile to create the exe file it comes up with a totally, to me, unrelated error message.

/Ubbe
Version 2.672 halfsized font when it comes to date and time and model
 

Vonskie

Member
Joined
Feb 7, 2005
Messages
521
Location
Allen, TX
Could you please do a change to make the first time/date grid font height to half size as it looks better to me and will allow more of the date to show when the window are sized smaller. I simple made a "div by 2" at the Form Create procedure and at the Change font height procedure for the StaticTextTime grid.

This is the first time I do high level coding that needs it to be compiled to create an executable program. I've done some simple Basic programming 30 years ago but usually I do hex code hacking by looking in a book for the CPU what opcodes that represents the hex code and write the code directly in hex. I have to google everything now as I have no real clue what an integer or boolean are so it's a time consuming task to try and make a working Whistler support. There's also those pesky syntax things that if a semicolon are missing or shouldn't be there then the error points at a problem that really happened 10-20 rows further up in the code. Not to mention the numerous times I have forgotten to close the program and when running the compile to create the exe file it comes up with a totally, to me, unrelated error message.

/Ubbe
Could you do me a favor and cut and paste your wistler code so I can look at it and build it into the app and you can test it
 

Ubbe

Member
Joined
Sep 8, 2006
Messages
9,665
Location
Stockholm, Sweden
I had some kind of crash when experimenting with forcing the application to hide and popup on activity and tried many different calls. It works best using application.Minimize and form1.WindowState:= wsnormal as it doesn't force itself on top of other windows you could be actively working on.

I started over and instead modified the 2.671 version. I'm just doing an indexed delimited fetch from the received data from a TRX scanner for the model, frequency and its text tag, and the TRX-1 has it's received frequency index one step earlier than TRX-2, so have to check if the frequency is blank and then fetch from the index before that. I have to read up on how to fetch from specific addresses in a received data block and then I could also pick modulation types and everything else.

I added support for a UBC780 and in remote mode it responds sluggish from front panel operations so it's really struggling. Sometimes it has a hickup and only responds with garbage in the raw data box from a status request and needs to be switched off and on to clear its communications. I'll check if it's any different using 2400 speed but it behaves the same in 19200 as in 4800.

The BCD536 still dropped connections but using the rear RS232 port makes it run without any issues.

I'll need another USB hub and a couple of more USB to Serial cables.

I don't know how many copies of the application that can be run as the 5:th copy couldn't communicate with the scanner what ever I did with comports, cables and different scanners. Then I tried an earlier version of the application and that worked. But after that the new version also started to work to do a 5:th and also a 6:th a 7:th and 8:th scanner connection.

Scanner-Screen4.jpg


/Ubbe
 

Vonskie

Member
Joined
Feb 7, 2005
Messages
521
Location
Allen, TX
I had some kind of crash when experimenting with forcing the application to hide and popup on activity and tried many different calls. It works best using application.Minimize and form1.WindowState:= wsnormal as it doesn't force itself on top of other windows you could be actively working on.

I started over and instead modified the 2.671 version. I'm just doing an indexed delimited fetch from the received data from a TRX scanner for the model, frequency and its text tag, and the TRX-1 has it's received frequency index one step earlier than TRX-2, so have to check if the frequency is blank and then fetch from the index before that. I have to read up on how to fetch from specific addresses in a received data block and then I could also pick modulation types and everything else.

I added support for a UBC780 and in remote mode it responds sluggish from front panel operations so it's really struggling. Sometimes it has a hickup and only responds with garbage in the raw data box from a status request and needs to be switched off and on to clear its communications. I'll check if it's any different using 2400 speed but it behaves the same in 19200 as in 4800.

The BCD536 still dropped connections but using the rear RS232 port makes it run without any issues.

I'll need another USB hub and a couple of more USB to Serial cables.

I don't know how many copies of the application that can be run as the 5:th copy couldn't communicate with the scanner what ever I did with comports, cables and different scanners. Then I tried an earlier version of the application and that worked. But after that the new version also started to work to do a 5:th and also a 6:th a 7:th and 8:th scanner connection.

Scanner-Screen4.jpg


/Ubbe
Can I ask for your assistance want to add whistler support I have created a test program
 

Vonskie

Member
Joined
Feb 7, 2005
Messages
521
Location
Allen, TX
Here is the source code for the RH-536HP program which uses the scanner Wi-Fi.
See the very last link, named RH-536HP_mkII_code_v0_02_12.zip in this link

Direct link:

{edit}
See this post too

Another
Please assist!

How do you calculate the checksum for the whistler want to make it work with this, here is what I have so far.
STX = #2;
ETX = #3;


function TForm1.CalculateChecksum(const Data: string): byte;
var
i: integer;
Sum: byte;
begin
Sum := 0;
for i := 2 to Length(Data) - 1 do // Start from <msgCode> and end at <ETX>
Sum := Sum + Ord(Data);
Result := Sum and $FF;
end;


function TForm1.CreateCommand(const MsgCode: string; const MsgData: string): string;
var
Command: string;
begin
Command := STX + MsgCode + MsgData + ETX;
Command := Command + Chr(CalculateChecksum(Command));
Result := Command;
end;
 

Ubbe

Member
Joined
Sep 8, 2006
Messages
9,665
Location
Stockholm, Sweden
I only use two commands, the model name request using the "V" command and the active channel info using the "a" command where Whistler plainly took the recorded audio file header and sends that out. It doesn't contain any modulation type of info and doesn't seem to be possible to get.

Both commands starts with a "start of text" #02 followed by one or two command bytes and ends with a "end of text" #03 followed by the checksum consisting of the sum of the command byte and the end byte. So no need to calculate anything. Send #02+#86+#00+#03+#89 to receive model name and firmware versions.

I switch to ser.RecvPacket for receiving Whistler and BC780 data packets. For the BC780 I use the LCD command to read the dislays Line1 and Line2 ansii text characters that holds all channel info and strip out the square bracket parentheses around them. For the frequency it's preceded by FRQ and in plain text.

nCount := Pos('LINE1', rawmessage);
if nCount > 0 then
begin

nameholder := StringReplace(Trim(Copy(rawmessage, nCount+6, 36)), ']', ' ', [rfReplaceAll]);
Channelname := StringReplace(Trim(Copy(nameholder, 0, 35)), '[', '', [rfReplaceAll]);

end;


For Whistler the frequency text tag are at position 48 and are 17 characters long. The frequency are a 32 bit long integer that starts at position 152 (+ 5 for the command characters that echoes back). But for conventional it is also as plain ascii text 11 characters long at 77 +5 that I am using until I have googled what command to use to convert long integer into plain decimal and then how to insert a decimal point as the answer are in Hz.
At 24 +5 it is a value to tell if you receive a conventional or trunked system or are searching/in tune mode, as the display mode shifts depending of those 3 different modes and info needs to be fetch from different positions depending of mode.
To get the modulation type it seems you have to use a LCD read.

/Ubbe
 
Top