Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269

Запрос в byte[], получить ответ в string

21.03.2019, 10:59. Показов 698. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проверяю библиотеку, мне нужно отправить массив байт и вызвать FirmwareVersion , чтобы убедиться что версия получена, FirmwareVersion это от базового класса, но он стринговый, а послать я толжен массив байт, запрос "0D 24 2B 24 21 0D" возвращает версию

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private byte[] _firmwareVersion;
        
        public byte this[byte index]
        {
            get
            {
                return _firmwareVersion[index];
            }
            private set
            {
                _firmwareVersion[0] = 0x0D;
                _firmwareVersion[1] = 0x24;
                _firmwareVersion[2] = 0x2B;
                _firmwareVersion[3] = 0x24;
                _firmwareVersion[4] = 0x21;
                _firmwareVersion[5] = 0x0D;
 
                _firmwareVersion[index] = value;
            }
        }
C#
1
 public override string FirmwareVersion { get { return _firmwareVersion.ToString(); } }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.03.2019, 10:59
Ответы с готовыми решениями:

Как получить массив byte[] из string?
Я получаю так: byte encodeBytes = Encoding.ASCII.GetBytes(encodeData); // string encodeData; Но насколько это правильно?...

Post запрос получить ответ
Здравствуйте! Имеется POST-запрос, в браузере я получаю ответный Content-Lenght=36, в ответе Json success=true. в программе же я...

Отправить POST запрос и получить ответ
нужно послать запрос и получить результаты поиска со словом "Hello" static void Main(string args) { ...

11
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
21.03.2019, 11:21
ShmelVG, для таких преобразований есть метод Encoding.GetString
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
21.03.2019, 11:53  [ТС]
Usaga, спасибо, но всё равно не удается применить..
0
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
21.03.2019, 12:08
ShmelVG, а можно посмотреть на вашу попытку применить данный метод?
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
21.03.2019, 12:17  [ТС]
Usaga,
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
private string _serialNumber = String.Empty;
 
 
        static string original = "0D, 24, 2B, 24, 21, 0D";
        static System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
 
        private  static byte[] _firmwareVersion = ascii.GetBytes(original);
        public byte this[byte index]
        {
            get
            {
                return _firmwareVersion[index];
            }
            private set
            {
                _firmwareVersion[0] = 0x0D;
                _firmwareVersion[1] = 0x24;
                _firmwareVersion[2] = 0x2B;
                _firmwareVersion[3] = 0x24;
                _firmwareVersion[4] = 0x21;
                _firmwareVersion[5] = 0x0D;
            }
        }
        string decoded = ascii.GetString(_firmwareVersion);
 
 public override string FirmwareVersion { get { return decoded; } }
В программ не подписывается на событие

C#
1
2
3
4
5
6
7
8
9
10
static void Main(string[] args)
        {
           BarcodeScanner sc = new ScannerBC();
            sc.PortName = "COM8";
            sc.Scan += Sc_Scan;
            sc.Error += Sc_Error;
            sc.Open();
            sc.FirmwareVersion;
            Console.Read();
        }
Ругается на sc.FirmwareVersion пишет доступ только для чтения, но set нельзя добавить, он базовый и менять его нельзя

Добавлено через 5 минут
Usaga, он выводит массив байт который я задал, а должен был вернуть только версию
0
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
21.03.2019, 12:17
ShmelVG, откуда какое-то событие взялось? Вы на строку подписаться пытаетесь?

Вот так пробуйте.

C#
1
 public override string FirmwareVersion => ascii.GetString(_firmwareVersion);
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
21.03.2019, 12:21  [ТС]
Usaga, поправил) Но до этого и так работало ,
C#
1
2
var arr = sc.FirmwareVersion;
            Console.WriteLine(arr);
выводит только массив, но при сканировании сканером штрих-кода он должен вернуть версию
0
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
21.03.2019, 12:33
ShmelVG, вы определитесь в какой кодировке приходит текст и текст ли это вообще. В случае ASCII, массив декодируется в такую строку: $+$!

Кликните здесь для просмотра всего текста

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
using System;
 
namespace Experiments
{
    class Program
    {
        static void Main(string[] args)
        {
            var _firmwareVersion= new byte[6];
 
            _firmwareVersion[0] = 0x0D;
            _firmwareVersion[1] = 0x24;
            _firmwareVersion[2] = 0x2B;
            _firmwareVersion[3] = 0x24;
            _firmwareVersion[4] = 0x21;
            _firmwareVersion[5] = 0x0D;
 
            var str = System.Text.ASCIIEncoding.ASCII.GetString(_firmwareVersion);
 
            Console.WriteLine(str);
        }
 
    }
}


У меня есть подозрение, что данные в массиве не текстовые.
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
21.03.2019, 12:40  [ТС]
Usaga, можно проще есть массив
C#
1
private byte[] cmdFirmvare = new byte[] { 0x0D, 0x24, 0x2B, 0x24, 0x21, 0x0D };
в класс Y который наследуется от X

Как в X вызвать этот массив

C#
1
2
3
4
public void Version()
        {
            byte[] cmdFirmvare;
        }
0
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
21.03.2019, 12:52
ShmelVG, кого откуда вызвать?
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
21.03.2019, 12:55  [ТС]
Usaga, в общем сделал так
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
public void Version()
        {
            byte[] cmdFirmvare = new byte[] { };
 
        }
        public override void Open()
        {
            if (IsOpen) throw new InvalidOperationException("Устройство уже открыто.");
 
            _port = new SerialPort
            {
                PortName = PortName,
                BaudRate = BaudRate,
                ReadTimeout = ReadTimeout
            };
 
            try
            {
                _port.Open();
                _isOpen = true;
                Version();
            }
            catch (Exception ex)
            {
                throw new IOException("Не удалось открыть порт.", ex);
            }
 
            _pollEndSignal.Reset();
            Task.Factory.StartNew(Poll);
        }
но как теперь получить в ответ массив байт и конвертировать в строку? через геркулес он мне возвращает версию (отсылаемый массив байт)

Добавлено через 57 секунд
Соответственно в другом классе реализуется масс, этот класс абстрактный
0
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
21.03.2019, 12:57
ShmelVG, какой-то поток сознания неостановимый)

Как массив в строку "преобразовать" я показал. Ссылку дал. Если оно что попало выдаёт, так либо кодировку нужно выбрать верную, либо в массиве не строка.

А кто кого откуда и зачем перевызывает из вашего описания решительно не понятно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.03.2019, 12:57
Помогаю со студенческими работами здесь

Сделать запрос к серверу и получить ответ
Необходимо сделать запрос на сервер и получить ответ. С форматом запроса вроде разобрался Теперь нужно сделать этот самый запрос. Есть...

Как отправить веб-запрос и сразу получить ответ?
Привет всем! У меня есть задача отправить свои логин и пароль на сервер и сразу же получить ответ от этого сервера. В документации...

String to byte[]
В диалоговом окне входные данные: ab1c4a67 . Нужно сохранить значения в таком массиве byte bytes = {0xab, 0x1c, 0x4a, 0x67} Подскажите...

Byte[] to string
Массив байт файла в строку Здравствуйте, подскажите пожалуйста, как правильно переводить byte в string и в свою очередь обратно ...

Из string в byte[]
Имеется текст "1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,8,9,0" как его перенести в массив типа byte. Хочу избавиться от еще одного массива....


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
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, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru