Прием данных по com порту - C#

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

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

Подключил прибор по rs232. Провода 2, 4, и 5. Нужно принять данные с него. Вот код который я раздобыл:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Threading;
 
namespace console.p215
{
    class Program
    {
        static void Main(string[] args)
        { string[] names = SerialPort.GetPortNames();
            Console.WriteLine("Serial ports:");
            foreach (string name in names)
                Console.WriteLine(name);
            Console.Write("Choose one:");
            SerialPort p = new SerialPort("COM1", 
                                      1200, 
                                        Parity.None,
                                        8, StopBits.One
                                        );
            p.Handshake = Handshake.None;
            p.DtrEnable = true;
            p.RtsEnable = false;
            
            p.DataReceived += new SerialDataReceivedEventHandler(p_DataReceived);
            p.Open();

            string line;
            do
            {
                line = Console.ReadLine();
                p.Write(line);

            } while (line != "quit");
            p.Close();
        }
 
        static void p_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Thread.Sleep(500);
            string str=(sender as SerialPort).ReadExisting();
            char[] ch = str.ToCharArray();
            foreach (char ch2 in ch)
                Console.Write((int)(ch2)+" ");
            Console.WriteLine();
            Console.WriteLine(str);
           
        }

    }
}
Выходят такие данные: 0 1 2 3 4 63 63 0 0 0 64 Есть программа от прибора(заводская) она получила: -0.3mV Промониторил порт утилитой выводит это: 000 001 002 004 206 204 196 000 000 64(десятичные) Как считать цифры с прибора а не абра-кадабру?
данные с прибора считывает одни и те же:-03mV

Решение задачи: «Прием данных по com порту»

textual
Листинг программы
foreach(byte _byte in data)
            Console.Write(_byte.ToString("x")+" ");
            Console.WriteLine();

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


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

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

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