目录

外部 UDP 消息把 N1MM Logger+ 中有关当前进行中比赛的信息传递给各种第三方软件程序。只要接收计算机能够通过其本地路由器访问,UDP 消息就可以发送到远程地址。你无法向远程子网发送广播(如 xx.xx.xx.255)。

N1MM Logger+ 还内置了其他 UDP 消息,用于支持各种程序运行与交互功能(多机台站的联网或旋转器控制),但(除下文注明者外)它们对一般用户并无太大用处。

致软件开发者的说明 Vasily K3IT 发现,如果在打开 UDP 端口时同时使用 SO_BROADCAST 和 SO_REUSEADDR 选项,端口会以“非独占”模式打开。这样多个应用程序就能共享同一端口,只要它们都遵循这种做法。使用这些标志有助于避免端口冲突问题。

要启用外部 UDP 消息,请依次选择 >配置(Config)>配置端口…(Config Ports…)>广播数据(Broadcast Data)。

选择要发送的 UDP 消息

复选框 说明
应用程序信息(Application Info) 在程序启动时、打开新比赛时,或在比赛对话框窗口(Contest Dialog window)中选择其他比赛或比赛实例时,发送有关台站和当前比赛的信息(台站名称、比赛数据库、比赛名称等)。完整字段列表见下文
电台(Radio) 至少每 10 秒,或在电台频率或模式发生变化时,发送电台信息(模式、频率、天线、操作员等)。完整字段列表见下文
联络(Contacts) 当一条新联络(QSO)添加到日志、日志中的现有联络被编辑、或现有联络从日志中删除时,发送联络信息(时间、呼号、模式、频率、交换内容等)。完整字段列表见下文
所有计算机(All Computers) 从本站发送网络上所有台站的联络信息。此命令仅在联网计算机(Networked Computer)模式下有用。在任何台站启用该选项(并与联络(Contact)一同启用)后,该台站会把收到的每条联络重新发送到指定的 UDP 端口。XML 格式与联络相同,只是 IsOriginal 会被设为 false。注意:多台配置错误、启用了 All QSOs 的台站可能导致联络数据包在网络中形成环形风暴
台情(Spots) 在台情被处理(添加或删除)时发送其信息。台情可能来自 telnet(包括 RBN)、来自记录 QSO,或来自波段图(Bandmap)中存储的本地台情
得分(Score) 可用于在本地网络内上报得分。若要向在线得分上报数据库上报得分,请使用配置器(Configurer)中的得分上报(Score Reporting)选项卡
外部呼号查询(External Callsign Lookup) 用于在完成联络之前,向第三方应用程序(如通用日志程序)发送 LookupInfo 数据包。参见下文对 LookupInfo 数据包的说明

设置目标 IP 地址

应用程序、电台和联络数据包将被发往此对话框窗口中指定的目的地。要发送给本机上运行的程序,请使用地址 127.0.0.1。要发送给本子网上的另一台 PC,请在相应行中输入其 IP。要发送给本子网上的所有 PC,请把本子网地址的最后一位数字(八位组)填为 255。例如:若本子网上的 PC 地址为 192.168.1.n,则使用 192.168.1.255 可将数据包发送给此网络上的所有 PC。多个目标 IP 地址之间用空格分隔。请勿在较高位的八位组中指定 255,否则可能会向互联网广播。虽然这些数据包最终会被互联网路由器丢弃,但这不会让你的 ISP 对你有好感。

设置目标 IP 端口号

除下文注明者外,N1MM Logger 应用程序推荐的默认端口号为 12060。目标端口号的写法是在 IP 地址后加上一个冒号“:”,再接端口号。例如,要把数据包发送到本机的 12060 端口以及本子网上所有其他 PC:127.0.0.1:12060 192.168.1.255:12060

其他 UDP 消息设置

可选的 External Message 语句允许把不同的外部消息类型发送到不同的 IP 地址、多个 IP 地址和多个端口号。有关把这些应用程序的数据包寻址信息添加到 N1MM Logger.INI 文件的配置细节,请参阅这些应用程序的说明。

接口开发者 – XML 数据包说明 下列数据包的格式化 XML 文本可在网站“下载”区的“附加支持文件”下获取。

XML 架构与消息字段列表

应用程序信息

N1MM N8SL\_FIELDDAY.s3db 2 ARRL-FIELD-DAY 80M-TENT N8SL

