请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TRF7970A 工具/软件:Linux
你(们)好。
我目前正在使用 Neard 在 C++应用程序中与 TRF7970a 连接。 我使用低级 dbus API 与 NFC 总线通信。 到目前为止、我可以执行我需要的所有操作(开始/停止轮询、从标签读取/写入)、但关闭适配器电源除外(我可以读取适配器电源状态良好并可以打开电源、我只是无法关闭)。
适配器 NFC API 具有适配器供电属性、因此我使用 org.freedesktop.DBus 接口的 Set 方法来设置通过 NFC 总线的通电/断电。
用于执行此操作的代码如下所示:
int setBoolProperty (DBusConnection *连接、const char*属性、const int 值、DBusError *错误)
{
DBusMessage *queryMessage =空;
DBusMessage *replyMessage =空;
DBusMessageIter ITER;
DBusMessageIter 子项;
如果(值!= 0 &&值!= 1)
{
printf ("不是有效的布尔类型。\n");
返回-1;
}
queryMessage = dbus_message_new_method_call ("org.neard"、
"/org/neard/nfc0 "、
" org.freedesktop.DBus.Properties"、
"设置");
//将参数附加到 set()方法。 (字符串接口、字符串属性、值)
dbbus_message_iter_init_append (queryMessage、&iter);
dbas_message_iter_append_basic (&iter、DBUS_TYPE_string、&adapterName);
dbas_message_iter_append_basic (&iter、DBUS_TYPE_string、&property);
dbus_message_iter_open_container (&itER、DBUS_TYPE_变体、DBUS_TYPEOLED_AS_string、⊂);
//设置 bool 值。
dbus_message_iter_append_basic (⊂、DBUS_type_Boolean、&value);
dbus_message_iter_close_container (&iter、⊂);
replyMessage = dbus_connection_send_wo_reply_and_block (连接、
查询消息、
1000、
错误);
dbbus_message_unef (queryMessage);
ABORT_ON_ERROR (错误);
dbbus_message_nREF (replyMessage);
返回0;
}
每当我尝试关闭电源时、我首先停止轮询(在 org.neard.Adapter 接口上使用 StopPollLoop 方法)。 然后、我将 Powered 属性设置为0。 收到消息后、我从 dbus 收到"Unknown error -16 (未知错误-16)"、电源状态不变。 我希望我缺少一些简单的东西、并希望有人能够对可能导致此问题的原因有一定的了解。
本