09.02.2021, 00:17
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
В С++ совсем в потоках утонул.
Но не об этом...
Код:
|
byte[] array = new byte[str.Length];
for (int i = 0; i ‹ str.Length; i++)
array[i] = Convert.ToByte(Convert.ToString(str[i]), 16); |
Не будет ли проще массив отобразить в rtbDisplay?
Ну и по приходу в порт запроса... не в том формате (пока) отправляется.
Путаюсь.
Код:
|
MOVLW 0xA5
MOVWF TXREG |
буквы другие
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
09.02.2021, 00:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,653
Сказал спасибо: 117
Сказали Спасибо 815 раз(а) в 592 сообщении(ях)
|
Re: Здесь обсуждается C#?
Еще раз настойчиво прошу таки позвать компетентного человека, который смог бы вменяемо описать суть проблемы!
А то теперь еще и ассемблер пошел…
И да, в сях печать делается элементарно:
Код:
|
for(int i = 0; i ‹ 16; ++int) printf(" %02x", *ptr++); |
(ну, понятно, что еще надо будет добавить печать адреса).
Но таки еще раз напомню, что существует 100500 вариантов терминалов и HEX-просмотрщиков/редакторов. Под любой тип операционок/прошивок (хоть под гей-ось!). И наверняка найдется какая-нибудь готовая утилита, полностью способная сделать то, что вам надо. А нет — так методом UNIX-way можно из неськолких утилит нужное сварганить, прогоняя выхлоп один через пайп во вход другой.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
Последний раз редактировалось eddy; 09.02.2021 в 00:39.
|
|
|
|
09.02.2021, 00:52
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
Сообщение от eddy
|
позвать компетентного человека, который смог бы вменяемо описать суть проблемы!
|
Ну нет такого, я сам "изобретаю".
Я уже не знаю, как описывать ТЗ...
Есть комп. Есть железка на PIC.
Железка просит по СОМ порту байт - компьютер отсылает один байт, ждёт запроса следующего.
На компьютере надо открыть hex файл, увидеть содержимое и разрешить отправку.
Хватило бы проекта C# с двумя кнопками:
открыть файл (уже есть), отобразить его путь (есть) и содержимое (есть только в текстовом формате, надо отображать hex).
И вторая кнопка - "отправить один байт". Надеюсь - дальше сам.
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
09.02.2021, 00:54
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
for(int i = 0; i ‹ 16; ++int) printf(" %02x", *ptr++);
это для консоли?
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
09.02.2021, 23:33
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
Код:
|
private void OpenFile_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "HEX files (*.HEX)|*.HEX|All files (*.*)|*.*";
string str = "";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
try
{
string path = openFileDialog1.FileName;
// rtbDisplay.Text = path;
StreamReader streamReader = new StreamReader(path);
while (!streamReader.EndOfStream)
{
str += streamReader.ReadLine(); //В переменную str по строчно записываем содержимое файла
}
// rtbDisplay.Text = str;
}
catch // ошибка
{
rtbDisplay.Text = "Ошибка открытия файла!";
}
rtbDisplay.ForeColor = Color.Black;
char[] bytes = str.ToCharArray();
for (int i = 0; i ‹ bytes.Length; i++)
rtbDisplay.Text += Convert.ToString(bytes[i])+"\r"; // контрольная точка
private void SendByt_Click(object sender, EventArgs e)
{
t_bytes =Convert.ToString(bytes[0]);
rtbDisplay.Clear();
rtbDisplay.Text = t_bytes;
serialPort1.Write(t_bytes);
} |
Вот здесь выдаёт ошибку:
Что не так?
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
09.02.2021, 23:46
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
и еще,
Код:
|
rtbDisplay.Text += Convert.ToString(bytes[i + j]) + " "; |
Это показывает ASCII, а надо HEX. Уморило уже не по детски.
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
10.02.2021, 01:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.10.2004
Адрес: Нижний Новгород
Сообщений: 1,746
Сказал спасибо: 416
Сказали Спасибо 1,240 раз(а) в 551 сообщении(ях)
|
Re: Здесь обсуждается C#?
rusyvochka, так в левой колонке редактора и так вывод в HEX формате.
Если его обработать по определенному алгоритму получишь файл с расширением -abcdef.hex
По COM порту не передаются данные в HEX формате, (т.к. содержат служебные команды) а в ASCII. Поэтому примени таблицы конвертации HEX-ASCII-HEX. Их всего 16 символов....0=30, 1=31...
__________________
Решил посоветовать, да забыл что...
|
|
|
|
10.02.2021, 01:01
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 748
Сказал спасибо: 365
Сказали Спасибо 822 раз(а) в 386 сообщении(ях)
|
Re: Здесь обсуждается C#?
C#
Если нужно строковое представление числа в НЕХ-формате, то подойдет спецификатор формата Xn, где n - число цифр в желаемом строковом представлении числа (byte, short, int, long и т.д.).
Например, если str - это строковая переменная, то строковое представление числа можно получить так:
для энного элемента байтового массива byte_array:
str = byte_array[n].ToString("X2");
для байтовой переменной byte_var:
str = byte_var.ToString("X2");
для 32-битовой переменной int32_var:
str = int32_var.ToString("X4");
и т.д.
Стандартное форматирование чисел в .NET
|
|
|
Сказали "Спасибо" j-Roger
|
|
|
10.02.2021, 01:34
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Здесь обсуждается C#?
Ну там ведь по-русски написано и по-русски же дана справка по решению проблемы. Ну это ж объектно-ориентированный язык то.
|
|
|
|
10.02.2021, 17:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.05.2010
Сообщений: 1,118
Сказал спасибо: 150
Сказали Спасибо 604 раз(а) в 310 сообщении(ях)
|
Re: Здесь обсуждается C#?
Цитата:
|
Железка просит по СОМ порту байт - компьютер отсылает один байт, ждёт запроса следующего.
На компьютере надо открыть hex файл, увидеть содержимое и разрешить отправку
|
ж.Радиолюбитель, 2009, #11 " MODBUS на привязи. Конвертор архивов" / статья посвящена скачиванию архивов с ПЛК (на Atмега¹₂₈) по RS-485 на PC по командам с верхнего уровня (используется MODBUS, не суть важно) и конвертации архивов в Excel.
p.s.: движок форума интерпретирует цифру восемь как смайлик)
Последний раз редактировалось raxp; 10.02.2021 в 17:18.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:57.
|
|