1

就我而言,我想在特定时间唤醒 subnero 调制解调器并传输自己生成的信号。根据 unetStack 手册第 25 章,调度程序模块能够在特定时间组织调制解调器唤醒。所以我尝试使用跟随 groovy 脚本来测试调制解调器。毫无疑问,它不起作用。

addsleep 1.minutes.later 5.minutes.later;
phy << new GetSleepScheduleReq();
plvl = -30;
signal = load('sig.txt');
5.times {
    phy << new TxBasebandSignalReq(signal:signal, fc:0);
    delay(5000);
}

我发现有一个名为“WakeFromSleepNtf”的函数,它有助于控制调制解调器,但是没有详细说明这个函数。

虽然可以使用 TxBasebandSignalReq 的延迟函数或名为TxTime的参数来制定时间表来控制调制解调器在特定时间轴上工作,但它要求调制解调器一直工作。以这种方式,调制解调器的电池是一个问题,特别是当调制解调器与车辆集成时。

我相信如果有一个通知功能或其他方法来实现当subnero唤醒时自动运行我的脚本,那么问题就可以解决。

4

1 回答 1

1

你在正确的轨道上,但有一些细节不正确。如果我理解正确,您想睡 5 分钟,然后传输 5 次信号,传输之间有 5 秒的延迟。

如果是这样,我会在外壳上做这样的事情:

// part 1: wait until its time to transmit
t = 5.minutes.later                  // calculate time of transmission
addsleep t                           // schedule sleep from now until time t
while (t-time/1000 > 1) delay(1000)  // wait until its time to transmit

// part 2: make your transmissions
plvl -30                             // set power level
signal = load('sig.txt')             // load your signal
5.times {                            // transmit it 5 times with 5 second delay
    phy << new TxBasebandSignalReq(signal:signal, fc:0)
    delay(5000)
}

代码的第一部分计算t应该进行传输的时间(以纪元秒为单位),并要求调制解调器在此之前安排睡眠。将调制解调器置于睡眠状态需要几秒钟,因此脚本将在此期间继续运行。因此,我们需要下一条语句等待传输时间,通过检查当前时间(time以纪元毫秒为单位给出当前时间)与每秒传输时间。

代码的第二部分与您的相同,但请注意不应该有=after plvl

PS 一些调制解调器(例如unet audio在笔记本电脑上)可能没有低功耗睡眠模式,因此可能不会真正进入睡眠状态。第 1 部分中的等待循环还确保此代码在此类调制解调器上正常工作。

于 2019-11-02T06:30:39.267 回答