目录
呼号历史与呼号历史反查
呼号历史(Call History)
呼号历史查询(Call History Lookup)是一项功能,可用于在比赛中预填交换内容以省去键入,或显示特定呼号对应的用户备注或注释。呼号历史数据可以来自其他来源的文件、往届比赛日志,或您自己手工生成的数据文件。例如,您的俱乐部可能会为 Sweepstakes 生成呼号历史文件,您也可以选择根据去年的日志自行生成。您还可以从日常日志中摘取姓名与呼号,这样就能在频率上凭名字认出对方。
在使用呼号历史查询功能之前,必须在录入窗口(Entry Window)的配置菜单(Config menu)中启用呼号历史查询(例外:用户文本字段(UserText field)——见下文),并且用户必须导入一个或多个包含以逗号或分号分隔数据的文本文件。
在本网站的文件菜单(Files menu)中,呼号历史文件(Call History Files)栏目下可以找到相当多针对各比赛的呼号历史文本文件。对许多人来说,这些将是呼号历史查询功能的首选数据来源。
预先打包好的呼号历史文件在哪里? 在网站的 >下载(Downloads) >文件浏览器(File Explorer) >呼号历史文件(Call History Files) 中可以找到相当多针对各比赛的呼号历史文本文件。对许多人来说,这些将是呼号历史查询功能的首选数据来源。
您也可以根据去年的日志生成呼号历史文本文件。只需打开旧日志,可选地单击 > 工具(Tools) > 清除呼号历史(Clear Call History)以清空呼号历史数据库表,然后单击用当前日志更新(Update with Current Log)。要保存呼号历史文本文件,请使用录入窗口文件菜单(Files menu)中的导出(Export) >导出呼号历史(Export Call History)选项,并为导出的文件取一个容易找到的文件名。
当然,您始终可以直接从呼号历史文件(Call History Files)用户目录把呼号历史文本文件加载到数据库中。
如果您想为同一比赛调用多个日志,或者把多个呼号历史文件合并到单个数据库表,只需前往 文件(File) >导入(Import) >导入呼号历史(Import Call History),并在单击多个文本文件时按住 Ctrl 键即可。
呼号历史数据与 QSO 数据并不存储在同一个数据库中。呼号历史表会一直保留,直到被另一组数据替换。呼号历史文本文件(或其中多个文件)可以手动导入,也可以在比赛设置对话框(Contest Setup Dialog)的关联文件选项卡(Associated Files tab)中与特定比赛关联。可以想见,很容易忘记数据库里还留着上周末的呼号历史表。我们建议用户按下文“识别使用呼号历史查询数据的比赛”一节所述,在呼号历史数据文件中加入比赛名称。
当在录入窗口中键入呼号并将焦点移入交换内容框(Exchange box)时——无论是按空格键,还是在已启用 ESM(回车发信)模式时按 Enter——程序都会搜索呼号历史数据库表。如果找到该呼号,相应的呼号历史数据会显示在录入窗口的“天线方位”行上。如果比赛的交换内容字段为空,从数据库取回的数据还会用于预填录入窗口中相关的交换内容字段。
光标移动触发呼号查询 触发呼号历史查询的事件,是光标在录入窗口中从呼号框(Call Sign box)移动到交换内容框。在 ESM 模式下,有些情况下按 Enter 不会使光标移动到交换内容框,此时按 Enter 也不会触发呼号历史查询。特别是在搜索呼叫(S&P)模式下,如果未选中“ESM 在 S&P 模式下发送一次您的呼号(ESM sends your call once in S&P …)”选项,按 Enter 发送 F4 消息后光标仍留在呼号框中,因此不会执行呼号历史查询;按空格键则会把光标移入交换内容框并触发呼号历史查询。
如果在录入窗口的右击菜单中勾选了“显示用户信息(Show User Information)”,呼号历史表中的数据会显示在用户数据行(User Data line)上。即使未启用呼号历史查询,表中用户文本字段(User Text field)的数据仍会显示在用户数据行上,即方位行(Bearing line)的下方。
下面是几个录入窗口示例。第一个显示的是同时显示了交换内容数据和用户数据(此处为其 QTH)的录入窗口。

在 VHF 比赛中,呼号历史表中的网格方格用于计算波段图(Bandmap)中显示的天线方位。

