12.02.2021, 01:15
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
Сообщение от raxp
|
так что тут сложного?
|
Даже прочитать сложно! Понять то понятно, но в буквах - и браться не буду.
Реально не осилю.
4К для PICа за день - влёгкую...
Три десятка строк C# - неделя. И до ума не довёл, и не знаю, как. ;(
Да-да: не знаю.
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
12.02.2021, 11:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.05.2010
Сообщений: 1,118
Сказал спасибо: 150
Сказали Спасибо 604 раз(а) в 310 сообщении(ях)
|
Re: Здесь обсуждается C#?
Сообщение от rusyvochka
|
мне бы носом...
вот так отображаем его в hex формате в ListBox
|
...вот вам чтение бинарника и отображение в переопределенном TListBox (разбить на дополнительные колонки легко):
Код:
|
procedure Tlink.hscroll2(Sender: TObject);
var
Fs: TFileStream;
StartByte: Integer;
BytesCount, MaxBytesCount: Integer;
Ar: array[1..1000] of Byte;
s: string;
I: Integer;
C: Byte;
Pos: Integer;
LastAdr: Integer;
begin
if not fileexists(binname) then exit;
Fs:= TFileStream.Create(binname, fmOpenRead);
with (sender as tscrollbar) do begin
if Max = 1 then StartByte := 0 else
StartByte := Position * byteswidth2 - byteswidth2;
MaxBytesCount := MaxLineCount2 * byteswidth2;
if fSize2 - StartByte ›= MaxBytesCount then BytesCount := MaxBytesCount else
BytesCount := fSize2 - StartByte;
hv2.Clear;
Fs.Seek(StartByte, soFromBeginning);
Pos := Fs.Position;
Fs.Read(Ar, BytesCount);
C := 0;
LastAdr := 0;
for I := 1 to BytesCount do begin
Inc(C);
S := S + IntToHex(Ar[I], 2);
if (C = byteswidth2) then begin
Inc(Pos, C);
hv2.Items.Add(IntToHex(Pos - byteswidth2, 8) + ':' + S);
S := '';
C := 0;
LastAdr := Pos;
end;
if (I = BytesCount) and (C › 0) then begin
hv2.Items.Add(IntToHex(LastAdr, 8) + ':' + S);
Break;
end;
end;
end;
Fs.Free
end; |
MaxLineCount2 - высчитываете, исходя из текущей высоты визуального listbox (т.е. пользовательских настроек, разрешения экрана).
byteswidth2 - количество отображаемых в колонке байт.
Результат:
...в шарп переведете сами.
Сообщение от rusyvochka
|
https://qna.habr.com/q/199341
и да. Тут обратное действие: всё время принимать. Такого, почему-то много в инете.
|
Сообщение от rusyvochka
|
вот так пихаем 4-ый (5-ый... n-ый) элемент строки в СОМ,
|
а это тогда что:
Код:
|
// Пишем отправляеммый пакет
_Serial.Write(wr_buf, 0, 2);
// ждем пока весь пакет уйдет или запросят отбой
while ((_TransferWorker.CancellationPending == false) && (_Serial.BytesToWrite != 0)) ;
// попытка поймать заголовок
try
{
int dummy = 0, lenghtReadingPacket;
bool end = false;
int counter =0;
while (end != true){
dummy = _Serial.BytesToRead;
if (dummy ‹= 3)
{
System.Threading.Thread.Sleep(1);
if (counter++ › _Serial.ReadTimeout)
{
_dataLostArgs.ErrorPreambulaLen++;
throw new TimeoutException("Preambula not full!");
}
}
else end = true;
} |
|
|
|
|
12.02.2021, 11:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.05.2010
Сообщений: 1,118
Сказал спасибо: 150
Сказали Спасибо 604 раз(а) в 310 сообщении(ях)
|
Re: Здесь обсуждается C#?
...и да, если хотите красиво отобразить без смещений по ширине символов, то установите в визуальном компоненте - моноширный шрифт.
|
|
|
|
12.02.2021, 20:53
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
Можно попросить: без лирики, без нравоучений, без ссылок на литературу и примеры, просто:
что и где здесь дабавить/изменить, чтобы отображалось в HEX?
Ну нет сил моих больше! Или ошибка - или кракозяблы.
Код:
|
char[] bytes = str.ToCharArray(); // str - загруженый файл hex
rtbDisplay.Clear();
rtbDisplay.ForeColor = Color.Black;
for (int i = 0; i ‹ bytes.Length/8-8; i++)
{
for (int j = 0; j ‹ 8; j++)
{
string new_text = bytes[i * 8 + j].ToString();
rtbDisplay.Text += new_text+" ";
}
rtbDisplay.Text += "\n";
} |
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
13.02.2021, 00:04
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 731
Сказал спасибо: 363
Сказали Спасибо 807 раз(а) в 379 сообщении(ях)
|
Re: Здесь обсуждается C#?
rusyvochka, попробуйте обработчик кнопки с таким кодом:
PHP код:
|
var dlg = new OpenFileDialog()
{
CheckFileExists = true,
ValidateNames = true,
Filter = "All files (*.*)|*.*|HEX files (*.HEX)|*.HEX",
FileName = string.Empty,
};
if (dlg.ShowDialog() != DialogResult.OK)
return;
byte[] bytes = System.IO.File.ReadAllBytes(dlg.FileName);
rtbDisplay.Clear();
rtbDisplay.ForeColor = Color.Black;
for (int i = 0; i ‹ bytes.Length / 8 - 8; i++)
{
for (int j = 0; j ‹ 8; j++)
{
string new_text = bytes[i * 8 + j].ToString("X2");
rtbDisplay.Text += new_text + " ";
}
rtbDisplay.Text += "\n";
}
|
И, честно говоря, не совсем понятно насчет формата входного файла.
Нужен формат Intel HEX (который сам по себе текстовый) или же бинарник для показа содержимого в шестнадцатеричном виде?
Приведенный фрагмент кода показывает содержимое файла как байты в шестнадцатеричном виде.
|
|
|
Сказали "Спасибо" j-Roger
|
|
|
13.02.2021, 00:09
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
Неужели так сложно было подсказать?
Я писал: это должно быть очень просто!
Код:
|
for (int i = 0; i ‹ values.Length / 8 - 8; i++)
{
for (int j = 0; j ‹ 8; j++)
{
string new_text =Convert.ToInt16(bytes[i * 8 + j]).ToString("X2");
rtbDisplay.Text += new_text + " ";
}
rtbDisplay.Text += "\n";
} |
/три дня! Остальное тоже работает!/
"Спасибо" ¿¡¿ Тема закрыта.
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
13.02.2021, 00:18
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
Сообщение от j-Roger
|
формата входного файла.
|
*.eta если о чём-то скажет. Я стремился увидеть то, что вижу в редакторе, но в своей форме. Я это увидел. Сами данные в преобразовании не нуждаются - PIC между перекурами их кромсает на полубайты и синхронно отправляет в конечку со служебными приписками. На запросы от PIC тоже - только реакция. Ну а как и что спрашивает/выглядит - мне без разницы: соотв сообщение во втором Текст-боксе. PICу прогу сам писал. За вечер.
А теперь от нервов: Разве это решается в течении трёх дней поисков, ожидания и кривых подсказок?
Зато - 5!!!! страниц воды налили!
В очередной раз!
/текстовое спасибо и на-не-на, отозвавшиеся дельными советами - спасибо в статистике/.
__________________
Смотрящий под ноги - звёзды видит в лужах.
Последний раз редактировалось rusyvochka; 13.02.2021 в 00:21.
|
|
|
|
13.02.2021, 00:29
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 731
Сказал спасибо: 363
Сказали Спасибо 807 раз(а) в 379 сообщении(ях)
|
Re: Здесь обсуждается C#?
Ну хоть срача в теме нет, и то хорошо
|
|
|
|
18.02.2021, 12:02
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
Вот, как бы так.
И в эмуляторе и в железе присутствует баг:
PIC с интервалом 1 сек отсылает 0х55 - "признак присутствия, связи", так вот
Если запустить форму, а потом подать питание на контроллер - всё гладко;
Если контроллер был включен, то есно в буфере уже накидано по количеству секунд информации. В этом случае компьютер не по детски начинает тупить.
Попробовал добавить
Код:
|
private void OpenPort_Click(object sender, EventArgs e)
{
try
{
serialPort1.Open();
serialPort1.DiscardInBuffer();
................ |
Не помогло. Чего посоветуют гуру?
__________________
Смотрящий под ноги - звёзды видит в лужах.
Последний раз редактировалось rusyvochka; 18.02.2021 в 12:04.
|
|
|
|
18.02.2021, 12:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,643
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Здесь обсуждается C#?
Сообщение от j-Roger
|
Ну хоть срача в теме нет, и то хорошо
|
Да просто глядя на этот трешняк (хотя более подходящим было бы нецензурное слово), вообще охреневаешь настолько, что даже ничего написать не можешь…
Я вот представил себе, как решил бы заняться ветеринарией и на уличных зверях тренировался, попутно выкладывая фотки потрошенных зверюшек куда-нибудь на форум кардиохирургов с вопросами: "я правильно котика кастрировал?"
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
Последний раз редактировалось eddy; 18.02.2021 в 12:30.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:41.
|
|