This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
我们要参考示例代码 radar_toolbox_2_10_00_04-Kick_to_Open
添加了 MMWAVE_L_SDK_05_05_00_02-LIN_EXTERNAL_RESPONER_INTERRUTS
为了添加 LIN 总线功能、程序启动后、只发送和接收一次命令、而不会出现 LIN 总线消息。
是否无法使用中断方法来使用 Kick_to_Open 中的 LIN 总线功能? 你有什么其他建议吗? 谢谢!
尊敬的 Johnny:
我已经加入了我们的软件专家。 请允许我们在一天左右提供回复。
谢谢。此致、
Sivaprasad
您好!
您是否已在雷达工具箱中浏览过此文档?
谢谢!
克林顿
我无法通过中断使用 Lin 总线?
我提到了 radar_toolbox_2_10_00_04-LIN_Integration、并修改了以下部分
////===
typedef 枚举{
LIN_RESPONSE_RX、
LIN_RESPONSE_TX、
LIN_RESPONSE_IGNORE、
{linResponseType_t;
typedef 结构{
uint16_t ID;
linResponseType_t ResponseType;
uint8_t 数据长度;
uint16_t transmitData[8];
{linFrameProcessStrut_s;
linFrameProcessStrut_s linFrameDatabase[]={
/* ID 响应类型长度响应帧(如果有)*/
{0x10、LIN_RESPONSE_RX、8}、
{0x11、LIN_RESPONSE_TX、8、{0x12、0x34、 0x56、0x78、0x90、0x12、0x34、 0x56 }、
};
void lin_write (uint32_t baseAddr、uint16_t id、uint16_t *数据、uint16_t 长度)
{
IF (LIN_isRxMatch (APP_LIN_BASE_ADDR))
{
if ((LIN_getRxIdentifier (APP_LIN_BASE_ADDR)& 0x3F)= 0x10)
{
LIN_setFrameLength (APP_LIN_BASE_ADDR、8);
}
否则 if ((LIN_getRxIdentifier (APP_LIN_BASE_ADDR)& 0x3F)= 0x11)
{
LIN_setFrameLength (APP_LIN_BASE_ADDR、8);
/*设置要从其中发送数据的缓冲区(长度为 sentFrameLength)*/
LIN_sendData (APP_LIN_BASE_ADDR、(uint16_t*) linFrameDatabase[1].transmitData);
/*等待直到传输缓冲区为空且已完成传输*/
while (! lin_isTxBufferEmpty (APP_LIN_BASE_ADDR);
}
}
}
////===
情况是相同的,没有响应后第一次传输!
嗨、Johnny、
您应该能够在 LIN 总线中使用中断、方法是在 SysConfig 中为您的项目启用中断、并为其中一条中断线路启用 Rx 缓冲区就绪和 Tx 缓冲区就绪中断。 然后、用户可以为给定的行定义一个 ISR、该行检查是否发生了 Tx 和 Rx 操作、并执行所需的任何其他信号传输或功能。 您可以在下的 LIN 外部响应者中断示例中看到这方面的示例 /examples/drivers/lin/lin_external_responder_interrupts、其中包含一些其他中断、例如唤醒和错误处理。
此致、
Kristien
我启用了所有中断、并按如下方式打印了 void level0ISR (void * args)的日志
此后不会再发生中断。
level0ISR:vectorOffset 0x10
level0ISR:vectorOffset 0x00
level0ISR:vectorOffset 0x04
level0ISR:vectorOffset 0x00
level0ISR:vectorOffset 0x0B
level0ISR:vectorOffset 0x00
level0ISR:vectorOffset 0x10
level0ISR:vectorOffset 0x00
接收到新帧0x10 (ID) 01 02 03 04 05 06 07 08
嗨、Johnny、
澄清一下、在启用中断之后、您能够从一个信号中断中接收数据、但是程序之后会失败、对吧? 在 ISR 期间是否使用 DebugP_LOG 打印输出? 如果是这样、DebugP_LOG 可能会因程序的高延迟而崩溃、因此仅在 LIN 外部响应器中断示例的主循环中包含打印输出。
此致、
Kristien
嗨、Johnny、
为了进行验证、您是否也发送了请求帧(ID 0x11)? 根据您的 linFrameDatabase 的设置方式、0x10将不会有响应、 根据您之前的回复、这似乎是正确的。 否则、从雷达 LIN 收发器触发传输的唯一方法是通过请求帧0x11进行发送。
如果您触发了 Tx 中断、是否会在接收到新帧后发生该情况? 同样、根据您之前的回复、我只会看到针对超时(0x10)、ID (0x04)、Rx (0x0B)而触发的中断、没有中断(0x00)。
最后、我们就在同一个页面上、您目前是否使用 LIN 外部响应者中断示例进行测试? 如果是这样、只有变化:已更改 linFrameDatabase 以匹配您的应用程序;通过 UART 打印中断值;以及在 SysConfig 中为中断线路0启用所有中断? 您启用了所有中断而不仅仅是 Tx 缓冲区就绪、Rx 缓冲区就绪、唤醒和匹配 ID 中断的特定原因应该支持此处所需的大多数必要功能吗?
此致、
Kristien
LIN 总线单独使用中断模式和轮询模式是正常的。 但是、向 Kick_to_Open 示例代码添加上述功能时存在问题。 请参阅 RADAR_toolbox_2_10_00_04-LIN_Integration、添加 LIN 总线轮询模式也会遇到相同的问题。
这似乎与低功耗模式有关、但根据 RADAR_toolbox_2_10_00_04-LIN_Integration、我不知道为什么仍然存在问题。
嗨、Johnny、
在低功耗深度睡眠(LPDS)期间、LIN 外设与大多数其他外设一起断电。 这意味着在 LPDS 期间不能接收或发送 LIN 消息。
如果较低的功耗不是优先级、则可以禁用 LPDS、或者尝试为该器件定义新的电源状态而不禁用 LIN。 后一种选项更复杂、因为它涉及修改和扩展电源状态控制、包括电源管理任务、策略功能和电源状态功能。
此致、
Kristien
我提到了 radar_toolbox_2_10_00_04-LIN_Integration、并修改了以下部分
////===
typedef 枚举{
LIN_RESPONSE_RX、
LIN_RESPONSE_TX、
LIN_RESPONSE_IGNORE、
{linResponseType_t;
typedef 结构{
uint16_t ID;
linResponseType_t ResponseType;
uint8_t 数据长度;
uint16_t transmitData[8];
{linFrameProcessStrut_s;
linFrameProcessStrut_s linFrameDatabase[]={
/* ID 响应类型长度响应帧(如果有)*/
{0x10、LIN_RESPONSE_RX、8}、
{0x11、LIN_RESPONSE_TX、8、{0x12、0x34、 0x56、0x78、0x90、0x12、0x34、 0x56 }、
};
void lin_write (uint32_t baseAddr、uint16_t id、uint16_t *数据、uint16_t 长度)
{
IF (LIN_isRxMatch (APP_LIN_BASE_ADDR))
{
if ((LIN_getRxIdentifier (APP_LIN_BASE_ADDR)& 0x3F)= 0x10)
{
LIN_setFrameLength (APP_LIN_BASE_ADDR、8);
}
否则 if ((LIN_getRxIdentifier (APP_LIN_BASE_ADDR)& 0x3F)= 0x11)
{
LIN_setFrameLength (APP_LIN_BASE_ADDR、8);
/*设置要从其中发送数据的缓冲区(长度为 sentFrameLength)*/
LIN_sendData (APP_LIN_BASE_ADDR、(uint16_t*) linFrameDatabase[1].transmitData);
/*等待直到传输缓冲区为空且已完成传输*/
while (! lin_isTxBufferEmpty (APP_LIN_BASE_ADDR);
}
}
}
////===
情况是相同的,没有响应后第一次传输!
嗨、Johnny、
请回答以下问题。
如前所述、 您是否也发送请求帧(ID 0x11)? 根据您的 linFrameDatabase 的设置方式、0x10将不会有响应、这似乎 是基于先前回复之一中发布的 UART 日志发送的唯一消息。 否则、从雷达 LIN 收发器触发传输的唯一方法是通过请求帧0x11进行发送。
如果您触发了 Tx 中断、是否会在接收到新帧后发生该情况? 同样、根据您之前的回复、我只会看到针对超时(0x10)、ID (0x04)、Rx (0x0B)而触发的中断、没有中断(0x00)。
在 LIN 集成示例中、您是否 只更改了以下内容:已更改 linFrameDatabase 以包含接收 ID 和响应 ID;通过 UART 打印中断值;以及在 SysConfig 中为中断线路0启用所有中断? 您启用了所有中断而不仅仅是 Tx 缓冲区就绪、Rx 缓冲区就绪、唤醒和匹配 ID 中断的特定原因应该支持此处所需的大多数必要功能吗?
在 LIN 集成代码中、您在哪里调用 lin_write? 在不进行修改的情况下、在 mmwawesakedOutputTask 中调用 lin_write 函数 Demo_Transmit、以通过 LIN 发送分类器输出。 根据您设置 LIN_WRITE 的方式、此函数检查是否存在有效的 Rx 消息、然后从 LIN 外部响应器中断示例中接收数据或发送类似于 LIN_PROCESSOR_FRAMES 函数的响应。 然而、在 LIN 外部响应者中断示例中、函数在 ISR (level0ISR)内调用。 因此、您是否为 LIN 0级中断设置了 ISR? 否则、 您没有正确处理之前配置的中断。
此致、
Kristien
目前、LIN 总线仿真器设置为主设备端、0x10:主设备->从 设备8字节;0x11:从设备->主 设备8字节。
linFrameProcessStrut_s linFrameDatabase[]={
/* ID 响应类型长度响应帧(如果有)*/
{0x10、LIN_RESPONSE_RX、8}、
{0x11、LIN_RESPONSE_TX、8、{0x12、0x34、 0x56、0x78、0x90、0x12、0x34、 0x56 }、
};
首先、让我来看看这个例子
MMWAVE_L_SDK_05_05_00_02-LIN_EXTERNAL_RESPONER_INTERRUTS
仅修改上述部分以及 LIN 校验和类型-> Checksum Enhanced (校验和增强)、连接仿真器将正常运行。
然后、将此部分添加到示例 radar_toolbox_2_10_00_04-Kick_to_Open 中
出现问题时、询问是否不能使用中断方法。 根据您的建议、我提到了 radar_toolbox_2_10_00_04-LIN_Integration、并将其更改为轮询模式。
仅修改了以下器件、不进行其他更改。
////===
typedef 枚举{
LIN_RESPONSE_RX、
LIN_RESPONSE_TX、
LIN_RESPONSE_IGNORE、
{linResponseType_t;
typedef 结构{
uint16_t ID;
linResponseType_t ResponseType;
uint8_t 数据长度;
uint16_t transmitData[8];
{linFrameProcessStrut_s;
linFrameProcessStrut_s linFrameDatabase[]={
/* ID 响应类型长度响应帧(如果有)*/
{0x10、LIN_RESPONSE_RX、8}、
{0x11、LIN_RESPONSE_TX、8、{0x12、0x34、 0x56、0x78、0x90、0x12、0x34、 0x56 }、
};
void lin_write (uint32_t baseAddr、uint16_t id、uint16_t *数据、uint16_t 长度)
{
IF (LIN_isRxMatch (APP_LIN_BASE_ADDR))
{
if ((LIN_getRxIdentifier (APP_LIN_BASE_ADDR)& 0x3F)= 0x10)
{
LIN_setFrameLength (APP_LIN_BASE_ADDR、8);
}
否则 if ((LIN_getRxIdentifier (APP_LIN_BASE_ADDR)& 0x3F)= 0x11)
{
LIN_setFrameLength (APP_LIN_BASE_ADDR、8);
/*设置要从其中发送数据的缓冲区(长度为 sentFrameLength)*/
LIN_sendData (APP_LIN_BASE_ADDR、(uint16_t*) linFrameDatabase[1].transmitData);
/*等待直到传输缓冲区为空且已完成传输*/
while (! lin_isTxBufferEmpty (APP_LIN_BASE_ADDR);
}
}
}
void gesture_recognition (void * args) 和 void power_LPDSresumehook (void)
{
.
.
.
/*输入软件复位状态*/
LIN_enterSoftwareReset (APP_LIN_BASE_ADDR);
/*启用多缓冲模式*/
LIN_enableMultibufferMode (APP_LIN_BASE_ADDR);
/*启用固定波特率模式*/
LIN_disableAutomaticBaudrate (APP_LIN_BASE_ADDR);
/*达到19200波特率*/
LIN_setBaudRatePrescaler (APP_LIN_BASE_ADDR、130U、0U);
/*启用扩展帧上校验和比较的触发*/
LIN_TRIGGERChecksumCompare (APP_LIN_BASE_ADDR);
LIN_setChecksumType (APP_LIN_BASE_ADDR、LIN_CHECKSUM_ENHANCED);
LIN_setLINMode (APP_LIN_BASE_ADDR、LIN_MODE_LIN_RESPONER);
/*最后退出软件复位并进入 LIN 就绪状态*/
lin_exitSoftwareReset (APP_LIN_BASE_ADDR);
}
////===
如果在传感器启动之前使用了 while 环路、则 LIN 总线正常运行、指示 LIN 总线的相关设置正确。
嗨、Johnny、
根据我的理解、您看到的行为是合理的。 总之、您已通过不断调用 LIN_WRITE 函数将检查 Rx 匹配情况并根据 ID 来存储或响应消息、从而将 LIN 收发器配置为在轮询模式下工作。
如果您要 在不轮询的情况下发送和接收消息、您仍需要在 SysConfig 中设置中断-请参阅此线程中的第一个回复-和一个 ISR、它类似于 LIN 外部响应器中断示例中的 level0ISR。 在 level0ISR 中、您可以将 LIN_PROCESSOR_FRAMES 函数直接替换为 LIN_WRITE 函数。
此致、
Kristien
我使用中断方法并设置 hwiPrms.priority = 6;
无法使用中断方法、因为 LIN 总线主器件的持续传输会导致中断占用所有系统资源。
另外、设置 hwiPrms.priority = 7;系统在回复一次后崩溃。
在 POWER_LPDSreenhook (void)中、与 LIN 总线相关的设置复位似乎不会生效。
如果使用了轮询、则仍会出现之前的问题。 这个问题已经解决了很长一段时间! 是否有更有效的方法? 谢谢!
此外,我不能使用 LIN_initModule()因为它会导致系统崩溃! 我不知道原因是什么?
嗨、Johnny、
为了避免中断控制器过载、您可以 尝试减少 仅触发 SysConfig 中 ID (0x04)和 Rx (0x0B)中断的中断类型、并将 ISR 修改为仅处理 LIN_VECT_ID (0x04)和 LIN_VECT_RX (0x0B)。
在 power_LPDSresumehook (void)中、重置与 LIN 总线相关的设置似乎无效。
在复位 LIN 总线设置时、到底有什么未能生效? 例如、波特率是否不是19200bps? 而是使用经典校验和吗?
此外、我不能使用 lin_initModule ()、因为它会导致系统崩溃! 我不知道为什么?
在哪里会导致代码崩溃、即哪一行代码出现故障、以及调试器中是否报告了错误矢量、例如 HwiP_hardFault、HwiP_memFault 、HwiP_busFault ? 根据最后一个屏幕截图、您应该避免连续重新初始化 LIN_initModule。 但是、这可能还取决于 App_linbusPollingCheck 和 App_linbusIntInit 函数的作用。 因此、您能否显示 App_linbusPollingCheck 和 App_linbusIntInit 函数的代码?
此致、
Kristien
我已经尝试减少 SysConfig 中的中断类型、以便仅触发 ID (0x04)和 Rx (0x0B)中断、并将 ISR 修改为仅处理 LIN_VECT_ID (0x04)和 LIN_VECT_RX (0x0B)、但没有改善。
在系统执行 POWER_LPDSreenhook (void)后、LIN 总线中断不再发生、这意味着 LIN 总线尚未成功初始化。
由于调试消息不能轻易保留、因此无法知道程序代码中崩溃发生的位置。 只能看到如下所示的停止屏幕。
我在循环中测试 LIN_initModule()。 主要目的是模拟系统通过低功耗模式复位所有驱动器件时如何成功复位 LIN 总线。
下面是一个代码片段:
///===____________________________________________________________
void App_linbusIntInit()
{
HwiP_Params hwiPrms;
int32_t status = SystemP_Success;
//LIN_initModule (CONFIG_LIN1_BASE_ADDR);
/*寄存器中断*/
Hwip_Params_init (&hwiPrms);
hwiPrms.intNum = APP_LIN_INTR_NUM_0;
hwiPrms.callback =&level0ISR;
hwiPrms.priority = 5;
状态= Hwip_construct (&G LinHwiObject_0、&hwiPrms);
DebugP_ASSERT (STATUS == SystemP_SUCCESS);
/*输入软件复位状态*/
LIN_enterSoftwareReset (APP_LIN_BASE_ADDR);
/*启用多缓冲模式*/
LIN_enableMultibufferMode (APP_LIN_BASE_ADDR);
/*启用固定波特率模式*/
LIN_disableAutomaticBaudrate (APP_LIN_BASE_ADDR);
/*达到19200波特率*/
LIN_setBaudRatePrescaler (APP_LIN_BASE_ADDR、130U、0U);
/*启用扩展帧上校验和比较的触发*/
LIN_TRIGGERChecksumCompare (APP_LIN_BASE_ADDR);
LIN_setChecksumType (APP_LIN_BASE_ADDR、LIN_CHECKSUM_ENHANCED);
LIN_setLINMode (APP_LIN_BASE_ADDR、LIN_MODE_LIN_RESPONER);
/*最后退出软件复位并进入 LIN 就绪状态*/
lin_exitSoftwareReset (APP_LIN_BASE_ADDR);
}
void App_linbusInit()
{
//LIN_initModule (CONFIG_LIN1_BASE_ADDR);
/*输入软件复位状态*/
//lin_enterSoftwareReset (APP_LIN_BASE_ADDR);
/*启用多缓冲模式*/
//LIN_enableMultibufferMode (APP_LIN_BASE_ADDR);
/*启用固定波特率模式*/
//LIN_disableAutomaticBaudrate (APP_LIN_BASE_ADDR);
/*达到19200波特率*/
LIN_setBaudRatePrescaler (APP_LIN_BASE_ADDR、130U、0U);
/*启用扩展帧上校验和比较的触发*/
//LIN_TRIGGERChecksumCompare (APP_LIN_BASE_ADDR);
//LIN_setChecksumType (APP_LIN_BASE_ADDR、LIN_CHECKSUM_ENHANCED);
//LIN_setLINMode (APP_LIN_BASE_ADDR、LIN_MODE_LIN_RESPONSE);
/*最后退出软件复位并进入 LIN 就绪状态*/
//lin_exitSoftwareReset (APP_LIN_BASE_ADDR);
}
void App_linbusPollingCheck()
{
/*检查是否已接收到新数据*/
if (rxReceivedID!= INVALID_ID)
{
/*在接收缓冲区中读取接收到的数据*/
LIN_getData (APP_LIN_BASE_ADDR、rxDatas);
for (uint8_t dataIndex=0;dataIndex < sentFrameLength;dataIndex++)
{
}
/*检查是否接收到睡眠帧 ID */
if (SLEEP_FRAME_PID = rxReceivedID)
{
/*检查是否接收到睡眠帧*/
if (!memcmp ((uint8_t*) rxDatas、(uint8_t*) LIN_SLEEPFrame、8)
{
/*将 Lin 设置为断电或睡眠模式*/
LIN_enterSleep (APP_LIN_BASE_ADDR);
}
}
rxReceivedID = INVALID_ID;
}
/*检查是否已为请求的 ID*/传输了响应
if (txDoneID!= INVALID_ID)
{
for (uint8_t dataIndex=0;dataIndex < sentFrameLength;dataIndex++)
{
}
txDoneID = INVALID_ID;
}
/*检查是否接收到未知 ID */
if (ignoreID!= INVALID_ID)
{
}
/*检查唤醒是否已经发生*/
if (wakeupInterruptFlag)
{
wakeupInterruptFlag = 0;
}
/*检查是否触发了任何错误*/
if (linErrorFlag)
{
switch (linErrorFlag)
{
CASE LIN_VECT_ISFE:
休息;
案例 LIN_VECT_PBE:
休息;
案例 LIN_VECT_PE:
休息;
案例 LIN_VECT_FE:
休息;
案例 LIN_VECT_CE:
休息;
案例 LIN_VECT_OE:
休息;
案例 LIN_VECT_BE:
休息;
案例 LIN_VECT_NRE:
休息;
默认值:
休息;
}
linErrorFlag = 0;
}
}
嗨、Johnny、
要确认、应用程序在第一帧后失败、对吗? 如果是、这可能是帧周期问题。 手势识别和脚踢开启功能具有严格的时序限制、如果时间不足、可能会导致应用崩溃。 我建议尝试增加配置文件中的帧周期。
如果终端应用对您的 LIN 测试无关紧要、我还会尝试将您的现有 LIN 代码实施到 毫米波演示 或 运动和存在检测演示等不同演示中 、因为这两个演示的时序往往更宽松。
此致、
Kristien
是的、应用程序在第一个帧后失败。 我试图修改配置文件中"framecfg"的第五个参数、例如"frameCfg 2 0 200 128 170 0 \n\r"、但情况相同。
此外、我在运动和存在检测演示中实施了部分 LIN 总线、这是正常的。
由于我们还需要在手势识别和脚踢开启功能中实施 LIN 总线功能、因此我们仍然需要解决这个问题! 谢谢!
嗨、Johnny、
我将会深入测试您分享的代码、并查看可能存在计时问题的地方。
此致、
Kristien
是否有任何新的更新? 谢谢!
轮询为什么不能解决时序问题?
我在运动和存在检测演示中尝试了使用中断或轮询、两者都正常工作。
嗨、Johnny、
很抱歉耽误你的时间。 请再给我一天时间来研究这个问题。 我明天会发出回复。
此致、
Kristien
嗨、Johnny、
我已经尝试在我这边进行测试、但由于仪表问题、我目前无法向雷达器件发送 LIN 消息。 我正在努力解决这个问题、所以在此期间、我将回答您之前的问题。
为什么轮询不能解决时间问题?
根据到目前为止我们所讨论的内容、这可能涉及很多方面、比如进入和退出低功耗模式或手势识别演示的时序限制。 但是、我们已经讨论了很多解决方案和解决方法-即通过分别将 lowPowerCfg 设置为0或2并增加帧周期来禁用或模拟低功耗模式。 我仍然感到奇怪的是、增加帧周期无法解决该问题、因为这通常是解决超时问题的最常见方法。
此致、
Kristien
我们目前没有新的想法。 不确定如何继续。
嗨、Johnny、
很抱歉耽误你的时间。 我已经确定了我的测试设置的问题、并将在周一之前解决该问题。 届时、我应该能够恢复测试。 同时还有一个简短的问题:您是否正在尝试在 AWRL6432上运行 AWRL1432项目?
感谢您的耐心等待、
Kristien
我在 AWRL6432上执行了 AWRL1432项目并修改了定义。
嗨、Johnny、
仅需确认、您是否更改了以下内容:
此致、
Kristien
没错! 都会修改这些器件。
嗨、Johnny、
感谢您验证这些信息。 您能否使用最新的 Radar Toolbox 版本2_20_00_05更新您的 LIN 集成项目? 此 LIN 工程支持 SDK 5.4、而2_10版本仅支持 SDK 5.3.4.1。 这还将确保我们处于同一版本、并消除由于潜在版本差异而导致我和你这边的项目行为不匹配的情况。
请告诉我更新到最新版本是否有助于或改变观察到的行为。
此致、
Kristien
雷达工具箱版本2_20_00_05的情况相同。
是否有任何新的更新? 谢谢!
嗨、Johnny、
我很抱歉耽误了您的联系。 我正在研究 LIN 集成示例、该示例可能存在问题、将在本月底推出的下一个 Radar Toolbox 版本中修复。
问题似乎与在导入到 CCS 中时工程放入的文件有关、该文件会导致配置器件时出错。 这应该会导致应用在尝试启动传感器时失败。 因此、您是否能够确认在配置器件后尝试启动传感器时应用程序失败?
此致、
Kristien
当我在配置器件后尝试启动传感器时、甚至第一支笔也不会出现。
嗨、Johnny、
有趣的是、这听起来可能与之前提到的项目导入问题有关。 我将再次深入研究、并尝试在下一个 Radar Toolbox 版本中修复此问题。 目前、我建议确认导入到 LIN 集成工程的 mmw_cli.c 文件是否与 SDK 5.4的 KTO 工程的 mmw_cli.c 文件匹配。
另外、我将在下周一进行、因此 我要等到10月22日才能回复。
此致、
Kristien
雷达工具箱的下一个版本何时发布?谢谢!
嗨、Johnny、
下一版 Radar Toolbox 应该会在下周结束时发布。
此致、
Kristien
是否发布了下一版本的 Radar Toolbox? 谢谢!
嗨、Johnny、
下一版本的 Radar Toolbox 将于下周推出。 如果可用、我会再发送一条消息。
此致、
Kristien
嗨、Johnny、
我们将在本周结束之前发布 Radar Toolbox。 很抱歉、由于时间紧迫、我们将在发布前进行最后清理。
此致、
Kristien