呼号历史文本文件
本节介绍默认呼号历史文本文件的布局,以及呼号历史数据所导入的数据库表。
呼号历史文本文件可以用任何文本编辑器创建——记事本即可。该文件以逗号或分号分隔,也就是说各数据项位于特定位置。默认结构(数据库表也与此一致)如下:
Call, Name, Loc1, Loc2, Sect, State, CK, BirthDate, Exch1, Misc, Power, CqZone, ITUZone, UserText, LastUpdateNote。该顺序是固定的,如果使用默认顺序,那么输入文本文件中每条记录的每个字段都必须包含一个逗号,即使该字段为空。示例如下:
N9RV,,,,06,,-1,1900-01-01,,,,Log update edit fields
可以看到,在“06”之前该文件有若干个空字段,它是 ITU 分区号,被放入了 Sect 字段,因为该比赛从 Sect 字段取数据来预填台站的分区。
下载呼号历史文本文件
网站上提供预先打包好的呼号历史文本文件。请查看 >下载(Downloads) >分类菜单(Category Menu) >呼号历史文件(Call History Files)。请把文件下载到 N1MM+ 用户文件目录(即帮助(Help) > 在用户文件目录上打开资源管理器(Open Explorer on User Files Directory)菜单项所指向的目录)下的 CallHistoryFiles 子文件夹中。
呼号历史导入指令
您可以移动或排除数据列、把 ARRL 分区映射为 State、把 State 映射为 ARRL 分区,或者把六字符网格方格截断为四字符。这些操作通过导入指令命令完成,指令命令用“!!”括起,以告知程序它们是说明而非数据。读取到一条导入指令命令后,导入例程会一直遵循该指令,直到读取到另一条导入指令命令或所有数据导入完毕。如果数据的结构或字段顺序发生变化,导入指令命令可以重复出现。
以下是可在呼号历史文本文件中使用的导入指令命令列表:
!!Order!! – 定义其后以逗号分隔的输入数据的顺序 !!MapStateToSect!! – 用 State 信息填充空的 Sect 字段 !!FourCharGridSq!! – 把 6 字符网格方格截断为 4 字符网格方格 !!AppendUserText!! – 把附加的用户文本追加到 UserText 字段(默认) !!NoAppendUserText!! – 不把用户文本追加到 UserText 字段,新数据替换原有数据 !!Validate50State!! – 忽略所有不属于 50 个州的州数据 !!NoLoc2AltGrid!! – 不把现有的 Loc1 网格移入 Loc2 作为备用网格位置 !!MapOnSection!! – 把 GTE, ONN, ONE, ONS 映射为 ON 分区 !!ValidateArrlSection!! – 移除任何不是 ARRL 分区的分区(包括 VI, PR),可用于移除 ON
每个导出的呼号历史文本文件都会列出导入指令、字段名和最大长度。以下是呼号历史字段名及其最大长度。导入例程会截断任何超过最大长度的字段,丢弃任何不是数字的 CK 值,并丢弃任何不是日期的 Birthdate。如果在文件导入过程中没有读取到 !!Order!! 输入指令,例程会认为数据按以下逗号分隔顺序排列:
Call(15), Name(20), Loc1(6), Loc2(6), Sect(8), State(8), CK(#), Birthdate(date), Exch1(12), Misc(15), Power(8), CqZone(#), ITUZone(#), UserText(60)
以下是一个无需导入指令即可导入的呼号历史数据示例:
K3CT, JOHN , , , ,PA , , ,NHA, , N1MM Program Developer
可以看到,每个逗号表示一个字段。连续的逗号表示空字段。可以添加空格,以便更容易数清逗号的个数。如果把这只有一行的文件导入呼号历史数据库并启用呼号历史查询选项,那么在 PA QSO Party 中输入呼号 K3CT 并按空格键(或者启用 ESM 模式时按 Enter)后,该比赛的录入窗口会像这样显示:

可以想见,要确保文本文件中实际数据之间的逗号个数正确可能是个麻烦。幸好 !!Order!! 命令提供了一个简单的解决办法。例如,您创建了一个如下所示的文本文件: !!Order!!, Call, Name, CK, Sect N4ZR, Pete ,54 ,WV N3OC, Brian, 67, MDC
把它加载到呼号历史数据库时,数据会被放入呼号历史表中的相应位置;例如,当您在 Sweepstakes 中操作并启用了呼号历史查询时,程序会在交换内容字段中预填校验码和分区,并在交换内容窗口(Exchange Window)的方位行中显示姓名及所有其他数据。这种冗余是刻意设计的,因为如果您动手编辑交换内容后才发现预填的数据本来就是正确的,它们就在那里可供随时参考。
这一改动使生成用于导入呼号历史数据库的呼号历史文本文件变得容易得多。例如,您可以生成一个包含去年 Sweepstakes 中所有通联对象的呼号、姓名、校验码和分区的文件,并写出正确的 !!Order!! 行,如下所示: !!Order!!,Call,Name,CK,Sect
!!Order!! 导入指令还可用于忽略数据列。例如,如果数据文件包含如下所示的额外列: DD3JN, 70 23, GERD, JO42AI,JO31OE PA1M, 144 70, Carel, JO33FE, JO33II
可以在数据之前使用导入指令来忽略第二列。 !!Order!!, Call,, Name, Loc1, Loc2 DD3JN, 70 23, GERD, JO42AI,JO31OE PA1M, 144 70, Carel, JO33FE, JO33II
另一种做法是,用以下导入指令把第二列数据放入 UserText 字段: !!Order!!,Call,UserText,Name,Loc1,Loc2 DD3JN, 70 23, GERD, JO42AI,JO31OE PA1M, 144 70, Carel, JO33FE, JO33II
本手册的“支持的比赛”一节可能列出了用于交换内容信息的呼号历史字段。如果该节未列出字段信息,请按以下步骤确定应填充哪个呼号历史字段。
- 新建一个比赛日志。
- 记录若干个包含所需交换内容的模拟 QSO。
- 单击 工具(Tools)、清除呼号历史(Clear Call History),然后用当前日志更新(Update with Current Log)。
- 导出呼号历史(文件(File)、导出(Export)、导出呼号历史(Export Call History)),并查看导出的 QSO 文本。
- 把交换内容数据放入已填充的呼号历史字段。某些比赛的编码很复杂。比赛把信息存储在字段中用于计算分值、确定系数或导出 Cabrillo,这种情况并不罕见。因此,可能没有必要填充所有呼号历史字段。
如果呼号历史文件导入不能正常工作,请检查导入指令,确保它们与字段名匹配。例如,必须使用 Sect 而不是 sec 或 Sec,必须使用 Ck 而不是 Check。字段名不区分大小写。 以下这些字段名都会把数据导入 Sect 字段:Sect, SECT, sect, sEcT, SeCt。如果问题仍然存在,请在 N1MM Logger 邮件讨论组上发帖,向其他用户求助。
将呼号历史文件与比赛关联
如果您希望在每次启动该比赛时都加载并启用某个特定的呼号历史查询文件,请把文件名添加到该比赛日志的关联文件选项卡(Associated Files tab)中。此后,只要在任何数据库中打开该比赛,指定的呼号历史查询文件就会被导入。
当您单击呼号历史文件名的更改按钮(Change button)时,如果计算机已连接 Internet,程序会在 N1MM Logger+ 网站上查找该比赛的呼号历史文件,并询问是否用网站上的最新文件更新当前文件。如果您不接受更新文件的提议,程序会打开一个标准的打开文件对话框(Open File dialog),定位到 N1MM+ 用户文件区域中的 CallHistoryFiles 文件夹,以便您选择自己的呼号历史文件,而不是使用下载的文件。
识别使用呼号历史查询数据的比赛
如果您把比赛简称(即比赛设置对话框中的名称)以注释形式(前面加“#”)加入呼号历史文本文件,程序会在比赛日志打开或呼号历史数据导入时自动启用或禁用呼号历史查询。当呼号历史查询选项发生变化时,录入窗口中会出现一条简短消息说明该操作。
按下例所示添加多条比赛名注释(省略引号),即可指明所加载的呼号历史查询数据可用于多个比赛: “#NAQPCW” “# naqpssb” 对于 QSO Party,比赛名之后必须带上州缩写。请注意州名之前有空格。例如: “# QSOParty PA”
– “#”必须是该行的第一个字符。允许在“#”之后添加一个或多个空格。 – 每行只允许有一个比赛名。 – 重复的比赛关联会被忽略。 – 比赛名可以是大写、小写或大小写混合。 – 比赛名会被校验。如果校验失败,该比赛关联会被忽略。 – 用户可以手动打开或关闭呼号历史查询。程序启动时不会检查该关联。 – 导出呼号历史文件时,比赛关联标识符会一并导出。
相关菜单选项
-
>配置(Config) >启用呼号历史查询(Enable Call History Lookup)
- 勾选即可启用呼号历史查询。
-
>文件(File) >导入(Import) >导入呼号历史(Import Call History)
- 选择要导入的文件。管理数据库(Admin database)中呼号历史表的所有信息都会被清除,并替换为从文件导入的信息。
-
>工具(Tools) >用当前日志更新呼号历史(Update Call History with Current Log)
- 用当前日志中的 QSO 更新内存中的呼号历史表和管理数据库。联络在呼号历史表中不存在时会添加,已存在时会更新。对于 2 个网格字段,行为略有不同。当两个网格字段都已填充,且已记录进第三个新网格时,第二个网格(最旧的)会被移除,并由第一个字段的内容替代。新网格会被添加到第一个位置。当只填充了第一个网格,而需要从日志中添加一个新网格时,也会发生同样的位置变动。当前 4 个字符相同时,4 位网格会被 6 位网格覆盖。用此选项所做的更改只是临时的;要保存呼号历史表(含这些更改)的永久副本,需要使用下文所述的 文件(File) > 导出(Export) > 导出呼号历史(Export Call History) 菜单项。
-
> 工具(Tools) > 清除呼号历史(Clear Call History),然后用当前日志更新(Update with Current Log)
- 同上,但在从当前日志添加联络之前先清空呼号历史表。可用于新建一个呼号历史表。
-
>文件(File) >导出(Export) >导出呼号历史(Export Call History)
- 导出呼号历史表中的信息。把数据重新导出为呼号历史文本文件非常重要,尤其是在您更改过呼号历史表之后。否则,任何更改都会丢失。您有机会重命名该文本文件,例如可以把 2008 SS 文件重命名为 2009 SS,以表示它已更新。
您可以导入以前在没有 !!Order!! 指令的情况下使用的任何呼号历史文件。导出呼号历史文本文件时,程序会补上符合默认顺序所需的逗号,并为每个空 CK 填入 -1、为每个空 Birthdate 填入 1900-01-01。这是确保与旧呼号历史文件兼容所必需的。
呼号历史反查(Reverse Call History Lookup)
除了常规的呼号历史查询(在录入窗口中键入呼号,程序根据呼号历史文件中的数据预填交换内容)之外,还有呼号历史反查功能:您可以向录入窗口中输入交换内容,程序会在日志和呼号历史文件中搜索与该交换内容相对应的呼号。此功能并非在所有比赛中都可用(例如,对序号毫无意义;Sweepstakes 因交换内容复杂也不可用)。如果选中了呼号历史查询选项,反查功能会同时搜索呼号历史文件和日志。
反查功能通过校验窗口中的弹出(右击)菜单项启用。如果该比赛不支持反查功能,该菜单项会呈灰色不可用。启用反查功能后,您可以在录入窗口的交换内容框中键入交换内容或其部分内容;如果键入的字符数等于或大于阈值(阈值可用另一个弹出菜单项设置),程序会在日志和呼号历史表中搜索交换内容与所键入内容匹配的呼号。校验窗口中最多会显示 100 个匹配的呼号。确定哪个匹配呼号是正确之后,您可以在校验窗口中单击它,该呼号及交换内容就会被传送到录入窗口中。
如果在输入交换内容之前已在录入窗口的呼号框中输入了完整或部分呼号,那么校验窗口只会显示日志或呼号历史文件中与录入窗口中的部分呼号匹配的呼号,并且它们会显示在从日志和 SCP 文件填入的常规匹配呼号之下。
您还可以控制部分交换内容的匹配是可以在日志和呼号历史文件的交换内容字段中任意位置找到,还是必须从第一个字符开始匹配(也就是说,BC 是匹配 AABCD、ABC、BC、BCDE 等全部内容,还是只匹配 BC、BCDE 等)。把匹配限制在起始字符和/或提高匹配字符数的阈值,可以加快查询速度,并减少找到的匹配呼号数量。
字段名必须匹配 无论是预填交换内容还是反查,呼号历史文件中存储数据的字段名都必须与特定比赛中使用的字段名一致。例如,如果州/省是交换内容的一部分,那么视比赛而定,该部分交换内容可能对应呼号历史文件中的 State、Sect 或 Exch1 字段。您可以使用 !!Order!! 指令,确保呼号历史文件中的数据与比赛相应的字段名关联。
例如,如果您有一个用于 NAQP 的呼号历史文件,内容如下:
!!Order!!,Call,Name,State K3CT,John,PA
那么要在州 QSO Party 中使用同一数据文件,您可能需要把文件的第一行改为**!!Order!!,Call,Name,Exch1**,而其余数据保持不变。您可以通过以下方式确定给定比赛类型使用哪些字段:建立一个该比赛的模拟实例,输入一些典型的假联络,使用 工具(Tools) > 清除呼号历史(Clear Call History),然后用当前日志更新(Update with Current Log)菜单项,把呼号历史文件导出到临时文本文件,再用文本编辑器查看该文件,了解该比赛类型中哪些字段名用于哪些交换内容字段。对于某些比赛类型,您可能会发现呼号历史文件中有两个字段存放相同的交换内容数据。在这种情况下,您可能需要试验一下,以确定哪些字段用于反查。