Прием данных по 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д