0

我在Zaber 控制台中编写了一个脚本来控制我的阶段,但现在我想在移动过程中获取一些传感器读数。我想移动阶段,阅读,然后再次移动阶段。有时传感器读数会影响我需要做的动作。如何协调运动与传感器读数?

我想在一个串口上与我的 Zaber 设备通信,而在第二个串口上与我的传感器通信。

4

1 回答 1

0

当您编写 Zaber 控制台脚本时,您可以访问 Microsoft.NET 框架中的所有内容,因此您可以自己打开第二个串行端口。这是一个尝试在压力传感器上保持恒定压力的简单示例。每次通过回路时,它都会读取压力传感器,然后缩回设备以增加压力或伸出设备以降低压力。

// C# example that shows how to communicate with a second serial port
#template(simple)

const string LOAD_PORT = "COM9";
const int MAX_SPEED = 20000;
const int TARGET_PRESSURE = 1000; // in thousandths of a pound

// set up load cell on serial port
using (var port = new System.IO.Ports.SerialPort())
{
    port.PortName = "COM9";
    port.BaudRate = 9600;
    port.ReadTimeout = 500;
    port.WriteTimeout = 500;

    port.Open();

    port.WriteLine("ct0\r");
    port.ReadLine();

    while ( ! IsCanceled)
    {
        port.WriteLine("o0w1\r");
        var pressure = Int32.Parse(port.ReadLine());
        int velocity = (pressure - TARGET_PRESSURE) * 20;
        int speed = Math.Min(Math.Abs(velocity), MAX_SPEED);
        velocity = speed * Math.Sign(velocity);
        Conversation.Device.Send(Command.MoveAtConstantSpeed, velocity);
    }
}

using块确保即使发生错误也关闭串行端口。我使用的压力传感器理解ct0为去皮命令和o0w1返回当前压力的命令,您需要查看传感器的手册以了解它理解哪些命令。您还需要查看要使用的波特率和其他设置。该SerialPort文档列出了您可以设置的所有通信参数。

如果要记录传感器读数中的数据,一种选择是仅使用Output.WriteLine(data)在输出窗口中转储数据值。然后,您可以将它们复制并粘贴到电子表格或其他文件中。如果要直接写入文件,看File.CreateText()方法

于 2012-10-10T18:45:41.593 回答