Прием данных по 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();