目录
技术信息
N1MM Logger+ 是一款用 Microsoft Visual Basic .NET 编写的比赛程序。它使用 SQLite 数据库存储信息。向数据库写入数据和从数据库读取数据均通过 SQL(结构化查询语言)完成。 运行本程序只需安装包与程序更新(NewExeVx.x.x)中提供的程序或文件,无需更多。
你需要了解下文给出的全部信息才能使用本程序吗?不需要
写给任何想直接编辑 N1MM 数据库文件的人的警告
除非你非常清楚自己在做什么,否则我们建议不要改动数据库或其他任何文件中的任何数据。改动有可能改变程序行为并得到错误的结果。如果你改动了数据库内容且程序行为异常,请改回原始(未改动)版本的数据库。
对于修改数据库结构或内容的用户,我们将不提供任何支持。改动程序使用的其他文件同样如此。
后果自负!
如果你不非常清楚自己在做什么,就不要做任何改动。第二次,也是最后一次警告!
关于计分的说明
更改 QSO 信息后务必执行重新计分(Rescore)!系数信息和 QSO 分值会在重新计分后更新,因此直接在数据库中做的这些改动将会丢失。
添加新的比赛类型
无法通过编辑数据库向程序中添加比赛。可以使用用户自定义比赛(User Defined Contest,UDC)方式添加比赛。 除 UDC 文件中的比赛外,其他比赛的规则等位于主程序文件(N1MM logger.net.exe)中,并不存储在数据库或任何其他文件中!
目录结构
程序本身安装在 32 位 Windows 系统中的 C:\Program Files 下,或 64 位 Windows 系统中的 C:\Program Files (x86) 下,但它写入的任何文件都不存放在那里。所有用户文件(数据库、ini 文件、错误日志、mc 文件、wav 文件、ADIF 文件、Cabrillo 文件、UDC 文件、呼号历史文件等)都存放在 Logger+ 用户文件区域的专用子文件夹中,该区域默认安装在你的个人 Documents 文件夹内。你计算机上用户文件区域的完整名称可能类似于 c:\users<Windows ID>\Documents\N1MM Logger+ 或 Documents\N1MM Logger+.。安装程序提供了更改这两个位置中任意一个的能力。如果你正在使用 OneDrive 或将来可能决定使用它,建议更改第二个位置,以便把用户文件区域移到 Documents 文件夹之外,例如将其安装到 C:\HamRadio\N1MM Logger+ 这样的位置。这样做是为了避免 OneDrive 引起的问题,它可能 (a) 在程序运行期间备份、还原或同步数据库文件时损坏数据库文件;(b) 把用户文件区域移到云端位置,在那里 Windows 资源管理器能找到它,但 N1MM+ 程序却找不到。
数字引擎文件(MMTTY、2Tone、Fldigi)并未设计为适应这种双文件夹结构,需要存放在 Windows Vista、7、8、10 和 11 中 C:\Program Files 与 C:\Program Files (x86) 路径之外。一种解决方案是把它们放在 Windows 预定义常规路径之外的目录中(例如 C:\Hamradio\MMTTY 或 C:\MMTTY 或 …);第二种解决方案是在你的 N1MM+ 用户文件夹内为数字引擎创建一个文件夹。两种方案都可行。
SQLite 数据库
不随比赛变化的信息保存在名为 N1MM Admin.s3db 的数据库中。比赛的 QSO 及相关信息位于可从文件(File)菜单创建或切换的数据库中。所有这些数据库都存放在 N1MM Logger+ 用户文件区域的 Databases 子目录中。
Do_Not_Use_or_Erase.s3db 文件 Databases 目录中有一个特殊的数据库文件,名为 Do_Not_Use_or_Erase.s3db —— 不要删除此文件,也不要把它命名为你的日志数据库!
“N1MM Logger.ini” 文件
N1MM Logger.ini 文件位于 N1MM Logger+ 用户文件目录中(可通过 帮助(Help)> 在用户文件目录上打开资源管理器(Open Explorer on User Files Directory) 菜单项访问)。“N1MM Logger.ini” 文件中的所有内容都应能通过程序的用户界面设置。如果某个项的值保留为默认值,该项可能不会出现在 “N1MM Logger.ini” 文件中。
删除 ‘N1MM Logger.ini’ 文件将使程序以默认设置启动,并需要重新输入所有配置项。在某些文件中的数据已损坏的情况下,这样做可能是必要的。在此之前,值得试着把问题开始之前最近的备份文件重命名来使用。主 N1MM Logger+ 用户文件目录中最多保留七个备份,一周中的每一天各一个,例如 N1MM Logger.ini.Monday.bak 等。
恢复到先前的 INI BAK 文件
- 关闭 N1MM Logger
- 把当前的 “N1MM Logger.ini” 文件重命名为其他名称,例如 “N1MM Logger.ini.CURRENT”
- 根据程序最后一次正常工作的时点,复制其中一个备份文件。在 Windows 资源管理器中执行该复制时,文件名会加入 Copy 一词。例如,“N1MM Logger.ini.Friday.bak” 的副本会被称为 “N1MM Logger.ini.Friday – Copy.bak”
- 把该 “- Copy.bak” 副本文件重命名为当前生效的 ini 文件名。例如把 “N1MM Logger.ini.Friday – Copy.bak” 重命名为 “N1MM Logger.ini”
- 启动 N1MM+,查看先前的配置是否正常工作。
ADIF 字段
N1MM Logger+ 符合 ADIF 标准。导出到 ADIF 的标准 ADIF 字段包括 CALL、QSO_DATE、TIME_ON、TIME_OFF、BAND、STATION_CALLSIGN、FREQ、CONTEST_ID、FREQ_RX、MODE、RST_RCVD、RST_SENT、OPERATOR、STX、PFX,也可能包括 NAME、COMMENT、CQZ、ITUZ、TX_PWR、SUBMODE、STATE、ARRL_SECT、IOTA,以及可能的其他字段,具体取决于比赛交换内容和其他情况。
此外,N1MM Logger+ 数据库中存储的信息无法仅通过标准 ADIF 标签全部包含。为此添加了若干 N1MM Logger 专用标签,这样在导出 ADIF 文件并再次导入时,DXLOG 表中的全部信息都会被恢复。重新计分会更新未导入的字段,并且可能需要重新计分,才能让得分和系数在屏幕上正确显示。这些专用字段包括:
APP_N1MM_EXCHANGE1 – Exchange1 字段的内容 APP_N1MM_POINTS – Points 字段的内容 APP_N1MM_MULT1(以及 MULT2 和 MULT3)– Multiplier 字段的内容 APP_N1MM_RADIO_NR – RadioNr 字段的内容(SO2R 或 SO2V) APP_N1MM_MISCTEXT – MiscText 字段的内容(若使用) APP_N1MM_CONTINENT – Continent 字段的内容 APP_N1MM_CONTACTTYPE – ContactType 字段的内容(例如 D 表示重复台) APP_N1MM_ISRUNQSO – 在搜索呼叫(S&P)模式下完成的联络为 0,在主叫(Run)模式下完成的联络为 1 APP_N1MM_RUN1RUN2:1 – Run 字段的内容。1 表示电台 1 是主叫(Run)电台,2 表示电台 2 是主叫(Run)电台。 APP_N1MM_RADIOINTERFACED – 表示是否有电台接入电台控制(1)或未接入(0) APP_N1MM_ISORIGINAL – True 或 False(标识在多机联网环境中本计算机是否为该 QSO 的“所有者”) APP_N1MM_NETBIOSNAME – 该联络最初被记录时所在计算机的 NetBIOS 名称 APP_N1MM_ID – 32 位十六进制的唯一记录标识符 APP_N1MM_RoverQTH – Rover QTH(若使用) APP_N1MM_ROVERCNTY – 如果该台站为漫游(Rover)台且比赛类型为 QSO Party,则包含来自 RoverQTH 的漫游县值。
请注意,数据库中的某些字段在不同比赛中用途不同,在不同比赛中可能以不同的 ADIF 标签导出/导入。例如,数据库中的 Zone 字段通常包含 CQ 分区(ADIF 中的 CQZ 标签),但在 IARU HF Championship 等某些比赛中,它改为包含 ITU 分区(ADIF 中的 ITUZ 标签)。Section 和 Misc 数据库字段同样在不同比赛中常用于不同用途,并可能根据这些字段在该特定比赛中的用途而以不同的 ADIF 标签导出或导入。
在 WAE 比赛中,QTC 不会导出到 ADIF 或从 ADIF 导入。把 WAE 比赛导出为 ADIF 再导入到另一个数据库,将丢失比赛中交换的所有 QTC 信息。要同时复制 QTC 和 QSO 数据,你必须使用 文件(File)> 将此比赛复制到另一个数据库(Copy This Contest to Another Database) 菜单项,或者把用原比赛日志创建的 TRN 文件导入到一个新的空数据库中。
数字接口中的呼号检查
下文介绍数字接口(Digital Interface)各窗口中的呼号检查是如何进行的。
它首先检查呼号长度是否正确(大于 2、小于 11)。接着检查前 6 个字符中某处是否有数字。第三,检查其中是否没有无效字符。如果以上各项全部通过,就进入抄错呼号检查器(Busted Call Checker)。如果抄错呼号检查器返回错误消息,则该呼号无效。抄错呼号检查器返回其他任何结果,都视为有效呼号。
当文本进入数字接口的接收(Receive)屏幕时,它会被打印到窗口并放入一个临时缓冲区。遇到空格、CR 或 LF 时,程序会把临时缓冲区中的文本发送给呼号检查例程。如果返回结果为有效呼号,就把它发送给另一个例程,该例程回溯接收屏幕的最后 25 个字符并相应地为其着色。遇到空格时,临时保存缓冲区被清空,随后内容会重新开始送入其中。上述整个过程完成只需略多于一毫秒。
与其他软件不同,这里不要求在呼号之前有 DE,它主要在呼号之后寻找空格。
看一下这个序列,它说明了程序如何在 RX 窗口中拾取呼号:
A QWSCFGTWA5TTT WA5TTT UR 599 XXXXXXXXXX
程序看到 TTT 与 WA 之间的空格,于是查看它先前的保存缓冲区,其中包含 “QWSCFGTWA5TTT”,该字符串并不等于一个有效呼号,尽管其中含有一个有效呼号。由于遇到空格,缓冲区被清空,下一个字符串开始被放入其中。当遇到第三个空格时,程序回溯并再次检查缓冲区,这次找到了 WA5TTT,便判定它是有效呼号。程序现在回溯 25 个字符,只要发现 WA5TTT,就相应地为其着色,并将其放入抓取窗口(Grab Window)。
至于单击呼号,它遵循相同的规则,只是有一个例程会查看鼠标下方的字符。如果那是有效呼号,它就会被送经各例程放入录入窗口(Entry Window)。有一行 ltrs/figs 文本,显示正在被转换的实际文本。这会让你了解正在选择的是什么文本等信息。
如果各国的规则发生变化,而抄错呼号检查器中的规则跟不上这些国家变化,就会出现问题,于是你会得到无法通过检查的呼号。把这些抄错呼号检查器例程加进去的主要目的,是减少大量垃圾文本被着色——这些文本通过了所有检查例程,但实际上并不是呼号。
路由器与防火墙
路由器为你抵御狂野纷杂的互联网提供了主要防线。每个接入宽带互联网服务的用户都应当只通过路由器接入。
软件防火墙(如 Windows XP 防火墙、Zone Alarm 等)可防范路由器后面的其他计算机。在比赛台站中关闭 Windows 防火墙大概是可以的。
路由器提供一项称为网络地址转换(NAT)的重要功能。如果你查看自己计算机的 IP 地址,看到 192.168.x.y(或 10.x.y.z),那就太好了。192.168.x.y(以及 10.x.y.z)地址段被定义为仅限本地使用,无法在互联网上路由。如果你的 PC 拥有这类地址,就好比你处在一台电话交换机后面,没有直拨号码。这是一种很好的防御。
软件防火墙可保护你免受路由器后面其他计算机的影响。所以,如果你随身携带笔记本电脑并使用各种无线网络,就绝对需要软件防火墙。星巴克的其他计算机可能满是病毒,你需要软件防火墙来防范它们。此外,如果你家里有一台计算机可能被用于一些不太安全的浏览,你也应当有软件防火墙。孩子们可能为在线游戏、点对点文件共享放行了访问权限,或者下载了带有间谍软件等的软件。运行软件防火墙来保护你的 PC。最后,如果你有无线网络,请务必控制谁能访问它。如果你的邻居能访问你的网络,而他的机器上有一堆恶意软件,你的机器也可能被感染。
Robert K5PI.
将 N1MM 加入 Windows 防火墙
当你不愿关闭 Windows 防火墙时,即使处在路由器后面,也可以让 Windows 防火墙保持开启。把 N1MM 加入你的例外列表(Exceptions list),更好的是把本地子网(通常为 192.168.1.0 (255.255.255.0))加入端口例外。