用电脑模拟脉冲信号输出,用什么函数好 ,最好是不受机器快慢限制,比较精确就可以了

解决方案 »

  1.   

    12345
    23456
    34567
    56789
    一共5个点,前4个点是上次采样过程中,后一个点的值,最后一个点是新采进来的点。
    如果这些点转换为坐标上的点,然后用曲线连起来。就是一个模拟图了当然还要看你的脉冲信号周期是多少,一般用settimer函数的话,精确55ms。再小的话就要用其他的定时器了。还有线程优先级别打高。
      

  2.   

    http://www.gjwtech.com/scomm/sc2vc6serialprogexamle.htm
      

  3.   

    settimer可以吗
    主要是不要受机器的限制
      

  4.   

    settimer就是以时间为标准的
    难道你认为差机器的时间走得就比好机器的慢吗?
    呵呵不过机器不能太差哦……连个win98都跑的很吃力,我看还是算了。
      

  5.   

    我用了timegettime()
    感觉还是有点慢
    谁能够提纲更快的频率输出函数
      

  6.   

    再顶一下
    现在更困难了
    还需要变频
    我直接使用自写函数setportvalue()到并口数据端,从0(00000000)到255(11111111)表示每个口脉冲一次,现在还需要变频控制,也就是说每个数据口输出脉冲的间隔时间还不一样,有谁有好的 解决方法啊,实在是没分了,大家帮帮我
      

  7.   

    是这样的
    想通过并口控制 控制步进电机
    用8位数据端模拟脉冲信号输出,实现pwm调速,每一个1表示步进电机运转一次    
    要求电机同时运行
      

  8.   

    用多媒体时钟(自己到WINAPI手册里去查)应该比较精确,且不受机器的影响。
    SetTimer很不准的
      

  9.   

    原来是这样啊
    我觉得这主要是计时器的问题如果你的脉冲周期大于55ms,那么用settimer基本上没什么问题的,但是同时要求进程优先级要高,而且尽量不要运行其他程序。如果这个要求实现不了,就用多媒体计时器
      

  10.   

    在要求误差不大于1毫秒的情况下,可以采用GetTickCount()函数。使用下面的编程语句,可以实现50毫秒的精确定时,其误差小于1毫秒:
    DWORD  dwStart, dwStop ;  // 起始值和中止值
    dwStop = GetTickCount();
    while(TRUE)
    {
      dwStart = dwStop ;  // 上一次的中止值变成新的起始值
        // …… 此处添加相应控制语句 ……
        do
        {
    dwStop = GetTickCount() ;
        } while(dwStop - 50 < dwStart) ;
    }
      

  11.   

    我用它做占空比自动变化的方波,定时还基本精确,能到1 ms,精度不高应该够用了。对机器的要求也不高,应为我在733MHz下和在P4下用示波器检测波形都差不多。