|
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
|
|
BitConverter14.08.2011, 10:00. Показов 10294. Ответов 41
Метки нет (Все метки)
Есть массив байтов(с модема) Известно, что первые 2 баита содержат идентификационныи номер, третий байт - число, определяющее количество байтов данных, в остальных баитах - сами данные.
Как преобразовать эти байты в строки и положить их в DataGridView? Пробую через BitConverter.ToString, но не получается. Подскажите,пожалуйста! Спасибо!
0
|
|
| 14.08.2011, 10:00 | |
|
Ответы с готовыми решениями:
41
Как работает BitConverter.ToUInt32
|
|
20 / 21 / 1
Регистрация: 13.08.2011
Сообщений: 51
|
|
| 14.08.2011, 10:15 | |
|
Что имено не получается?
Какой результат ожидаем и какой происходит?
0
|
|
|
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
|
||||||
| 14.08.2011, 10:27 [ТС] | ||||||
|
Пока есть ошибки даже на стадии компиляции
0
|
||||||
|
20 / 21 / 1
Регистрация: 13.08.2011
Сообщений: 51
|
|||||||
| 14.08.2011, 10:35 | |||||||
Может не понятно выразился. У нас есть строки и столбцы, конкретная строка и столбец - это ячейка. Так вот ячейка это объект со множеством своих атрибутов, одним из которых является значение, которое хранит эта ячейка, отсюда уже можно сделать далеко идущие логические выводы ![]() То есть напишите так:
Value можно передавать объект, а не только строку
0
|
|||||||
|
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
|
||||||
| 14.08.2011, 10:42 [ТС] | ||||||
|
Спасибо, это уже сделала. Возникает ошибка здесь
0
|
||||||
|
20 / 21 / 1
Регистрация: 13.08.2011
Сообщений: 51
|
||||||
| 14.08.2011, 10:50 | ||||||
|
Посмотрите сколько у вас столбцов и строк.
Помните, что нумерация начинается с 0. В самом начале выбирается i=0 ряд и, как я понимаю 1 ячейка из этого ряда (что соответсвует 2-й ячейке, если у вас в строке всего 1 столбец, то ошибка может быть в это). Получается примерно так:
Сколько у вас их?
0
|
||||||
|
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
|
||||||
| 14.08.2011, 10:58 [ТС] | ||||||
Столбца 3, строк - от меня не зависит. В 1 столбец каждои строки должна положить 2 баита, пробразуемых в число Для этого создаю временныи массив и записываю туда эти 2 байта(пока хочу хотя бы в 1 столбце(с номером 0) хоть что-то записалось, i - получается, что это номер строки,которыи меняется при нажатии "\r".i увеличиваю, когда нажимаю"\r" и считываю новыи буффер... П.С.СпасибоAlessandr, что отвечаете
0
|
||||||
|
20 / 21 / 1
Регистрация: 13.08.2011
Сообщений: 51
|
||||||
| 14.08.2011, 11:06 | ||||||
|
Можете выложить проект в котором это делаете?
Правда если там напрямую с устройством работаете у меня может не получиться, но хоть погляжу в чем может быть проблема.
0
|
||||||
|
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
|
|
| 14.08.2011, 11:12 [ТС] | |
|
Спасибо, вот
0
|
|
|
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
|
|
| 14.08.2011, 11:16 [ТС] | |
|
Ваш код выдает в DataGridView занчki , кажется, марса и ноты
0
|
|
|
20 / 21 / 1
Регистрация: 13.08.2011
Сообщений: 51
|
|||||||||||
| 14.08.2011, 12:06 | |||||||||||
|
У меня при запуске после нажатия на OрenPоrt и потом нажжатии на кнопку Read ругался на то что buffer у объекта "op" не инициализирвоан, то есть равен null.
Когда передается сообщение на порт не отрабатывает событие com_DataReceived и буфер остается равным null Как я понял это от того, что у меня устрйоства нет в COM1, так что основное описание проблемы ниже /======================/ Вручную его изменив для работы я добился вашей ошибки. Она возникает от того, что ваш цикл перебирает все строчки и потом доходит до несуществующей строки и выводит ошибку о превышении диапазона. Не по теме: А ведь эту ошибку можно было сразу из кода заметить, эх, проглядел... Так как цикл сделан с помощью while а строки приращиваются с помощью i++, то в конце концов dataGridView1.Rows[i] указывает не несуществующий объект. Например у нас будет 4 строки, тогда цикл отработает, i станет равным 5, а так как пятой строки нет, то получим исключение, которое вы наблюдаете. Попробуйте в начале цикла while вставить
Либо делайте програмно проверку после изменение строчки на необходимость новой, потом добавляйте строчку если она необходима, потому что сейчас это не отрабатывает и переменная i начинает указывать на несуществующую строку
1
|
|||||||||||
|
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
|
|||||||||||
| 14.08.2011, 12:13 [ТС] | |||||||||||
|
Спасибо, что отвечаете,Alessandr! Дело в том, что из цикла while я должна уходить, если получу в буффере "END", а пока END нет, должна посылать "\r" Если ставлю break, то вылетаю почему-то не доздавшись END . Я тут еше нашла проблему Мне кажется, что нельзя использовать
0
|
|||||||||||
|
20 / 21 / 1
Регистрация: 13.08.2011
Сообщений: 51
|
||||||
| 14.08.2011, 12:41 | ||||||
|
Вам нужно сделать систему по разбору данных. Чуть ниже я откомментил пути решения.
Если выходить из цикла можно только по получению END, то в удобном месте цикла, в начале или конце добавляйте новую строку в грид. Если вам надо преобразовать первые байты в число, то и преобразовывайте их в число Существует фунция
Еще раз: 1. на каждом витке цикла вам необходимо добавлять в Grid еще одну строку с помощью Rows.Insert() или Rows.Add(). 2. Необходимо точно разобрать получаемые вами данные на составляющие. Например вы получаете список байт, точно знаете что первые 2 байта число? Конвертируете в число, остальные в строки или что вам необходимо. Например int firstNum = Convert.ToInt32(op.buffer[0]); Немножко подумать и все получится
1
|
||||||
|
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
|
|||||||||||
| 14.08.2011, 12:41 [ТС] | |||||||||||
|
Спасибо!Пробую! А как мне преобразовать в число 2 баита, т.е не
0
|
|||||||||||
|
20 / 21 / 1
Регистрация: 13.08.2011
Сообщений: 51
|
|||||||
| 14.08.2011, 12:56 | |||||||
|
Мы точно знаем что в третьем байте количество данных, то есть
Только запомните, данные тут всегда получаются идентичными, в каждой строке если array изменяться не будет
0
|
|||||||
|
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
|
||||||
| 14.08.2011, 13:12 [ТС] | ||||||
|
Продолжаю страдать...
До данных пока не добралась, но в 3 байте не сами данные, а сколько байтов занимают эти данные. НО это уже потом ...
0
|
||||||
|
20 / 21 / 1
Регистрация: 13.08.2011
Сообщений: 51
|
|
| 14.08.2011, 13:12 | |
|
Используйте дебагер, проверьте какого размера массив op.buffer
array.CopyTo лучше не используйте, он не так как вам надо скопирует. Попытайтесь сначало просто все байты из op.buffer как строку представить
0
|
|
|
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
|
|
| 14.08.2011, 15:53 [ТС] | |
|
Спасибо, пробую и дебагирую. О результатах обязательно сообщу ...
0
|
|
|
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
|
||||||
| 16.08.2011, 16:02 [ТС] | ||||||
|
Вернулась опять к этои проблеме. В моем коде появляется лишняя строка. Я так поняла, что по умолчанию в dataGridView1 всегда существует 1 строка. Это правильно? Подскажите, пожалуйста как удалить последнюю строку(Или сделать так, чтобы она не появлялась?
Как обещала, докладываю Проблема с пустой строкой так и осталась(Help!!!) A проблема была в том, что считывала с модема не все нужные байты. Т.е. нужен был 1 и 2, а считывала только 1, и, естественно вылетала ошибка, но на DataGridView и я не могла понять в чем дело!Alessandr, еще раз - спасибо! Может с пустой строкои тоже поможете?(Наглею
0
|
||||||
|
|
|
| 16.08.2011, 21:46 | |
|
0
|
|
| 16.08.2011, 21:46 | |
|
Помогаю со студенческими работами здесь
20
BitConverter.ToSingle возвращает целое число BitConverter little-endian -> big-endian Преобразование пары байт в Int16 (BitConverter.ToInt16) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|