Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 1

Есть кусок кода, как его сделать рабочим ?

17.10.2016, 09:09. Показов 807. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Новичок в шарпе, да и вообще в программировании. Сижу туплю, есть пример куска кода из инструкции. Нужно его нормально дооформить до рабочего состояния. Указать переменные и т.п. Некое устройство которому нужно послать команды через компорт и получить ответ. С настройкой компорта разобрался, а вот с типизацией и оформлением этого блока тупняк. Уже бьюсь пару часов и не могу сообразить. Может подскажете ?


C#
1
2
3
4
5
6
7
8
9
10
11
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));
Добавлено через 17 минут
Или вот дополню. Есть программа, мне нужно команды вида 0x01(исходящий пример выше) отсылать с помощью первого окна и вторым получать пока хоть какой-то ответ от устройства. Пока тишина, я понимаю что неправильная типизация - но, не могу понять как это исправить.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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";
            }
        }
        }
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.10.2016, 09:09
Ответы с готовыми решениями:

Есть кусок кода, объясните что он делает
private double GetRisk(Dictionary&lt;string, double&gt; dF, double Prob) { if (Prob &lt; -4.0) Prob = -4.0; if (Prob...

Как зациклить кусок кода?
как его зациклить чтобы он выполнялся постоянно private void button1_Click(object sender, EventArgs e) { ...

Как вырезать из DLL кусок кода
DLL написана на Visual C++ | native C++. Открыл dll рефлектором: internal static unsafe bool modopt(CallConvCdecl) VerifyMW2()...

1
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
17.10.2016, 12:07
да хоть так.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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";}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2016, 12:07
Помогаю со студенческими работами здесь

Как понять кусок кода и как лучше пользоваться документацией ?
Здравствуйте! Помогите понять кусок кода, пожалуйста с привязкой к msdn (как ей правильно пользоваться) String lines =...

Как оптимизировать этот кусок кода ? (чтение из файла)
Добрый вечер, уважаемые форумчане ! Имеются 50 тыс. файлов, общим размером ~ 30ГБ. Имеется кусок кода, который считывает каждый файл...

Есть уже готовое приложение. Как его сделать сервисом?
У меня есть готовое C# console приложение, которое по тайминтервалу беред данные из одного источника, обрабатывает и переладывает результат...

Как можно сделать данный кусок кода меньше и проще?
Задние: Заменить все элементы с четными номерами на значение второго положительного элемента массива. void change() //замена элементов...

Как сделать на js что бы в зависимости от переменной выводился определенный кусок кода
Добрый день, например мы имеем 3 значения из которых выбирается одно , которое потом получаем ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru