Прием данных по com порту - C#
Формулировка задачи:
Подключил прибор по rs232. Провода 2, 4, и 5. Нужно принять данные с него. Вот код который я раздобыл:
Выходят такие данные: 0 1 2 3 4 63 63 0 0
0 64
Есть программа от прибора(заводская) она получила: -0.3mV
Промониторил порт утилитой выводит это: 000 001 002 004 206 204 196 000 000 64(десятичные)
Как считать цифры с прибора а не абра-кадабру?
Листинг программы
- 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);
- }
- }
- }
данные с прибора считывает одни и те же:-03mV
Решение задачи: «Прием данных по com порту»
textual
Листинг программы
- foreach(byte _byte in data)
- Console.Write(_byte.ToString("x")+" ");
- Console.WriteLine();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д