Как отправить данные на Com port? - C#

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

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

День добрый. Нужна ваша помощь. Пытаюсь отправить данные на ком порт и вывести ответ. Отправка получается, байты увеличиваются, а вот с выводом все плохо. Отправляю и на rs232 и на виртуальный порт. Первым способом - время ожидания истекает при попытке вывода, а во втором текст бокс просто обновляется. Там где закомментировано 1ая и 2ая кнопки - это первый способ. Чуть ниже пытался по второму способу.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace Скад
{
    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
        }
 
        SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);

        private void Form1_Load(object sender, EventArgs e)
        {
            string[] ports;
            ports = SerialPort.GetPortNames();
            comboBox1.Items.AddRange(ports);
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (port.IsOpen == false)
            {
                port.PortName = comboBox1.Text.ToString();
                port.Open();
                label1.Text = port.PortName + " Порт подключен";
                port.BaudRate = 9600;
                port.WriteTimeout = 500;
                port.ReadTimeout = 500;
            }
   
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
           //1ый
 
            //byte[] quest = {10, 04, 00, 52, 00, 01, 93, 0x5a};
            //port.Write(quest, 0, quest.Length);
 
            //2ой
 
            string q = "12345";
            port.Write(q);
            
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            //1ый
 
            //byte[] answer = new byte[8];
            //port.Read(answer, 0, answer.Length);
            //textBox2.Text = Convert.ToString(answer);
 
            //2ой
 
            string s = port.ReadExisting();
            textBox2.Text = s;
 
        }

        }
        }
    }
А если замкнуть, что бы приходило то, что отправилось то все прекрасно работает
Неужели никто не знает в чем проблема? Кстати отправляет он почему то одни нули

Решение задачи: «Как отправить данные на Com port?»

textual
Листинг программы
byte[] message;
...
 
string answer="";
foreach (byte b in message)
answer+=b.ToString("X2").ToUpper()+" ";
 
textBox1.Text = answer.

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


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

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

13   голосов , оценка 4 из 5
Похожие ответы