Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

Мост USB-USART проблемы с ноутбуком

Непрочитано 05.06.2015, 11:53  
shurenock
Частый гость
 
Регистрация: 01.04.2005
Сообщений: 33
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
shurenock на пути к лучшему
По умолчанию Re: Мост USB-USART проблемы с ноутбуком

Хор. ушли от конструктивной критики).
Далее по факту из MSDNа. Что не так при использовании события SerialPort.DataReceived.
То, что это событие в дополнительном потоке? И обработку элементов формы желательно производить через делегат.
Прекрасно. "попытка изменить некоторые элементы в основном потоке (например, элементы интерфейса пользователя) может вызвать исключение потоковой обработки." - MSDN.
Отлично. Только если заметили блоком try{} выделено всего пару строк приема данных. И исключение возникает именно в этом блоке. А "попытка изменить некоторые элементы в основном потоке" проходит без исключений. Это как раз таки-проверено. Что на это гуру скажет?)
Реклама:
shurenock вне форума  
Непрочитано 05.06.2015, 11:59  
shurenock
Частый гость
 
Регистрация: 01.04.2005
Сообщений: 33
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
shurenock на пути к лучшему
По умолчанию Re: Мост USB-USART проблемы с ноутбуком

Сообщение от Boba_spb Посмотреть сообщение
Какой класс Вы имеете ввиду? System.Threading.Timer или System.Windows.Forms.Timer
Я имею ввиду то, что автор вашей ссылки использовал класс usercontrol для отрисовки экрана. Видимо он для себя ставил такую задачу.

Просто отображать часы на экране можно и в главной форме в элементе pictureBox. Обновляя каждые полсекунды экран через событие
System.Windows.Forms.Timer.Tick
shurenock вне форума  
Непрочитано 05.06.2015, 14:55  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Мост USB-USART проблемы с ноутбуком

Сообщение от shurenock Посмотреть сообщение
А "попытка изменить некоторые элементы в основном потоке" проходит без исключений. Это как раз таки-проверено. Что на это гуру скажет?)
Скорее всего в основном потоке нет никакого обращения к контролам. Поэтому лететь нечего.
Так какая ошибка в try{} происходит.
замените свой catch на это
catch ( System.Exception ex )
{
MessageBox.Show ( "Error: " + ex.Message );
//Остановка генерации
MessageBox.Show("Ошибка приема данных!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
btStartMode4.Text = "Старт";

}
Boba_spb вне форума  
Непрочитано 05.06.2015, 15:07  
shurenock
Частый гость
 
Регистрация: 01.04.2005
Сообщений: 33
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
shurenock на пути к лучшему
По умолчанию Re: Мост USB-USART проблемы с ноутбуком

Да, я об этом сегодня ночью в 00.13 уже писал, что хочу ошибку идентифицировать. После обеда доберусь до макета, обязательно сделаю. По результату отпишусь. Самому интересно, что винда скажет на это.)))
shurenock вне форума  
Непрочитано 05.06.2015, 15:23  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Мост USB-USART проблемы с ноутбуком

Скажет что за размеры массива улетели
Boba_spb вне форума  
Непрочитано 05.06.2015, 17:51  
shurenock
Частый гость
 
Регистрация: 01.04.2005
Сообщений: 33
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
shurenock на пути к лучшему
По умолчанию Re: Мост USB-USART проблемы с ноутбуком

Угу. Именно так и сказала. Только за пределы не того массива, что вы говорили serialInByte.

Улетает она конкретно в трех строчках:

temp = serialPortMCU.BytesToRead;
byte[] tempBuff = new byte[temp];
serialPortMCU.Read(tempBuff, 0, temp);

Попробовал поставить проверку при создании массива на temp›0. Это не то.
Как-то я пока логики не вижу. Буфер на прием в SerialPort стоит очень большой. Метод Read выбирает данные и удаляет их из очереди асинхронно с приемом. Ну пришли дополнительные данные в хвост очереди. И что? Метод должен выбрать количество данных, считанных ранее со свойства .BytesToRead. Если в очереди оказалось больше данных, лишние останутся.
Короче вопросы остались.
shurenock вне форума  
Непрочитано 05.06.2015, 18:23  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Мост USB-USART проблемы с ноутбуком

Напишите так
void serialPortMCU_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
int temp = 0;
byte[] tempBuff = new byte[32];
try
{
temp= serialPortMCU.Read(tempBuff, 0, 32);
if(temp ‹=0) return;
//Перекидываем байты из временного массива в массив очереди для обработки
for (int i = countByteInBuff, j = 0; i ‹ countByteInBuff + temp; i++, j++)
{
serialInByte[i] = tempBuff[j];
}
}
catch
{
//Остановка генерации
MessageBox.Show("Ошибка приема данных!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
btStartMode4.Text = "Старт";
}
Boba_spb вне форума  
Непрочитано 05.06.2015, 18:31  
shurenock
Частый гость
 
Регистрация: 01.04.2005
Сообщений: 33
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
shurenock на пути к лучшему
По умолчанию Re: Мост USB-USART проблемы с ноутбуком

Ок. Попробую.
Хотя я уже по частям это пробовал. Создание массива за try выносил. Фиксированную длину его пробовал. Только число элементов 100 брал. Проверку на temp›0 тоже делал.
Надо попробовать все вместе.))) Как только - сразу отпишусь.
Кстати можно в messageBox с ошибкой вывести значение temp. Заодно посмотрим чему оно равно при возникновении исключения.
shurenock вне форума  
Непрочитано 05.06.2015, 18:40  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Мост USB-USART проблемы с ноутбуком

Закомментируйте две строки, которые через Invoke должны работать
Boba_spb вне форума  
Непрочитано 05.06.2015, 21:11  
Yurkin2014
Заблокирован
 
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
Yurkin2014 на пути к лучшему
По умолчанию Re: Мост USB-USART проблемы с ноутбуком

Сообщение от Boba_spb Посмотреть сообщение
temp= serialPortMCU.Read(tempBuff, 0, 32);
Если принято меньше 32 байтов, то serialPortMCU.Read() будет до упора ждать, а потом вылетит в catch{} по таймауту.
Yurkin2014 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32F205RB Проблемы с USART IvanAlyaev ARM 2 04.05.2014 12:46
На ноутбуке Sony проблемы с USB sandist Ремонт оргтехники 6 23.05.2009 19:41
Помогите разобраться с USART в CodeVisionAVR vendim Микроконтроллеры, АЦП, память и т.д 20 26.07.2007 16:42


Часовой пояс GMT +4, время: 02:18.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.