说明:contestnr 是在此数据库中分配给该比赛实例的唯一编号。不要指望另一台运行相同比赛名称的计算机也会分配到相同的 contestnr。

联络

联络信息 UDP 包

N1MM CWOPS 73 2020-01-17 16:43:38 W2XYZ 3.5 352519 352519 CW W1AW K W1 W2XYZ NA 599 5 599 0
0 0 1 0 0 1 1 1 1 0 False 0 CONTEST-PC f9ffac4fcd3e479ca86e137df1338531 1 2020-01-17 16:43:38 W1AW XYZ NY

说明

  • IsOriginal 表示这是最初记录该联络的台站——以区别于可能正在转发该联络记录的另一台站。StationName 是发送此数据包的台站的 netbios 名称,不一定是记录该联络的台站名称。
  • “power”、“name” 和 “qth” 指有关本次联络中所通联台站的信息。在发射功率属于交换内容一部分的比赛中,“power” 将包含从对方台站收到的功率交换内容。
  • “run1run2” 指多人双机(multi-2)配置中的主叫(Run)电台编号。
  • “band” 由 2 或 3 个字符组成,其中可能包含本地化的分隔符。例如,80 米可能写作 “3.5” 或 “3,5”;160 米写作 “1.8” 或 “1,8”。用户在 Windows 中的设置将决定 band 标签中使用哪种分隔符
  • ID 是日志中每条联络的 32 字节唯一 GUID 标识符。请注意,它按每字节 2 个十六进制字符的方式发送。
  • IsClaimedQso 最初对所有联络默认取值为 “1”,当某条联络被声明为 X-QSO 时会设为 “0”
  • oldtimestamp 和 oldcall 用于 contactreplace 数据包,以指明编辑之前最初记录的时间和呼号(以备其中之一发生更改)。在 contactinfo 数据包中,它们分别与 timestamp 和 call 相同
  • SentExchange 是比赛设置对话框窗口中发送交换内容(Sent Exchange)框的内容。它不一定与 QSO 期间实际发送的交换内容相同:其中没有信号报告,序号(# 或 001)是实际序号(sntnr)的占位符,而且不能保证发送交换内容框中的内容与功能键消息中的内容一致
  • ContactInfo 中的 ADIF 字段 – 人们很容易假定 contactinfo 消息中的字段与 ADIF 规范中的类似字段之间存在一一对应关系,但事实并非总是如此。最好的例子是 contactinfo 消息中的 Section 字段;它的含义取决于特定比赛的规则如何规定。在极少数比赛中,Section 字段与 ADIF 的 ARRL_SECT 相同;在另一些比赛以及大多数地理位置中,它可能与 ADIF 中的 STATE 相同。然而,在某些比赛中、对于某些地理位置(例如阿拉斯加、夏威夷、哥伦比亚特区、加拿大沿海省份、加拿大北部地区),比赛规则中指定的分区标识符可能与这两个 ADIF 字段都不匹配。另一个例子是 Zone 字段,它通常与 ADIF 中的 CQZ 含义相同,但在某些比赛中与 ITUZ 含义相同。还有一个例子是频率字段,其格式与 ADIF 不同;在 contact info 和 radio info 消息中,频率以 10 Hz 为单位导出。

联络替换

联络替换数据包包含与上文联络信息相同的字段,但使用 XML 标签。

N1MM CWOPS 73 2020-01-17 16 :43:38 W2XYZ . . .

给开发者的重要说明: 当用户编辑现有联络记录时,程序会发送一对 UDP 数据包:先是 < contactdelete > 数据包,接着是 < contactreplace > 数据包。如果 < contactreplace > 数据包包含该记录的新时间戳或呼号,则 < contactdelete > 数据包会包含现有记录的呼号和时戳。(随着 oldcall 和 oldtimestamp 字段的加入,这种需求现已被取消。)

联络删除

N1MM 2020-01-17 16 :43:38 W2XYZ 3.5 W1AW 73 CONTEST-PC a1b2c3d4e5f6g7h

LookupInfo

N1MM CWOPS 73 2020-01-17 16 :43:38 W2XYZ . . .

说明:LookupInfo UDP 数据包的结构与前面描述的 ContactInfo 数据包完全相同。LookUp 数据包的用途是告知第三方应用程序(通常是通用日志程序)打算通联某个台站。这两个数据包的区别在于发送时机。LookupInfo 数据包在录入窗口(Entry Window)中输入呼号并按 [空格键] 之后发送,但在呼号被记入 N1MM 数据库之前。相比之下,ContactInfo 数据包是在新记录已添加到比赛日志之后发送。LookupInfo 与 ContactInfo 是两个独立的功能,各自都需要在 N1MM+ 的配置器(Configurer)>广播数据(Broadcast Data)选项卡中配置。LookupInfo 数据包建议的默认端口为 12060。

电台信息

N1MM CW-80m 1 352211 352211 CW W1ABC W1ABC False 204626 275678 8 1 False False 1 False -1

电台信息说明:

  • app 是发送该数据包的日志程序的简称。例如:“N1MM”、“DXLab”、“Logger32”、“UcxLog”、“Log4OM”
  • StationName 是发送这些消息的计算机的 NetBios 名称。它就是多机联网中使用的名称。Windows 将其限制为 15 个字符。如果计算机名超过 15 个字符,则使用前 15 个字符。
  • RadioNr 是与特定 XML 数据包关联的电台编号——换言之,即该数据包中信息的来源。在 SO2V 或 SO2R 模式下,N1MM+ 每 10 秒发送两个数据包——分别来自 RadioNr1 和 RadioNr2 各一个
  • Freq 是接收频率,以到十位数字的数值表示,不带分隔符。例如:160 米:181234;40 米:712345;10 米:2812345;6 米:5012345
  • TXFreq 是发射频率,以到十位数字的数值表示,不带分隔符。例如:160 米:181234;40 米:712345;10 米:2812345;6 米:5012345
  • Mode 是日志记录模式,可以是下列任意一种:CW, USB, LSB, RTTY, PSK31, PSK63, PSK125, PSK250, QPSK31, QPSK63, QPSK125, QPSK250, FSK, GMSK, DOMINO, HELL, FMHELL, HELL80, MT63, THOR, THRB, THRBX, OLIVIA, MFSK8, MFSK16
  • mycall 是台站呼号
  • OpCall 是操作员在 OPON(或 Ctl-O)之后输入的呼号。默认为台站呼号
  • IsRunning 表示录入窗口(Entry Window)中主叫(Run)与搜索呼叫(S&P)单选按钮的取值。如果你处于自己的 CQ 频率上,IsRunning 通常为 True
  • FocusEntry 是获得程序焦点的录入窗口的 Windows 分配句柄
  • EntryWindowHwnd 允许外部软件向特定 EntryWindow 发送命令(即使用 AHK 向 EW2 发送 F1 等)
  • Antenna 是此电台当前选择的天线(0-63),来自配置器(Configurer)中的天线(Antenna)选项卡
  • Rotors 是当前选中的旋转器名称,来自配置器(Configurer)中的天线(Antenna)表
  • FocusRadioNr 接收电台焦点或键盘焦点——即录入窗口(Entry Window)中的绿点。它为 SO2R 操作启用信号切换,便于把麦克风、音频、PTT、CW 信号路由到所选电台或从所选电台路由出去。当程序、鼠标单击或 \ 键选择另一个录入窗口时,FocusRadioNr 会在 1 与 2 之间切换
  • IsStereo 为 SO2R 操作启用音频切换。` 键(反引号)会在 True 与 False 之间切换其取值
  • ActiveRadioNr 发射电台焦点——即录入窗口(Entry Window)中的红点。它为 SO2R 操作启用信号切换,便于把麦克风、音频、PTT、CW 信号路由到所选电台或从所选电台路由出去。当程序或按下 [Pause] 键选择另一个录入窗口时,ActiveRadioNr 会在 1 与 2 之间切换
  • IsSplit 收发信机处于异频 VFO 模式(例如:vfoA=Rx,vfoB=Tx)。并非所有电台——尤其是较老的电台——都支持
  • IsTransmitting 程序(区别于电台)处于发射(True)或接收(False)模式。参见下文的 IsTransmitting 警告
  • FunctionKeyCaption 为启动本次发射而按下的功能键的标签
  • RadioName 电台名称,如录入窗口(Entry Window)中所示(即 “TS-590”)
  • AuxAntSelected 通常为 “-1”,直到用户按下包含 {auxantsel} 宏的录入窗口功能键。每次按键会发送一个包含所选天线编号的 UDP 数据包,之后 恢复为 “-1”
  • AuxAntSelectedName 通常为空,直到用户按下包含 {auxantsel} 宏的录入窗口功能键。每次按键会发送一个包含所选天线名称的 UDP 数据包,之后 恢复为空字段
  • IsConnected 指示电台是否已连接。断开连接(False)可能需要一段时间才会被登记

程序每 10 秒发送一次电台信息数据包,或者在这些字段中任一信息发生变化的事件发生后立即发送(例如:用户换频段、转动 VFO 旋钮、从主叫(Run)切换到搜索呼叫(S&P),或选择 vfoB)。

在 = False 的情况下发射 只有当 N1MM+ 发起发射时,RadioInfo 中的 IsTransmitting 标签才会显示为 True。当发射由 N1MM+ 之外的设备发起时——例如麦克风的 PTT 按钮或 CW 双桨键——IsTransmitting 仍会显示为 False。在使用 IsTransmitting 控制需要知道电台处于发射还是接收状态的外部设备时要小心。

SO2V 模式下的 RadioInfo 广播 当日志程序处于 SO2V 模式时,使用 RadioInfo 广播可能需要特别考虑。在 SO2V 中,对于 RadioNr 与 ActiveRadioNr 彼此不同的数据包,不应依赖其提供发射频率信息。

说明:N1MM+ 对 SO2V 中两个 VFO 的处理方式,与它对 SO2R 中两部电台的处理方式类似。RadioNr = 1 的广播与 VFO A 相关(在大多数双接收机电台中为主接收机),RadioNr = 2 的广播与 VFO B 相关(在具备该配置的电台中为副接收机)。在每次这类广播中,无论哪个 VFO 处于活动状态,导出的 TxFreq 值通常与接收频率(Freq)相同(就好像 RadioNr 1 和 RadioNr 2 是两部独立的电台)。例外情况是程序处于异频(Split)模式时。此时(且仅此时)TxFreq 会指示另一个 VFO 中的频率,以反映异频模式状态。

这意味着,接收 RadioInfo 广播数据包并且需要了解发射频率或频段的程序(例如控制功放或天线切换器的程序)必须把 ActiveRadioNr 考虑在内。在 SO2V 模式下,RadioNr 与 ActiveRadioNr 不相同的数据包中所报告的 TxFreq,通常不是实际的发射频率。当两个 VFO 位于同一频段时,这不太可能造成大问题,但如果两个 VFO 位于不同频段,这些非活动电台数据包中报告的 TxFreq 就会产生误导。要确定正确的发射频率,在 N1MM+ 处于 SO2V 时,此类程序应只使用 RadioNr 与 ActiveRadioNr 取值相同的数据包中的 TxFreq。

旋转器控制

当用户选择 >工具(Tools)>转动旋转器(Turn Rotor)(alt+J)时,会自动发送用于操作独立的旋转器控制程序的消息,无需进行配置设置或修改 N1MM Logger.ini 文件。这些消息始终在端口 12040 上发送。更多信息请参见旋转器控制一章。

台情数据

台情 UDP 数据包:

N1MM CONTEST-PC AL3CDE 7061.2 K2PO/7-# 2O20-Ol-l7 17:19:37 add CW CW 9 DB 18 WPM CQ AK single mult single mult
  • StationName – 台站对话框中显示的呼号
  • dxcall – 被标记台情的台站
  • spottercall – 发出该台情的台站(对于已通联的台站或本地标记的台情,即为 StationName)
  • comment – 台情中的注释
  • action – 该台情是添加(“add”)还是删除(“delete”)。当被标记台情的台站在同一频段内移动时,会删除该台情
  • status – 重复台、系数等。取值见下文
  • timestamp – 台情的时间

status 的取值如下:

  • busy – 由 N1MM 用户标记为需要关注的频率(例如使用录入窗口中的标记(Mark)按钮所做的本地台情)
  • bust – 抄错的呼号(当存在 CT1BOH 标记时)
  • cq – 本频段上的 CQ 频率(最后一次按下 F1 的位置)
  • dupe – 重复联络(包括在本比赛中无法计分的联络)
  • qtc – WAE 的 qtc
  • single mult – 该台情在本比赛中是单系数
  • double mult – 该台情在本比赛中是双系数(或更多)
  • new qso – 该台情对应的台站在本比赛中会是新联络,但不是系数

得分上报

要向在线得分上报网站发送联络信息,请依次打开配置器(Configurer)>配置(Config)>配置端口…(Configure ports…)>得分上报(Score Reporting)选项卡。

ARRL-FIELD-DAY K8UT VA5DX K 4 8 MI MI EN82BK 156 312 15 30 385 384 19 38 14 28 30 30 6 12 3 6 24 48 75 150 136 136 l 2 l 2 54 108 9 9 625 1250 2 4 746 746 2301 3295 3295 2020-01-17 17:33:37

向 N1MM+ 发送频谱数据

N1MM+ 在端口 13064 上接收来自 SDR 接收机的频谱数据。请遵循以下 XML 布局:

WaterfallBandmap NlMM SDR1 14000 14055 0.3125 475 0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,19,25,0,0,0,0,0,0,0,4,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,38,50,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0, 0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0

说明:

  • Name 是你的信号源名称。它会显示在 N1MMPlus 界面中
  • LowScopeFrequency 是 SpectrumData 中信号电平所表示的最低频率
  • HighScopeFrequency 是 SpectrumData 中信号电平所表示的最高频率
  • ScalingFactor 是一个数值,用于把 SpectrumData 中的 0-N 数据转换为 dB,以便在界面中显示
  • DataCount 是 SpectrumData 中发送的信号电平数量
  • SpectrumData 是以逗号分隔的信号电平值。Icom 使用的范围是 0-160。我们可以接受 0-65535 的整数值。
  • 频谱窗口帮助见:频谱窗口帮助

要在 N1MM+ 中显示这些数据:

  • 打开频谱显示(Spectrum Display)窗口(Windows/Spectrum Display)。
  • 右击,把频谱来源(Spectrum Source)改为 “Source Name”。
  • 把来源名称设为你上面消息中发送的 Name。

我们尽量减少了你方的开发工作量,只要求提供六项元数据以及你的电平信息,且其形式与你界面上显示电平数据的方式相同。Icom 大约每秒提供 3 次这类数据,这似乎已经足够。我们不希望超过每秒 5 到 10 次,以免使用户的机器过载,因为许多用户使用的处理器较老。 除 xml 数据之外,你还需要允许用户指定数据要发送到的 IP 地址。你可能还需要允许用户为信号源命名,以防他们的网络上有多个频谱显示。

如果你想看看频谱界面是什么样子,我准备了一段 4 分钟的视频:频谱视频

从外部程序设置 N1MM 的频率

使用 Radio_SetFrequency 数据包,你可以向 N1MM(进而向你连接的电台)发送 QSY 命令。数据包编码必须使用 UTF8,端口设置为 13064。请注意,鼠标按键 =Radio 1,在运行 SO2V/R 时 =Radio 2。

<radio_setfrequency> WaterfallBandmap 1 14053.284 Left </radio_setfrequency>

同时使用两个电台控制程序

当两个程序——例如 N1MM+ 和 WSJT-X——试图访问 Windows 中同一个 COM 端口时,你会遇到端口错误。解决办法是采用某种形式的串口共享。你有许多选择:VSPE、com0com、LP-Bridge、Win4K3……我们不打算做硬性规定——使用你能使之工作的那一个,或者你的通用日志程序附带的那一个。 或 如果你打算用 WSJT-X 进行专用的 JT65 / FT8 操作,而只是把 N1MM+ 当作后端比赛数据库使用,那么你可以创建一个自定义 INI 文件,在不启用其 CAT 接口的情况下启动 N1MM+。这样可以避免任何串口方面的麻烦。关于使用自定义 INI 文件并在启用自定义 INI 设置的情况下启动 N1MM+ 的文档见**此处**,位于 Multiple ini files 一节。

不过坦白说,如果可能的话,最好还是使用此处所述的 WSJT-X 与 N1MM+ 之间的集成(在 WSJT 解码列表窗口的说明中)。这种方法实际上让两个程序共享电台控制:WSJT-X 通过向 N1MM+ 发送命令来进行电台控制,而不是直接控制电台。此方法不使用 UDP 端口 2333;它改为在端口 2237 上使用 WSJT-X 中定义的协议(本文不作描述)与 WSJT-X 通信。

N1MM Logger+ 手册(中文版) / 外部 UDP 广播消息 0 字 0 行 bg8lng
2026-10-08T11:46:39.388978896Z 2026-10-08T12:45:00.382864691Z