Отправить команду через последовательный порт на электропневматический регулятор в C # - PullRequest
2 голосов
/ 18 апреля 2019

У меня есть программируемый электропневматический регулятор, и мне нужно общаться с ним через последовательный порт, я никогда не делал ничего подобного.В руководстве по эксплуатации приведены некоторые инструкции для связи с ним.Это следующее:

Specification
==============
Comm. type
  Master/slave type
Synchronous type
  Asynchronous type
Comm. speed
  9,600[bps]
Start bit
  1[bit]
Data length
  8[bit]
Stop bit
  1[bit]
Parity bit
  N/A
Flow control
  N/A
Command end code
  CR・LF
Character-code
  ASCII

Я успешно подключил его к компьютеру, но когда я пытаюсь управлять им и отправить команду, светодиод связи горит, но он не устанавливает давление.Я думаю, что проблема будет с кодом конца команды или кодом символа.Пример команды: send "SET 614" (рабочий диапазон 0-1023).Я использую рекомендованные спецификации (скорость связи, стартовый бит и т. Д.) В переменных (просто для того, чтобы быть многофункциональным).Программа закрывает порт при закрытии формы пользовательского интерфейса.

  private void ComunicateComport() 
        {
            comtimer.Stop();
            Global.Refreshtime = Global.Refreshrate;
            comtimer.Start();
            SerialPort ComPort = new SerialPort(Global.COMPort,Global.Baudrate,Parity.None,Global.Databits,StopBits.One); 
            if (ComPort.IsOpen == false)
            {
                ComPort.Open();
            }
            Global.Error = 0;
            ComPort.DiscardOutBuffer();
            ComPort.WriteLine("SET 100"); 

        }

1 Ответ

1 голос
/ 18 апреля 2019

Не используйте WriteLine, замените его на ComPort.Write (String), а затем отправьте явно в качестве конца вашей командной строки с байтовым массивом, используя ComPort.Write ({0x0D, 0x0A}, 0, 2).

...