首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测USB设备的“过电流”事件?

如何检测USB设备的“过电流”事件?
EN

Stack Overflow用户
提问于 2011-09-20 20:59:26
回答 2查看 3.1K关注 0票数 0

我必须检测USB设备的“过电流”事件。

我正在Linux系统和C/C++语言中进行开发。

我该怎么做?

EN

回答 2

Stack Overflow用户

发布于 2011-09-20 23:23:20

您可以使用uevents。这是一些tutorial。为了观看uevents,你必须绑定特定的NETLINK_KOBJECT_UEVENT

代码语言:javascript
复制
int create_socket()
{
    int                sock   = -1;
    int                result = 0;
    struct sockaddr_nl snl;

    memset(&snl, 0x00, sizeof(struct sockaddr_nl));
    snl.nl_family = AF_NETLINK;
    snl.nl_pid    = getpid();
    snl.nl_groups = -1;

    sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
    if (sock != -1)
    {
        result = bind(sock, (struct sockaddr *) &snl, sizeof(struct sockaddr_nl));
        if (result < 0)
        {
            dbg("bind failed, exit\n");
            close(sock);
            sock = -1;
        }
    }
    else
        dbg("error getting socket, exit\n");
    return sock;
}

int main() {
...    
    sock = create_socket();
    while(sock != -1)
    {
        buflen = recv(sock, &buffer, sizeof(buffer), 0);
        // parse buffer for event description
        ...
    }
}

可以肯定的是,其中一个事件将指示过电流状态。

票数 1
EN

Stack Overflow用户

发布于 2011-09-20 21:46:13

查看特定根端口/主机控制器的源代码可能会对您有所帮助。

例如:http://www.spinics.net/lists/linux-usb/msg49451.html使用特定的主机控制器驱动程序解释过电流检测。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7485544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档