无代码用户重放()问题

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

你好,

我写了一个新的AT命令和的1-Wire:

else if (user_compare_cmd(“1线”,1,2))
{
TM_OneWire_t噢;
uint8_t端口= ahtoi((字符*)argument_array [0]);
uint8_t端口号=端口/ 10;
Uint8_t pin_number =端口% 10;
uint8_t DS_ROM [8];
炭消息; [8]
浮动温度;

TM_OneWire_Init(OW,(GPIO_PORT)端口号,(GPIO_PIN)pin_number);
TM_OneWire_Reset(OW);

如果(TM_OneWire_First(噢)){
// Conversasion
TM_DS18B20_StartAll(OW);
systick_wait(750000);//等待为750ms

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

TM_OneWire_GetFullROM(OW,DS_ROM);
TM_DS18B20_Read(OW,DS_ROM,&温度);
的sprintf(消息, “%X%x%的X%的x,%0.2F”,DS_ROM [4],DS_ROM [5],DS_ROM [6],DS_ROM [7],温度);// DS_ROM [0],DS_ROM [1],DS_ROM [2],DS_ROM [3],
/ / arch_printf (ATr +打印= % s \ r”,消息);
user_reply(消息,真的);
}, (TM_OneWire_Next(噢));
}
}

工作正常,但我想在消息user_replay值发送给同行(消息,真)
Void user_reply(char* reply_string, bool success)
{
如果(!codeless_env.suppress_response)
{
如果(成功)
{
//追加“确定”回应
如果(strlen的(reply_string)> 0)
的sprintf(reply_string, “%S \ r \ NOK”,reply_string);
别的
reply_string = “OK”;
}
别的
{
/ /报告的错误
的sprintf(reply_string, “ERROR”);
}

//如果命令来自那里,回复BT Peer(仅在连接的情况下)
如果((codeless_env.command_route == CMD_FROM_PEER_RESP_PEER)&&(ke_state_get(TASK_APP)== APP_CONNECTED))
{
send_to_peer(reply_string);
}
else if(codeless_env.command_route == CMD_FROM_LOCAL_RESP_LOCAL)
{
//通过串口本地回复
arch_puts( “\ r \ n”);
arch_puts (reply_string);
arch_puts( “\ r \ n”);
arch_printf_process ();
}
/ / codeless_env.command_route = CMD_ROUTE_UNDEFINED;
}
}

我只得到了最后一个字符串。如果我安装了10个传感器,是上一个的10倍.....

如果我取消注释//codeless_env.command_route = CMD_ROUTE_UNDEFINED;
然后,我只得到了第一个..

有人可以帮助我,请理解这个问题?

此致
哥特

设备:
MHv_Dialog
离线
最后一次露面:1个月3天前
职员
加入:15 2013-12-06
嗨,哥特,

嗨,哥特,

请尽量描述您要完成的任务。您的代码单独上市叶子太多的未知数:O)

具体地说,我需要了解您是否实际试图在本地发出命令,并希望回复返回到空中的对等端。另外,我需要你交换多少数据。应答字符串被限制为160个字符。

/ MHV

gert186
离线
最后一次露面:1年8个月前
加入:2016年4月21日12:59
好吧,

好吧,

我想从主发送到从站:

ATr中+的1-Wire = 00开始从连接的传感器上的从一个读(在这种情况下10)和发送ID和值通过空中回主!
船长应打印在UART2到终端,价值观。

发送命令并执行就像一个魅力的作品。
但问题是,它发送的东西在空中的主,但主只打印先用
codeless_env.command_route = CMD_ROUTE_UNDEFINED
和10倍,最后,如果你有
//codeless_env.command_route = CMD_ROUTE_UNDEFINED空隙user_reply(字符* reply_string,布尔成功)。

我不明白为什么他只printig出来UART2最后一个。

此致
哥特

MHv_Dialog
离线
最后一次露面:1个月3天前
职员
加入:15 2013-12-06
嗨,哥特,

嗨,哥特,

您正在打破命令的流动,因为多次使用user_reply()。当接收到远程AT命令,无代码设置codeless_env.command_route到CMD_FROM_PEER_RESP_PEER这确保了回复返回到命令发起者。一旦应答具有本用于传输准备的command_route设为CMD_ROUTE_UNDEFINED以允许要被接收的下一个命令(经由蓝牙或UART)。

在您do-while循环,而不是使用user_reply(),简单地记录整个响应返回给同行。然后在循环外,使用user_reply()到整个串发射作为一个答复。这允许无代码commandflow保持不变。但要记住,回答只能是160个字符。

/ MHV

KevinL
离线
最后一次露面:4个月1周前
职员
加入:2017年11月6日13:52
嗨,哥特,

嗨,哥特,

请尝试在测试前关闭休眠模式。

致以最亲切的问候

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

我应该在哪里关闭休眠模式?在user_replay功能?

KevinL
离线
最后一次露面:4个月1周前
职员
加入:2017年11月6日13:52
在user_config.h

在user_config.h

将以下变量更改为ARCH_SLEEP_OFF。
/ ******************************************
*默认休眠模式。可能的值有:
*
* - ARCH_SLEEP_OFF
*——ARCH_EXT_SLEEP_ON
* - ARCH_EXT_SLEEP_OTP_COPY_ON
*
******************************************
* /
static const sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF.;/ / ARCH_EXT_SLEEP_ON;

gert186
离线
最后一次露面:1年8个月前
加入:2016年4月21日12:59
没有变化!对不起

没有变化!对不起

gert186
离线
最后一次露面:1年8个月前
加入:2016年4月21日12:59
对我来说,也有一些

对我来说,也存在着一些问题:

在1000循环在arch_printf我不能打印超过231线()。

231线后,它才停止。

我认为这是一个检查的时间问题,还是广告的干扰?有无代码专家能帮我吗?

PM_DIALOG.
离线
最后一次露面:21小时47分钟前
职员
加入:2018年2月8日11:03
嗨gert186,

嗨gert186,

您的描述有点通用的,请提供我关于它的详细信息。你是什​​么意思与“行”?你的意思是字符?你可以请让我知道,如果你使用任何休眠模式的配置?

谢谢,PM_Dialog

gert186
离线
最后一次露面:1年8个月前
加入:2016年4月21日12:59
没有睡眠模式被关闭

没有睡眠模式被关闭。

我打印出231倍的字符,但它应该是1000 :-)字符为“1”

PM_DIALOG.
离线
最后一次露面:21小时47分钟前
职员
加入:2018年2月8日11:03
嗨gert186,

嗨gert186,

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

谢谢,PM_Dialog