Есть кусок кода, как его сделать рабочим ? - C#
Формулировка задачи:
Новичок в шарпе, да и вообще в программировании. Сижу туплю, есть пример куска кода из инструкции. Нужно его нормально дооформить до рабочего состояния. Указать переменные и т.п. Некое устройство которому нужно послать команды через компорт и получить ответ. С настройкой компорта разобрался, а вот с типизацией и оформлением этого блока тупняк. Уже бьюсь пару часов и не могу сообразить. Может подскажете ?
Листинг программы
- out_data[0] = 0x01;
- out_data[1] = 0x81;
- SerialPort.Write(out_data, 0, 2);
- Thread.Sleep(50);
- SerialPort.Read(in_data, 0, 16);
- SensorType = ((in_data[0] & 0x0F) + ((in_data[1] & 0x0F) << 4));
- Release = ((in_data[2] & 0x0F) + ((in_data[3] & 0x0F) << 4));
- Serial = ((in_data[4] & 0x0F) + ((in_data[5] & 0x0F) << 4) + ((in_data[6] & 0x0F) << 8) + ((in_data[7] & 0x0F) << 12));
- Base_distance = ((in_data[8] & 0x0F) + ((in_data[9] & 0x0F) << 4) + ((in_data[10] & 0x0F) << 8) + ((in_data[11] & 0x0F) << 12));
- Measure_Range = ((in_data[12] & 0x0F) + ((in_data[13] & 0x0F) << 4) + ((in_data[14] & 0x0F) << 8) + ((in_data[15] & 0x0F) << 2));
Или вот дополню. Есть программа, мне нужно команды вида 0x01(исходящий пример выше) отсылать с помощью первого окна и вторым получать пока хоть какой-то ответ от устройства. Пока тишина, я понимаю что неправильная типизация - но, не могу понять как это исправить.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.IO.Ports;
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- GetAvailablePorts();
- }
- void GetAvailablePorts()
- {
- String[] ports = SerialPort.GetPortNames();
- comboBox1.Items.AddRange(ports);
- }
- private void button3_Click(object sender, EventArgs e)
- {
- try
- {
- if (comboBox1.Text == "" || comboBox2.Text == "")
- {
- textBox1.Text = "Please select port seting";
- }
- else
- {
- serialPort1.PortName=comboBox1.Text;
- serialPort1.BaudRate=Convert.ToInt32(comboBox2.Text);
- serialPort1.DataBits = 8;
- serialPort1.Parity = System.IO.Ports.Parity.None;
- serialPort1.StopBits = System.IO.Ports.StopBits.One;
- serialPort1.ReadTimeout = 1000;
- serialPort1.WriteTimeout = 1000;
- serialPort1.Open();
- progressBar1.Value=100;
- button1.Enabled=true;
- button2.Enabled=true;
- textBox1.Enabled=true;
- button3.Enabled=false;
- button4.Enabled=true;
- textBox1.Text = "";
- }
- }
- catch(UnauthorizedAccessException)
- {
- textBox2.Text="Unauthorised Acess";
- }
- }
- private void button4_Click(object sender, EventArgs e)
- {
- serialPort1.Close();
- progressBar1.Value = 0;
- button1.Enabled = false;
- button2.Enabled = false;
- button4.Enabled = false;
- button3.Enabled = true;
- textBox1.Enabled = false;
- }
- private void button1_Click(object sender, EventArgs e)
- {
- serialPort1.WriteLine(textBox1.Text);
- textBox1.Text = "";
- }
- private void button2_Click(object sender, EventArgs e)
- {
- try
- {
- textBox2.Text = serialPort1.ReadLine();
- }
- catch(TimeoutException)
- {
- textBox2.Text = "TimeoutException";
- }
- }
- }
- }
Решение задачи: «Есть кусок кода, как его сделать рабочим ?»
textual
Листинг программы
- List<byte> buffer = new List<byte>();
- string[] strs = textBox1.Text.Split(' ');
- for (int i = 0; i < strs.Count(); i++)
- buffer.Add(Convert.ToByte(strs[i], 16));
- serialPort1.Write(buffer.ToArray(), 0, buffer.Count);
- textBox1.Text = "";
- //-------------------------------------------------------
- List<byte> buffer = new List<byte>();
- try
- {
- for (int i = 0; i < serialPort1.BytesToRead; i++)
- buffer.Add(Convert.ToByte(serialPort1.ReadByte()));
- for (int i = 0; i < buffer.Count; i++)
- textBox2.Text += buffer[i].ToString("X2") + " ";
- }
- catch (TimeoutException)
- {textBox2.Text = "TimeoutException";}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д