SerialPort. Отсутствие ответа от конкретного устройства - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Сложилась такая ситуация Есть термоизмеритель CENTER 306 на интерфейсе RS-232, подключен через USB-SERIAL, если это важно. Необходимо получать с него температуру. Для начала написал простенький код под WinForms.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
 
namespace WindowsFormsApp9
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            String[] a = SerialPort.GetPortNames();
            for (int i=0; i((a) => { label1.Text = a; }), strBuff);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
                serialPort1.Close();
            else
            {
                initPort(ref serialPort1, comboBox1.Text, 9600, Parity.None, 8, StopBits.One);
                serialPort1.Open();
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort1.Write(textBox1.Text);
            }
            catch
            {
                label1.Text = "SENDING ERROR";
            }
        }
    }
}
Проблема в том, что ответа от устройства нет как в программе, так и в сниффере (Serial Port Monitor). Но если ту же команду термоизмерителя отправить из сниффера или PuTTY, то все работает. Саму программу проверял ещё и на Arduino, там все в порядке. Замыкал контакты на RS-232, реакция в программе есть, да и термоизмеритель издает звуковые сигнал на некоторые команды. Настройки передачи выставлены правильно, ReceivedBytesThreshold выставлен единица. Вот скрины из сниффера для команды "K". Ответ от термоизмерителя "306\r" - модель устройства.
Результаты работы PuTTY Результаты работы моей программы
Кто может подсказать, в чем может быть проблема, и, как её решать? Заранее спасибо.

Решение задачи: «SerialPort. Отсутствие ответа от конкретного устройства»

textual
Листинг программы
write (new byte[]{0x4b}, 0, 1);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5