Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 即插即用系统如何知道设备已连接。投票?_C++11_Pic_Plug And Play - Fatal编程技术网

C++11 即插即用系统如何知道设备已连接。投票?

C++11 即插即用系统如何知道设备已连接。投票?,c++11,pic,plug-and-play,C++11,Pic,Plug And Play,简而言之,当一个即插即用设备连接到一台机器上时,系统是如何意识到它已经连接的 基本上是否存在一个不断寻找设备的无限循环?大概是这样的: std::vector<string> device_array; //ID's of all connected devices main(){ while(true){ SetDevices(); //Do whatever with the connected devices. } } void

简而言之,当一个即插即用设备连接到一台机器上时,系统是如何意识到它已经连接的

基本上是否存在一个不断寻找设备的无限循环?大概是这样的:

std::vector<string> device_array; //ID's of all connected devices
main(){
    while(true){
        SetDevices();
        //Do whatever with the connected devices.
    }
}

void SetDevices(){
    int n = RS232_PollComport(cport_nr, buf, 4095); //get all connected devices

    //Add or remove devices from device_array list 
}
std::矢量设备_阵列//所有连接设备的ID
main(){
while(true){
设置设备();
//对连接的设备执行任何操作。
}
}
void SetDevices(){
int n=RS232_PollComport(cport_nr,buf,4095);//获取所有连接的设备
//从设备阵列列表中添加或删除设备
}
我只是想把USB作为一个例子,我知道它不会对连接的设备使用IRQ,但轮询似乎也不太正确。所有其他P&P细节似乎都可用,但我找不到它如何知道设备已连接(或已断开)的逻辑

也许没关系,但是。。。 我的任务是创建一组即插即用传感器,这些传感器将连接到RaspberryPi,并使用标准RX/TX通信通过rs232连接与P&P设备的pic16进行通信。我正在接管的当前代码是使用持续轮询编写的,我希望在继续之前确保没有更好的方法


提前完成任务

“我知道它不使用IRQ”-真的吗?我知道这正是USB主机控制器的工作原理,如果端口连接/断开任何连接,则中断一次,然后扫描更改。我想我们中的一个人弄错了?从我读到的,有一个IRQ用于机器级别,但不是每个设备。在这个层面上,细节似乎有点稀疏。是的,这也是我的理解。来自USB控制器的一个中断,触发对新设备或丢失设备的扫描。我想这对你的问题没有帮助,至少不是我的想法,但可能是错的。USB控制器接受IRQ,但当USB设备添加到控制器时,它不接受IRQ,但不知何故控制器知道它在那里。对我来说,设备和控制器如何知道有连接是独立于IRQ的。