enigama 2015-03-14 08:44 采纳率: 0%
浏览 1748

c# 使用线程采集数据只能采集一部分

我想用一个电机带动平台转动,然后平台上有个传感器采集数据,所以建立了2个线程,
一个负责电机的驱动以及传感器的开关,另一个就是专门采集数据的。
可是每次采集到的数据在20000多的时候就采集不了了。
下面附上代码,我确实没想到原因,开始以为是延时的问题,后来在第二个线程开始加了1ms的延时,还是不行。
//定义旋转所需时间
public static double PTime;
//定义旋转所需脉冲、采样到的点数
public int ringpulse, PPoints;

private void motor1()
{
//正向旋转一圈
Motion.mAcm_AxMoveRel(axhand[Axis], Convert.ToDouble(ringpulse));
//传感器开始测量
Cur115.StartMesure();

//休眠等待一圈扫描完成
Thread.Sleep(Convert.ToInt32(PTime * 1000));

//停止测量
Cur115.StopMesure();
//反转回零点
Motion.mAcm_AxMoveRel(axhand[Axis], Convert.ToDouble(ringpulse*(-1)));

    }
    private void sensor1()
    {
        //等待motor1执行一段时间
        Thread.Sleep(1); 
        //读取数据
        for (int i = 0; i < PPoints; i++)
        {
            //调用函数读取数据,方式为“取出并移除”
            PDistance[i] = Cur115.GetData();
            //输出
            Console.WriteLine("distance{0}={1}", i, PDistance[i]);
        }
    }

private void test_Click(object sender, EventArgs e)
{
Cur115.ClearDataQueue();
Thread ThMotor1 = new Thread(new ThreadStart( motor1));
ThMotor1.IsBackground = true;
Thread thsensor = new Thread(new ThreadStart(sensor1));
thsensor.IsBackground = true;
//这个只是计算PPoints和ringpulse的函数,没其他作用。
CalforPM();
ThMotor1.Start();

        thsensor.Start();
        StepComplete_Bit = true;
    }
  • 写回答

1条回答 默认 最新

  • enigama 2015-03-14 08:46
    关注

    额,第一次发帖,不知道为什么代码不能明显的标示出来。

    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?