User Tools

Site Tools


howto:raccontests

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
howto:raccontests [2020/07/05 08:19] va7fihowto:raccontests [2020/12/04 22:41] va7fi
Line 2: Line 2:
 ====== RAC Contests Log ====== ====== RAC Contests Log ======
  
-This year was my first time participating in the RAC Canada Day contest on my own.  It was a lot of fun and also very instructive.  Here are a few things I learned.+<WRAP center round info 85%> 
 +I just updated the spreadsheet from Cabrillo V3.0 to [[https://www.rac.ca/wp-content/uploads/2020/11/RAC-Cabrillo-V3.2.pdf |Cabrillo V3.2]] so it should be ready for the RAC Winter Contest on Dec 18-19.   --- //[[va7fi@rbox.me|Patrick, VA7FI]] 2020/11/29 23:18// 
 +</WRAP> 
 + 
 + 
 +Last summer was my first time participating in the RAC Canada Day contest on my own.  It was a lot of fun and also very instructive.  Here are a few things I learned.
  
-First, everything you need to know about the RAC Canada Day or Winter Day contest is located on the [[https://www.rac.ca/contesting-results/ |RAC website]].+First, everything you need to know about the RAC Canada Day or Winter Day contest is located on the [[https://www.rac.ca/contesting-results/ |RAC website]], but it can be a bit overwhelming to digest for first-time contesters, so here's an overview.
  
 ===== Logs ===== ===== Logs =====
  
 During the contest, the following information must be logged for each station: During the contest, the following information must be logged for each station:
-  * Frequency in kHz (for example, 14.125 should be entered as 14125)+  * Frequency in kHz (for example, 14.125 MHz should be entered as 14125)
   * Mode (CW or PH)   * Mode (CW or PH)
   * Date and Time in UTC (for example 2020-07-01 and 0135)   * Date and Time in UTC (for example 2020-07-01 and 0135)
Line 16: Line 21:
   * Exchange (Two letter province code for Canadian Stations, or the serial number for other stations).   * Exchange (Two letter province code for Canadian Stations, or the serial number for other stations).
  
-At the end of the contest, logs must be submitted to RAC.  They will accept paper logs for submissions with less than 100 entries, but they really prefer electronic logs, which must be formatted as Cabrillo.+At the end of the contest, logs must be submitted to RAC.  They will accept paper logs for submissions with less than 100 entries, but they really prefer electronic logs, which must be submitted in the //Cabrillo// format.
  
-A Cabrillo file is really just plain text file formatted in a very specific way.  For example, here's a copy of my Cabrillo file (with only a few entries as example):+A Cabrillo file is really just plain text file formatted in a very specific way.  For example, here's a copy of my Cabrillo file from last summer (with only a few entries as example):
 <hidden onHidden="Click to Show Cabrillo Example" onVisible="Click to Hide Cabrillo Example"> <hidden onHidden="Click to Show Cabrillo Example" onVisible="Click to Hide Cabrillo Example">
 <file> <file>
Line 50: Line 55:
 END-OF-LOG: END-OF-LOG:
 </file> </file>
 +The first 21 lines give RAC all the information they need about the operator.  The other lines show the contacts made, ending with an ''END-OF-LOG'' tag.  For more information about the Cabrillo format, see this {{https://www.rac.ca/wp-content/uploads/2020/11/RAC-Cabrillo-V3.2.pdf |RAC pdf}}, or the [[https://wwrof.org/cabrillo/ |WWROF website]].
 </hidden> </hidden>
 <pagebreak> <pagebreak>
-The first 21 lines give RAC all the information they need about the operator.  The other lines show the contacts made, ending with an ''END-OF-LOG'' tag.  For more information about the Cabrillo format, see this {{https://www.rac.ca/wp-content/uploads/files/contests/files/RAC%20Cabrillo%20V3.0%20Revised%202010.pdf |RAC pdf}}, or the [[https://wwrof.org/cabrillo/ |WWROF website]]. 
- 
 RAC does NOT want this information emailed to them in the body of the email.  Instead, this should be saved in as plain text file named (in my case): ''VA7FI.LOG'' and attached to the email. RAC does NOT want this information emailed to them in the body of the email.  Instead, this should be saved in as plain text file named (in my case): ''VA7FI.LOG'' and attached to the email.
  
Line 59: Line 63:
  
 But since I'm not a regular contester and I didn't have time to familiarize myself with a logging program that would run under GNU/Linux, I simply used a spreadsheet to log my entries and tweaked it as the day went on to add my points and check for duplicate stations.  A few days after the contest was over, I cleaned up the spreadsheet and added some code to export the Cabrillo file the way RAC needs it. But since I'm not a regular contester and I didn't have time to familiarize myself with a logging program that would run under GNU/Linux, I simply used a spreadsheet to log my entries and tweaked it as the day went on to add my points and check for duplicate stations.  A few days after the contest was over, I cleaned up the spreadsheet and added some code to export the Cabrillo file the way RAC needs it.
 +{{ :howto:rac_va7fi.png }}
  
 Here are a few introductory videos I made to explain how to use the spreadsheet, which should also work with the RAC Winter Contest in December. Here are a few introductory videos I made to explain how to use the spreadsheet, which should also work with the RAC Winter Contest in December.
  
 +  * The first video shows where to download [[https://www.libreoffice.org/ |LibreOffice]], and how to set the Security settings to allow LibreOffice to run macros: ''Tools'' -> ''Options...'' -> ''LibreOffice'' -> ''Security'' -> ''Macro Security'' -> ''Medium''
 {{ youtube>7L_FxG2cJds }} {{ youtube>7L_FxG2cJds }}
-<WRAP center prewrap 90%> 
-The first video shows where to download [[https://www.libreoffice.org/ |LibreOffice]], and how to set the Security settings to allow LibreOffice to run macros: ''Tools'' -> ''Options...'' -> ''LibreOffice'' -> ''Security'' -> ''Macro Security'' -> ''Medium'' 
-</WRAP> 
  
 +  * The second video shows how to use the spreadsheet during the contest, and how to export the Cabrillo file after.
 {{ youtube>YIYy3YG2Tqc }} {{ youtube>YIYy3YG2Tqc }}
-<WRAP center prewrap 90%> 
-The second video shows how to use the spreadsheet during the contest, and how to export the Cabrillo file after. 
-</WRAP> 
  
 +  * The third video shows a bit of the hidden formulas and the script that generates the Cabrillo file.  It's like looking under the hood of the car: it's not needed to drive it, and it doesn't really explain how to build a car either.  But some might find it interesting.
 {{ youtube>lt0CJa-yJWw }} {{ youtube>lt0CJa-yJWw }}
-<WRAP center prewrap 90%> 
-The third video shows a bit of the hidden formulas and the script that generates the Cabrillo file.  It's like looking under the hood of the car: it's not needed to drive it, and it doesn't really explain how to build a car either.  But some might find it interesting. 
-</WRAP> 
  
-Here is the link to {{ :howto:rac_contests.ods |download it}}.  It is:+ 
 + 
 +Here is the link to {{ :howto:rac_contests_v20201129.ods |download it}}.  It is: 
 +<WRAP indent>
 <WRAP round box 80%> <WRAP round box 80%>
 Licensed under Creative Commons [[https://creativecommons.org/licenses/by-sa/4.0 |By-Sa]] so you are free to: Licensed under Creative Commons [[https://creativecommons.org/licenses/by-sa/4.0 |By-Sa]] so you are free to:
Line 86: Line 88:
  
 Provided that you: Provided that you:
-  * Attribute the work to me by linking to <https://ptruchon.pagekite.me>+  * Attribute the work to me by linking to [[https://scarcs.ca/howto/raccontests]]
   * Distribute any derivative work under the same license.   * Distribute any derivative work under the same license.
-</WRAP>+</WRAP></WRAP>
  
 Here's a copy of the code that generates the Cabrillo file: Here's a copy of the code that generates the Cabrillo file:
-<hidden>+ 
 +<hidden onHidden="Click to Show VB Script" onVisible="Click to Hide VB Script">
 <code VBScript> <code VBScript>
 REM  *****  BASIC  ***** REM  *****  BASIC  *****
  
 sub cabrillo sub cabrillo
 +
 'Get directory path from spreadsheet location. This will be used to create  ./MyCallsign.log 'Get directory path from spreadsheet location. This will be used to create  ./MyCallsign.log
 Dim path as String Dim path as String
Line 104: Line 108:
    dim Doc as object    dim Doc as object
    Doc = ThisComponent    Doc = ThisComponent
-   Sheet1 = Doc.Sheets.getByName("Log") +   Sheet1 = Doc.Sheets.getByName("Preamble") 
-   Sheet2 = Doc.Sheets.getByName("Preamble")+   Sheet2 = Doc.Sheets.getByName("Log")
  
- +'General Notefor getCellByPosition(x,y)     (0,0) = A1,  (1,0) = B1,  (0,1) = A2,  ...
-'Note that for getCellByPosition(x,y)(0,0) = A1,  (1,0) = B1,  (0,1) = A2,  ...+
  
 'Create Cabrillo file named "MyCallsign.log" 'Create Cabrillo file named "MyCallsign.log"
-   MyCallsign = Sheet2.getCellByPosition(1, 2).String      'Operator's callsign+   MyCallsign = UCase(Sheet1.getCellByPosition(1, 2).String     'Operator's callsign 
 +   if MyCallsign = "" then                                        'File needs a filename 
 +      MyCallsign = "NoCallsign" 
 +   endif
    filename = path & MyCallsign & ".log"    filename = path & MyCallsign & ".log"
  
Line 119: Line 125:
  
 'Read "Preamble" sheet and create preamble of Cabrillo File 'Read "Preamble" sheet and create preamble of Cabrillo File
-   for i = 0 to 18         ' read first 19 rows as is. +   for i = 0 to         ' read first rows as is. 
-      print #num, Sheet2.getCellByPosition(0, i).String & " " & Sheet2.getCellByPosition(1, i).String+      print #num, Sheet1.getCellByPosition(0, i).String & " " & Sheet1.getCellByPosition(1, i).String
    next    next
-   ' Row 20 needs "@" before the callsign + 
-   print #num, Sheet2.getCellByPosition(0, 19).String & " @" & Sheet2.getCellByPosition(1, 19).String+  ' Row 3 needs to be upper case. 
 +   print #num, Sheet1.getCellByPosition(0, 2).String & " " & UCase(Sheet1.getCellByPosition(1, 2).String) 
 + 
 +   for i = 3 to 19         ' read the the rest up to row 20 as is. 
 +      print #num, Sheet1.getCellByPosition(0, i).String & " " & Sheet1.getCellByPosition(1, i).String 
 +   next 
 + 
 +   ' Row 21 needs "@" before the callsign 
 +   print #num, Sheet1.getCellByPosition(0, 20).String & " @" & UCase(Sheet1.getCellByPosition(1, 20).String)
        
-   Soapbox = Sheet2.getCellByPosition(1, 20).String+   Soapbox = Sheet1.getCellByPosition(1, 21).String
    if Len(Soapbox) > 70 then    if Len(Soapbox) > 70 then
       truncated = "y"       truncated = "y"
Line 132: Line 146:
    endif    endif
        
-   print #num, Sheet2.getCellByPosition(0, 20).String & " " & Soapbox+   print #num, Sheet1.getCellByPosition(0, 21).String & " " & Soapbox
  
 'Formatting Example.  Comment out once finished 'Formatting Example.  Comment out once finished
Line 149: Line 163:
    MyCallsign = MyCallsign & space(14 - Len(MyCallsign))   'pad MyCallsign to make it 14 characters long.    MyCallsign = MyCallsign & space(14 - Len(MyCallsign))   'pad MyCallsign to make it 14 characters long.
  
-   MyProvince = Sheet2.getCellByPosition(1, 3).String      'my province   +   MyProvince = Sheet1.getCellByPosition(1, 3).String      'my province   
    MyProvince = MyProvince & space(7 - Len(MyProvince))    'pad MyProvince to 7 characters    MyProvince = MyProvince & space(7 - Len(MyProvince))    'pad MyProvince to 7 characters
    
-   ContestDate = Sheet2.getCellByPosition(1, 21).String    'contest date+   ContestDate = Sheet1.getCellByPosition(1, 22).String    'contest date
  
 'read "Log" Sheet starting at third row. 'read "Log" Sheet starting at third row.
Line 158: Line 172:
    UTC = "anything"                                        'initial non-empty condition for knowing when to stop loop    UTC = "anything"                                        'initial non-empty condition for knowing when to stop loop
    while UTC <> ""                                         'while the time emtry is not empty, process each row    while UTC <> ""                                         'while the time emtry is not empty, process each row
-      Freq = Sheet1.getCellByPosition(0, i).String         'frequency in column A (x = 0)+      Freq = Sheet2.getCellByPosition(0, i).String         'frequency in column A (x = 0)
       Freq = Format(Freq, "0"                            'round to the nearest integer       Freq = Format(Freq, "0"                            'round to the nearest integer
       Freq = space(6 - Len(Freq)) & Freq                   'pad frequency to 6 digits       Freq = space(6 - Len(Freq)) & Freq                   'pad frequency to 6 digits
  
-      UTC = Sheet1.getCellByPosition(1, i).String          'time in column B (x = 1). Also used to stop loop.+      UTC = Sheet2.getCellByPosition(1, i).String          'time in column B (x = 1). Also used to stop loop.
  
-      Callsign = Sheet1.getCellByPosition(2, i).String     'callsign in column C (x = 2)+      Callsign = Sheet2.getCellByPosition(2, i).String     'callsign in column C (x = 2)
       Callsign = Callsign & space(13 - Len(Callsign))      'pad Callsign to 13 characters       Callsign = Callsign & space(13 - Len(Callsign))      'pad Callsign to 13 characters
  
-      RST = Sheet1.getCellByPosition(3, i).String          'received Signal Report in column D (x = 3)+      RST = Sheet2.getCellByPosition(3, i).String          'received Signal Report in column D (x = 3)
       RST = space(3 - Len(RST)) & RST                      'pad RST to 3 digits       RST = space(3 - Len(RST)) & RST                      'pad RST to 3 digits
  
-      Exch = Sheet1.getCellByPosition(4, i).String         'received Exchange   in column E (x = 4)+      Exch = Sheet2.getCellByPosition(4, i).String         'received Exchange   in column E (x = 4)
  
-      RSTGiven = Sheet1.getCellByPosition(5, i).String     'received Signal Report in column D (x = 3)+      RSTGiven = Sheet2.getCellByPosition(5, i).String     'received Signal Report in column D (x = 3)
       RSTGiven = space(3 - Len(RSTGiven)) & RSTGiven       'pad RSTGiven to 3 digits       RSTGiven = space(3 - Len(RSTGiven)) & RSTGiven       'pad RSTGiven to 3 digits
  
-      Mode = Sheet1.getCellByPosition(6, i).String+      Mode = Sheet2.getCellByPosition(6, i).String
  
       'create line to print from "Log" sheet variables.  The output should be something like this:       'create line to print from "Log" sheet variables.  The output should be something like this:
Line 194: Line 208:
       logline = logline & Exch       logline = logline & Exch
  
-      print #num, logline                                 'print logline to text file+      print #num, Ucase(logline                                'print logline to text file
  
       i = i + 1                                           'Next row       i = i + 1                                           'Next row
-      UTC = Sheet1.getCellByPosition(1, i).String         'Look ahead to next time entry to see if it's empty or not.+      UTC = Sheet2.getCellByPosition(1, i).String         'Look ahead to next time entry to see if it's empty or not.
  
       MsgBox(MyCallsign)       MsgBox(MyCallsign)
Line 215: Line 229:
 sub License sub License
  
-' This spreadsheet and its script by Patrick Truchon <https://ptruchon.pagekite.me> +' This spreadsheet and its script by Patrick Truchon <va7fi@rbox.me> is licensed under a 
-is licensed under a Creative Commons Creative Commons Attribution-Share Alike 4.0 +Creative Commons Creative Commons Attribution-Share Alike 4.0 Unported License. 
-Unported License.  <https://creativecommons.org/licenses/by-sa/4.0>.+<https://creativecommons.org/licenses/by-sa/4.0>.
 ' '
 ' You are free to: ' You are free to:
Line 227: Line 241:
 ' '
 ' Provided that you: ' Provided that you:
-  * Attribute the work to me by linking to +  * Attribute the work to me by linking to <https://scarcs.ca/howto/raccontests>
-    <https://ptruchon.pagekite.me>+
   * Distribute any derivative work under the same license.   * Distribute any derivative work under the same license.
  
Line 234: Line 247:
 </code> </code>
 </hidden> </hidden>
 +<pagebreak>
 +===== 7300 Recorded Voice TX =====
 +The other thing I learned during the contest is how to record a short message on my IC-7300 and play it back on the air so I could save my voice a bit.  The details are on [[https://www.icomjapan.com/uploads/support/manual/common/IC-7300_ENG_Full_8.pdf| Section 7 of the IC-7300 full manual]]:
  
 +{{pdfjs 100%,300px>:howto:ic73000-section7.pdf}}
  
- +I ended up recording three messages:
-===== 7300 Recorded Voice TX ===== +
-The other thing I learned during the contest is how to record a short message on my IC-7300 and play it back on the air so I could save my voice a bit.  The details are on [[https://www.manualslib.com/manual/1106166/Icom-Ic-7300.html?page=89#manual |page 83 of the IC-7300 manual]].  I ended up recording three messages:+
   - "CQ Canada Day Contest, this is VA7FI" (in phonetics)   - "CQ Canada Day Contest, this is VA7FI" (in phonetics)
   - "VA7FI" (in phonetics)    - "VA7FI" (in phonetics) 
   - "Thank you, you are 59, BC"   - "Thank you, you are 59, BC"
  
-To call CQ, I used the first message on a 7 second repeat loop. If someone answered, I could either press the button again to prevent it from transmitting the message again, or use the PTT to jump in and acknowledge the station.+To call CQ, I used the first message on a 7 second repeat loop. If someone answered, I could either press the button again to stop the loop, or use the PTT to jump in and acknowledge the station.
  
-The second message I would use to answer CQ call during pile up.  All I'd have to do is press the button with the timing that thought would be best This was great in the early morning when Justine was still in sleeping.  With my headphones on, the whole thing was virtually silent.+I used the second message to answer CQ calls during pile ups.  All I'd have to do is press the button and hope I'd get an answer. This was great in the early morning when Justine was still in sleeping. With my headphones on, the whole thing was virtually silent.
  
-The third message was to give my exchange once I received the other station's exchange.+I used the third message to give my exchange once I received the other station's exchange.
  
-I still had to use the mic a bit depending on the situation, but these pre-recorded messages took care of most of a lot of the grunt work.+I still had to use the mic a bit depending on the situation, but these pre-recorded messages took care of a lot of the grunt work.
  
 ===== Last Thoughts ===== ===== Last Thoughts =====
-I didn't expect to enjoy contesting as much as I did.  In fact, I found it strangely addictive.  I think I'd be ok with participating to two or three contest a year, but I would never have the time to spend an entire day on the radio every week.  Never-the-less, I'm looking forward to the next one.+I didn't expect to enjoy contesting as much as I did.  In fact, I found it strangely addictive.  I think I'd be ok with participating to two or three contests a year, but I would never have the time to spend an entire day on the radio every weekend.  Never-the-less, I'm looking forward to the next one.