无密码用户重播()问题

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
12个帖子/ 0新
最后一篇
Gert186.
离线
最后一次露面:1年4个月前
加入:2016-04-21 12:59
无密码用户重播()问题

你好,

我用1wire写了一个新的命令:

else if(用户比较命令(“1wire”,1,2))
{
TM\u OneWire\u t OW;
uint8_t port = ahtoi((char *)参数array [0]);
uint8_t port_number =端口/ 10;
uint8\u t pin\u number=端口%10;
uint8光盘[8];
char消息[8];
浮动温度;

tm_onewire_init(&ow,(gpio_port)port_number,(gpio_pin)pin_number);
tm_onewire_reset(&ow);

if(TM\u OneWire\u First(&O)){
// expanction.
tm_ds18b20_startall(&ow);
systick_wait(750000);//等待750ms.

/ *搜索下一个设备* /
做 {

tm_onewire_getfullrom(&ow,ds_rom);
tm_ds18b20_read(&ow,ds_rom和temp);
Sprintf(消息,“%x%x%x%x,%0.2f”,ds_rom [4],ds_rom [5],ds_rom [6],ds_rom [7],temp);// ds_rom [0],ds_rom [1],ds_rom [2],ds_rom [3],
//arch\u printf(“ATr+PRINT=%s\r”,消息);
用户回复(消息,真);
} whiled(tm_onewire_next(&ow));
}
}

工作正常,但我想用user_replay将消息中的值发送给peer(消息,true)
作废用户回复(char*reply\u string,bool success)
{
if(!deceless_env.suppress_response)
{
如果(成功)
{
//附加'确定'回复
if(strlen(reply_string)> 0)
sprintf(reply_string,“%s \ r \ nok”,Reply_String);
别的
Reply_String =“OK”;
}
别的
{
//报告“错误”
Sprintf(Reply_String,“错误”);
}

//如果命令来自BT Peer,则回复BT Peer(仅在连接时)
if((dodeless_env.command_route == cmd_from_peer_resp_peer)&&(ke_state_get(task_app)== app_connected))
{
send_to_peer(reply_string);
}
else if(无代码\u env.command \u route==CMD \u FROM \u LOCAL \u RESP \u LOCAL)
{
//通过串口本地回复
ARCH_PUTS(“\ r \ n”);
拱形放置(应答字符串);
ARCH_PUTS(“\ r \ n”);
arch_printf_process();
}
//codeless_env.command_route=CMD_route_UNDEFINED;
}
}

我只拿到最后一根绳子。如果我安装了10个传感器,是上一个的10倍。。。。。

如果我取消注释//codeless\u env.command\u route=CMD\u route\u UNDEFINED;
然后我只会得到第一个..

有人可以帮助我了解这个问题吗?

此致
格特

设备:
mhv_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2013-12-06 15:10
嗨,格特,

嗨,格特,

请尝试描述您想要完成的事情。单独列出的代码留下了太多未知数:o)

具体来说,我需要了解您是否真的试图在本地发出命令,并希望通过无线将回复返回给对等方。另外,我还需要您要交换多少数据。回复字符串限制为160个字符。

/ mhv.

Gert186.
离线
最后一次露面:1年4个月前
加入:2016-04-21 12:59
好 啊,

好 啊,

我想从掌握到奴隶:

ATR + 1wire = 00开始从从站(在本例10)上的附加传感器上的读取,并在空中发送id和值回到主设备!
主站应将UART2上的值打印到终端。

命令发送和执行工作就像魅力。
但问题是它在空中向主人发送了一些东西,而是掌握只打印第一个
无代码\u env.command\u route=CMD\u route\u未定义1次
如果你有10次
//codeless_env.command_route = cmd_route_undined void user_reply(char * reply_string,bool成功)。

我不明白为什么他只打印出在UART2上的最后一个。

此致
格特

mhv_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2013-12-06 15:10
嗨,格特,

嗨,格特,

您正在打破命令的流程,因为您反复使用user_reply()。当收到远程处的AT命令时,无附加无附件将Dodeless_env.command_route设置为cmd_from_peer_resp_peer,这确保了回复返回到命令发起者。一旦回复为传输准备的BEN,Command_Route就会设置为CMD_Route_undeNined以允许接收下一个命令(通过蓝牙或UART)。

在您的循环中,而不是使用user_reply(),只需将整个响应记录回对等体。然后在循环之外,使用user_reply()将整个字符串传输为一个回复。这允许无附加的CommandFlow保持完整。但请记住,回复只能长为160个字符。

/ mhv.

基文
离线
最后一次露面:1个月1周前
职员
加入:2017-11-06 13:52
嗨,格特,

嗨,格特,

测试前请尝试关闭睡眠模式。

致以最诚挚的问候

Gert186.
离线
最后一次露面:1年4个月前
加入:2016-04-21 12:59
我应该在哪里关闭

我应该在哪里关闭睡眠模式?在user_replay函数中?

基文
离线
最后一次露面:1个月1周前
职员
加入:2017-11-06 13:52
在user_config.h.

在user_config.h.

将以下变量更改为ARCH\u SLEEP\u OFF。
/ ********************************************
*默认睡眠模式。可能的值是:
*
* - ARCH_SLEEP_OFF.
*-拱门打开
* - ARCH_EXT_SLEEP_OTP_COPY_ON.
*
******************************************
* /
静态const sleep\u state\u t app\u default\u sleep\u mode=ARCH\u sleep\u OFF.//拱门外的睡眠;

Gert186.
离线
最后一次露面:1年4个月前
加入:2016-04-21 12:59
没有变化!对不起的

没有变化!对不起的

Gert186.
离线
最后一次露面:1年4个月前
加入:2016-04-21 12:59
对我来说,还有一些

对我来说,还有一些问题:

我无法在ARCH_PRINTF()的循环中在循环中打印超过231行。

它将在231行之后停止。

我认为这是一个检查的时间问题还是广告的中断?有没有无码专家能帮我?

PM_DIALOG.
离线
最后一次露面:23小时28分钟前
职员
加入:2018-02-08 11:03
嗨gert186,

嗨gert186,

您的描述几乎没有通用,请为我提供更多信息。你的意思是什么?你的意思是人物吗?如果您使用的是任何睡眠模式配置,请您告诉我吗?

谢谢,PM_DIALOG.

Gert186.
离线
最后一次露面:1年4个月前
加入:2016-04-21 12:59
没有关闭睡眠模式

没有关闭睡眠模式。

我打印出一个角色的231次,但它应该是1000 :-)角色是“1”

PM_DIALOG.
离线
最后一次露面:23小时28分钟前
职员
加入:2018-02-08 11:03
嗨gert186,

嗨gert186,

您的描述仍然非常通用。有很多原因,你无法做到这一点。您能否分享您正在使用的代码片段?

谢谢,PM_DIALOG.