多进程监控多个设备,同一类型的,控制指令都是一样的。
当发现它们在位时,如何同时发送指令?

解决方案 »

  1.   

    比如说,CreateProcess产生2个进程后,打开不同设备ID,对设备发送指令。
    而,CreateProcess在进程列表中不能有两个;哎,描述得不够准确...设备的在位是通过函数扫描IO获得的,如何同时发送指令,让设备同时做某一个动作?
      

  2.   

    同时不可能,肯定是有先有后,你可以使用事件Event或互斥对象在进程间同步。
      

  3.   

    不是很清楚LZ要做什么同时发送是很难做的,进程是由windows调度的
      

  4.   

    没法绝对同时,因为电脑同一时间不可能控制两个设备,如果要绝对同时需要由硬件控制。
    如果要所有进程同步执行可以利用命名事件,在主进程中创建一个命名事件,其它进程打开并等待事件。参考CreateEventEx。
      

  5.   

    绝对的同步固然是没有的,根据Cpu的选择嘛,当然了,每个进程每个ID,当你希望同时的时候,不妨在每个ID下创建一个判断语句,看是否一个执行别的也跟着,我的想法是这样的.
      

  6.   

    发现设备的代码如下:
        do
        {
            // Check if device exists
            rc = PciDeviceFind(
                    &DevKey,
                    (U8)i
                    );        if (rc == ApiSuccess)
            {
                if ((DevKey.DeviceId == 0xBEEF) && (DevKey.VendorId == 0xFACE))
    {
    NumDevices ++;
    }
            } i ++;
        }
        while ((rc == ApiSuccess) && (i < MAX_DEVICES_TO_LIST));    //如果不至1个设备,则需要创建多个进程
        if (NumDevices > 1)
        {
         //create serval processes here
        }CreateProcess可以调用自己的实例么?使用应注意些什么?
    也就是说,CreateProcess(NULL, "C:\\Program Files\\MyApp", ...) 在MyApp内,却调用MyApp实例。