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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2012, 06:27   #1
Dmitriy90
 
Регистрация: 06.04.2012
Сообщений: 7
По умолчанию сканер штрих-кодов через com порт

День добрый. Есть сканер штрих кодов подключенный через com порт. Программа должна забирать данные с порта и засовывать их в Edit. Все это происходит в потоке. Проблема вот в чем: когда я прохожу процедуру по шагам все отлично: данные читаются правильно, засылаются тоже. Но когда я запускаю программу полностью в Edite оказывается только часть штрих кода да и то записанная непонятно как. Код процедуры Execute:
Код:
void __fastcall ReadThread::Execute()
{
 int i;
 COMSTAT comstat;
 DWORD temp, mask, signal;	

overlapped.hEvent = CreateEvent(NULL, true, true, NULL);	
 SetCommMask(port, EV_RXCHAR);                   	        
 while(!Terminated)						
  {
   WaitCommEvent(port, &mask, &overlapped);               	
   signal = WaitForSingleObject(overlapped.hEvent, INFINITE);	
   if(signal == WAIT_OBJECT_0)				        
	{
	 if(GetOverlappedResult(port, &overlapped, &temp, true)) 
	  if((mask & EV_RXCHAR)!=0)					
	   {
		ClearCommError(port, &temp, &comstat);		
		btr = comstat.cbInQue;                          	
		if(btr)                         			
		{
		 
		 ReadFile(port, buf, btr, &temp, &overlapped);     
		 for (int i=0; i < btr; i++)
                 {
                  Form1->Edit1->Text=Form1->Edit1->Text+buf[i];
                 }                     		
		}
	   }
	}
  }
 CloseHandle(overlapped.hEvent);		

}

Последний раз редактировалось Stilet; 17.07.2012 в 20:37.
Dmitriy90 вне форума Ответить с цитированием
Старый 17.07.2012, 12:48   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Перед началом чтения сделайте задержку.
Если отправляемый пакет от сканера статичной длины то ждите пока в буфере порта не окажется полный пакет и только после этого начинайте считывание.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 17.07.2012, 14:29   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

OFFTOP >
...а у этого сканнера точно только СOM-порт (cтарый наверно) имеется, может есть и USB? Часто в сканнерах уже реализована HID-клавиатура, и он сразу кидается готовыми скан-кодами (клавишами).
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 18.07.2012, 15:35   #4
Марат05
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 72
По умолчанию

нужно исходники Haks прогнать ему!
Марат05 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для считывания штрих-кодов Alexx83 Фриланс 6 05.03.2012 20:29
Печать на принтер штрих кодов. xakkkkker Общие вопросы Delphi 2 24.01.2012 00:47
Распознавание штрих-кодов vlad00777 Мультимедиа в Delphi 1 23.08.2010 21:45
Сканер штрих кодов asale Microsoft Office Excel 7 30.11.2008 19:57