无码用户重播()问题

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
12个职位/ 0个新职位
最后发表
gert186
离线
最后看到:1年7个月前
加入:2016-04-21 59
无码用户重播()问题

你好,

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

否则if(user_compare_cmd(“1wire”,1,2)))

tm_onewire_t ow;
Uint8_t port = ahtoi((char*)argument_array[0]);
Uint8_t port_number = port / 10;
UINT8_T PIN_NUMBER =端口%10;
UINT8_T DS_ROM [8];
字符消息[8];
临时浮动;

TM_OneWire_Init(噢,(GPIO_PORT) port_number进行(GPIO_PIN) pin_number);
TM_OneWire_Reset(噢);

if(tm_onewire_first(&ow)){
/ / Conversasion
TM_DS18B20_StartAll(噢);
systick_wait (750000);/ /等待750 ms

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

TM_OneWire_GetFullROM(噢,DS_ROM);
TM_DS18B20_Read(噢,DS_ROM、临时);
sprintf(消息,“% x % x % %, % 0.2 f, 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 + PRINT =%S \ R”,消息);
user_reply(消息,true);
}, (TM_OneWire_Next(噢));

工作很好,但它我想发送的值在消息peer与user_replay(消息,真)
void user_reply(char * reply_string,bool成功)

如果(! codeless_env.suppress_response)

如果(成功)

//添加'OK'到response
如果(strlen (reply_string) > 0)
sprintf (reply_string“% s \ r \ nOK reply_string);
其他的
reply_string =“OK”;

其他的

//报告“错误”
sprintf (reply_string,“错误”);

//如果命令源自那里,则回复BT对等体(仅当已连接)
if((codeless_env.command_route == CMD_FROM_PEER_RESP_PEER) && (ke_state_get(TASK_APP)==APP_CONNECTED))

send_to_peer (reply_string);

否则if(dodeless_env.command_route == cmd_from_local_resp_local)

//通过串口进行本地回复
arch_puts (" \ r \ n ");
ARCH_PUTS(REPHANT_STRING);
arch_puts (" \ r \ n ");
ARCH_PRINTF_PROCESS();

//codeless_env.command_route = cmd_route_undefined;

我只有最后一个字符串。如果我安装了10个传感器,最后一个传感器.....

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

有人能帮我理解一下这个问题吗?

致以最亲切的问候
盖特

设备:
MHv_Dialog
离线
最后看到:1个月6天前
工作人员
加入:2013-12-06 15:10
嗨盖特,

嗨盖特,

请描述一下你想要完成的工作。你的代码列表本身就留下了太多的未知数:o)

具体而言,我需要了解您是否实际上尝试在本地发布命令并希望回复返回到空中的对等体。此外,我需要您尝试交换多少数据。回复字符串限制为160个字符。

/ MHv

gert186
离线
最后看到:1年7个月前
加入:2016-04-21 59
好的,

好的,

我想从主人发送到奴隶:

ATr+1wire=00从附加的传感器从从(在本例中是10)开始读取,并通过空气将ID和值发送回主!
Master应该通过uart2将该值打印到终端。

命令发送和执行就像一个符咒。
但问题是,它通过空气发送一些东西到主机,但主机只打印了第一个
Codeless_env.command_route = cmd_route_unded 1时间
如果有的话,是上一个的十倍
//codeless_env.command_route = CMD_ROUTE_UNDEFINED in void user_reply(char* reply_string, bool success)。

我不明白他为什么只打印uart2上的最后一张。

致以最亲切的问候
盖特

MHv_Dialog
离线
最后看到:1个月6天前
工作人员
加入:2013-12-06 15:10
嗨盖特,

嗨盖特,

因为重复使用user_reply(),所以破坏了命令流。当接收到远程AT命令时,codelless将codeless_env.command_route设置为CMD_FROM_PEER_RESP_PEER,以确保回复返回到命令发送者。一旦回复为传输做好了准备,command_route就被设置为CMD_ROUTE_UNDEFINED,以允许接收下一个命令(通过蓝牙或UART)。

在do-while循环中,不使用user_reply(),只需将您的整个响应记录回给对等对象。然后在循环外部,使用user_reply()将整个字符串作为一个应答进行传输。这允许无代码命令流保持不变。但是记住,回复只能有160个字符长。

/ MHv

Kevinl.
离线
最后看到:4个月2个星期前
工作人员
加入:2017-11-06 13:52
嗨盖特,

嗨盖特,

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

此致

gert186
离线
最后看到:1年7个月前
加入:2016-04-21 59
我应该在哪里关门

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

Kevinl.
离线
最后看到:4个月2个星期前
工作人员
加入:2017-11-06 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年7个月前
加入:2016-04-21 59
没变!对不起

没变!对不起

gert186
离线
最后看到:1年7个月前
加入:2016-04-21 59
对我来说也有一些

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

在arch_printf()的1000行循环中,我不能打印超过231行。

它将在231线之后停止。

我认为这是一段时间问题检查或从广告中断?是否有一些专家与无附件可以帮助我?

PM_Dialog
离线
最后看到:3小时32分钟前
工作人员
加入:2018-02-08 11:03
嗨gert186,

嗨gert186,

你的描述有点笼统,请提供更多的信息给我。你说的“台词”是什么意思?你是指角色吗?你能告诉我你是否正在使用任何睡眠模式配置吗?

谢谢,PM_Dialog

gert186
离线
最后看到:1年7个月前
加入:2016-04-21 59
没有关闭睡眠模式

没有关闭睡眠模式。

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

PM_Dialog
离线
最后看到:3小时32分钟前
工作人员
加入:2018-02-08 11:03
嗨gert186,

嗨gert186,

你的描述仍然很笼统。你做不到的原因有很多。您能分享一下您正在使用的代码片段吗?

谢谢,PM_Dialog