Я написал сценарий в Zaber Console для управления моими этапами, но теперь я хочу взять некоторые показания датчиков во время движения. Я хочу переместить этапы, взять показания, а затем снова переместить этапы. Иногда показания датчика влияют на движения, которые мне нужно сделать. Как согласовать движение с показаниями датчика?
Я хочу разговаривать со своими устройствами Zaber через один последовательный порт, а мой датчик - через второй последовательный порт.
1 ответ
Когда вы пишете сценарий Zaber Console, у вас есть доступ ко всему в среде 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()
метод.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.