08.02.2021, 22:50
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Здесь обсуждается C#?
Самое непонятное - ГДЕ отобразить? В микроконтроллере, на подключенном дисплее? Или в компе? Тогда причем тут микроконтроллер?
Вообще, это обычный тупой форматированный вывод через printf построчно, в ANSI-кодировке. В каждой строке: первый столбец: значение переменной адреса, затем ANSI-символ : (двоеточие), затем через пробел значения ваших полученных данных
|
|
|
|
08.02.2021, 22:51
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
Я наверное не умею правильно формулировать вопросы
Мне из-за разового проекта изучать новую оболочку?
Я работаю под виндой, любой линукс - мимо меня.
Если это принципиально - лепится конвертер фалов для АУПП. Да-да: еще есть такое на планете Земля. Вручную - ну очень долго. Всё железо уже готово, вот с компа загнать дамп не могу.
Код:
|
while (!streamReader.EndOfStream) //Цикл длиться пока не будет достигнут конец файла
{
str += streamReader.ReadLine(); //В переменную str по строчно записываем содержимое файла
}
// rtbDisplay.Text = str;
char[] array = str.ToCharArray();
string final = "";
foreach (var i in array)
{
string hex = String.Format("{0:X}", Convert.ToInt32(i));
final += hex.Insert(0,"") + " ";
}
final = final.TrimEnd();
rtbDisplay.Text = final; |
__________________
Смотрящий под ноги - звёзды видит в лужах.
Последний раз редактировалось rusyvochka; 08.02.2021 в 22:57.
|
|
|
|
08.02.2021, 22:57
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Здесь обсуждается C#?
Кто-нить вообще понял, чего хочет топикстартер? Красиво отобразить на компе байты, отправляемые в микроконтроллер с компа? Но зачем, черт подери? Открываем в любом двоичном редакторе и смотрим как хотим.
|
|
|
|
08.02.2021, 23:01
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
Сообщение от NewWriter
|
чего хочет топикстартер?
|
Открыть "на компе" hex файл, увидеть "красиво" содержимое, по запросу от пика - переслать один байт в СОМ-порт. Компьютеру ждать следующего запроса от пика или, при запросе "ошибки" повторить.
И так - до конца фала. В идеале - переданный байт "закрасить" или поменять цвет.
Так нормально?
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
08.02.2021, 23:02
|
|
Временная регистрация
Регистрация: 09.06.2006
Адрес: Lugansk
Сообщений: 75
Сказал спасибо: 0
Сказали Спасибо 26 раз(а) в 21 сообщении(ях)
|
Re: Здесь обсуждается C#?
Если знаете VB6, то на C# все похоже. Создаем пустой проект WindowsForms, добавляем SerialPort и OpenFileDialog из панели элементов. Пару кнопочек.
Загрузить файл текстовый, рабираем по строкам
Код:
|
// ************************************************** **********************
// Загрузка файла
// ************************************************** **********************
private void button3_Click(object sender, EventArgs e)
{//download
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "HEX files (*.HEX)|*.HEX|All files (*.*)|*.*";
if (openFileDialog.ShowDialog() != DialogResult.OK)
{
return;
}
try
{
// Читаем файл
string filename = openFileDialog.FileName;
filelines = File.ReadAllLines(filename);
// textBox2.Text = filelines[0];
Count_Strok = filelines.Length;
label1.Text = "Load:" + Count_Strok.ToString();
label1.BackColor = Color.White;
Count_Data = Count_Strok;
label1.Text = "Download";
label1.BackColor = Color.Aqua;
progressBar1.Maximum = Count_Strok;
button3.Enabled = false;
button4.Enabled = true;
Count_Strok = 0;
Command_5();
}
catch// (Exception ex)
{
// label1.Text = "Error";
//Console.WriteLine("ERROR: невозможно открыть порт:" + e.ToString());
textBox2.Text = "ERROR: невозможно открыть файл "; // + err.ToString();
// textBox1.BackColor = Color.Red;
return;
}
}
// ************************************************** ********************** |
Отпрвка файла построчно по другой кнопочке.
Код:
|
// ************************************************** **********************
// Отправка данных в контроллер
// ************************************************** **********************
private void Command_5()
{
string ss;
ss = filelines[Count_Strok];
Count_Strok ++;
serialPort1.Write( ss + "\r\n" );
progressBar1.Value = Count_Strok;
if (Count_Strok == Count_Data)
{
Count_Strok = 0;
}
} |
Все просто. Примеры взяты из рабочего проекта, наверно придется лишнее убрать, там прогресс бвр, текстовые окна....
__________________
picping.lg.ua
|
|
|
Сказали "Спасибо" Driver_gv
|
|
|
08.02.2021, 23:06
|
|
Временная регистрация
Регистрация: 09.06.2006
Адрес: Lugansk
Сообщений: 75
Сказал спасибо: 0
Сказали Спасибо 26 раз(а) в 21 сообщении(ях)
|
Re: Здесь обсуждается C#?
Прием - отдельный поток. Нужен таймер.
Код:
|
// ************************************************** **********************
// обработчик события приема байтов в порт - отдельный поток
// складывает в буффер, выставляет флаги
// ************************************************** **********************
string Reply = "";
bool Flaf_Send_info = false;
bool Flag_reply = false;
private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{ //This is to handle the data when it comes
//Do something on data received ( Обработчик событий для DataReceived)
// узнаем сколько байт пришло
int buferSize = serialPort1.BytesToRead;
Byte[] buf = new Byte[buferSize]; //To store the received data.
for (int i = 0; i ‹ buferSize; ++i)
{
// читаем по одному байту
byte bt = (byte)serialPort1.ReadByte();
buf [i] = bt;
}
// печать
byte[] bDefBytes = Encoding.Convert(Encoding.GetEncoding("windows-1251"), Encoding.Default, buf);
string s = Encoding.Default.GetString(bDefBytes);
//textBox2.Text = textBox2.Text + s; //нельзя ,не тот поток.
Reply = Reply + s;
Flag_reply = true;
}
// ************************************************** **********************
string ReplyALL = "";
int Len_Text = 0;
// ************************************************** **********************
// Проверка прнятых данных - ассинхронный поток по таймеру.
// ************************************************** **********************
private void timer1_Tick(object sender, EventArgs e)
{
string st = textBox3.Text;
Len_Text = st.Length;
if (Len_Text › 220)
{
textBox3.Text = st.Remove(0, Len_Text - 220 );
}
if (Flag_reply == false)
{
return;
}
Flag_reply = false;
textBox3.Text= textBox3.Text + Reply + "\r\n" ;
if (Reply.Contains("\r")) // 0x0d
{
ReplyALL = Reply;
Reply = "";
}
else
{
return;
}
textBox2.Text = ReplyALL;
string s1 = ReplyALL;
// проверка принятых данных
//------------
if (s1.Contains("VER="))
{
button5.Enabled = true;
//button4.Enabled = true;
button3.Enabled = true;
button4.Enabled = true;
label1.Text = "Ready";
label1.BackColor = Color.Gainsboro;
timer2.Enabled = false;
s1 = "";
return;
}
s1 = "";
//------------
} |
__________________
picping.lg.ua
|
|
|
Сказали "Спасибо" Driver_gv
|
|
|
08.02.2021, 23:15
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
Сообщение от Driver_gv
|
Отпрвка файла построчно по другой кнопочке.
|
нужно - побайтно, по запросу от пика.
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
08.02.2021, 23:18
|
|
Временная регистрация
Регистрация: 09.06.2006
Адрес: Lugansk
Сообщений: 75
Сказал спасибо: 0
Сказали Спасибо 26 раз(а) в 21 сообщении(ях)
|
Re: Здесь обсуждается C#?
Там все есть. Есть прием и проверка данных. Измените на ваш запрос. и вызывайте отправку. Например вызвав тот же обработчик нажатия кнопки. Но в любом случае придется напрячь голову и сделать для себя.
__________________
picping.lg.ua
|
|
|
|
08.02.2021, 23:40
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: Здесь обсуждается C#?
Вернулись к началу.
Это всё уже готово!
Отобразить и побайтно отправить по запросу....
Две страницы воды...
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
08.02.2021, 23:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,653
Сказал спасибо: 117
Сказали Спасибо 815 раз(а) в 592 сообщении(ях)
|
Re: Здесь обсуждается C#?
rusyvochka, как говорится, грамотно составленное техзадание содержит в себе уже половину решения проблемы!
А вы даже техзадание составить не можете! Ну и как проблему решить? Я так понимаю, что в компьютерах вы вообще дилетант. Ну так попросите того, кто хоть чуть-чуть в них разбирается написать, что нужно!
Наверняка готовое уже существует (возможно, даже и под игровыми приставками!).
Что до си-диеза, то, думаю, вы вообще неправильно выбрали инструментарий! Ну и спрашиваете не там, где могут находиться любители этой дряни. Здесь обычно народ на С пишет, ну или на С++…
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
Последний раз редактировалось eddy; 08.02.2021 в 23:52.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:04.
|
|