Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2009, 11:33   #1
Shaienn
 
Регистрация: 06.05.2009
Сообщений: 5
По умолчанию Затык с Com-портом...

Добрый день, не могу понять затыка в функции обработки потока данных с ком порта. Условие if (dwBytesTransferred==100) никогда не наступает

Код:
void __fastcall T::Execute()
{
	Cominit();
	SendMessage(Form1->Handle,Info,0,7);
	do
	{
		while (hCom != INVALID_HANDLE_VALUE)
		{
			WaitCommEvent (hCom, &dwCommModemStatus, 0);
			SetCommMask (hCom, EV_RXCHAR);
			 if (dwCommModemStatus & EV_RXCHAR)
					 {
					  ReadFile (hCom, &Byte, 100, &dwBytesTransferred, 0);
                      Form1->CheckBox1->Checked = True;
					  if (dwBytesTransferred==100)
							{
							memcpy(Buff,Byte,sizeof(Buff));
						    SendMessage(Form1->Handle,Data,(long)dwBytesTransferred,(long)&Buff);
							dwBytesTransferred = 0;
							Form1->CheckBox2->Checked = True;
							}
					}
		}
	}
	while(!Terminated);
	CloseHandle(hCom);
}
Shaienn вне форума Ответить с цитированием
Старый 19.10.2009, 11:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
никогда не наступает
А вообще из порта чтение идет? Мож не 100 байт приходит а меньше.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.10.2009, 11:54   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

а размер буфера вы где выставили?
...уберите проверку и выведите в memo что у вас идет
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 19.10.2009, 12:03   #4
Shaienn
 
Регистрация: 06.05.2009
Сообщений: 5
По умолчанию

Весь вопрос в том, что при пошаговом исполнении все работает как надо.

Проверял другим терминалом, данные в порт идут непрерывно.

Размеры буфера выставил здесь:
Код:
//---------------------------------------------------------------------------

#ifndef THREADH
#define THREADH
//---------------------------------------------------------------------------
#include <Classes.hpp>
//---------------------------------------------------------------------------
class T : public TThread
{
private:
	void __fastcall Cominit(void);
protected:
	void __fastcall Execute(void);
public:
	__fastcall T(bool CreateSuspended);
	int i;
   DCB dcb;
   HANDLE hCom;
   BOOL fSuccess;
   DWORD dwCommModemStatus, dwBytesTransferred;
   char Byte[100],Buff[100];
};
//---------------------------------------------------------------------------
#endif
Если честно, то код работал. Потом что-то произошло (может быть я чего-то изменил) и работать перестал. Пошагово все накапливается и вызывается функция SendMessage, а в реалтайме программа не накапливает 100 байт (и даже 2). Что-то появляется только при if (dwBytesTransferred==1)...
Shaienn вне форума Ответить с цитированием
Старый 19.10.2009, 12:21   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

может вы где-то просто поток тормозите-останавливаете, да оно и не успевает? для теста сделайте отдельно не в потоке...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 20.10.2009, 04:25   #6
Shaienn
 
Регистрация: 06.05.2009
Сообщений: 5
По умолчанию

Пришел сегодня на работу, все запустилось
Может компьютер глючил?

Всем спасибо
Shaienn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа c COM-портом doniyor Общие вопросы Delphi 12 27.07.2009 11:16
Работа с COM-портом jovanny Помощь студентам 2 03.05.2009 18:06
Работа с COM портом hoba Общие вопросы Delphi 3 20.11.2008 03:39
Помогите с портом!!! vizor9 Свободное общение 2 06.09.2007 08:46