Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.08.2012, 12:34
Barsdg Barsdg вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 24
Репутация: 10
Вопрос ТComPort

Доброго времени суток уважаемые!
Есть родная программа для сбора данных с Com1
Я пишу программу, которая должна конектиться к Com1 и послать команду 'MEAS80'. Команда прибором отрабатывается.
procedure TForm1.Button6Click(Sender: TObject);
Цитата:
var
Str: String;
begin
ComPort1.Open;
Str := 'MEAS80';
Str := Str + #13;
ComPort1.WriteStr(Str);
ComPort1.Close;
end;
НО родная программа после этого с Com1 данные не выгружает.

Пробовал через HyperTerminal:
HyperTerminal -> команда "MEAS" -> Результат ОК -> Disconnect
Далее в родной программе данные грузятся без проблем! В чем может быть проблема???

Последний раз редактировалось Barsdg, 29.08.2012 в 12:37.
Ответить с цитированием
  #2  
Старый 29.08.2012, 13:16
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

может после отправки команды стоит попробоать принять что-то с порта (ответ)? хотя бы в течении какого-нибудь таймаута.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 29.08.2012, 13:26
Barsdg Barsdg вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 24
Репутация: 10
По умолчанию

Дело в том, что прибор соединенный к СОМ1 уже получил себе в память данные, теперь требуется в РОДНОЙ программе - вытащить данные, но (я так понимаю) она не может соединиться с СОМ1, после пользования портом моей программы. ИЛИ я что-то не до понимаю!

Есть ли у кого нибудь листинг программы похожий на HyperTerminal виндовый???

Последний раз редактировалось Barsdg, 29.08.2012 в 13:29.
Ответить с цитированием
  #4  
Старый 29.08.2012, 14:07
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

родная программа читает данные только после отправки из себя или постоянно их ждет? какой Share Mode используется?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 29.08.2012, 14:38
Barsdg Barsdg вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 24
Репутация: 10
По умолчанию

На приборе есть кнопка при нажатии которой приходит процесс сканирования шероховатости и сохранения данных к себе (в прибор) в память прибора. Далее в родной проге есть кнопка при нажатии которой, данные с прибора загружаются в нее.

Так вот мой выше описанный код имитирует нажатие кнопки на самом ПРИБОРЕ, но если я проделываю это не физически, а через мой код, то Родная прога не грузит данные, и выдает сообщение:
http://www.delphisources.ru/forum/at...d=134623615 1
Такое же сообщение появляется когда Родная программа пытается загрузить данные, а прибор Выключен.

Share Mode - не понял вопроса...?
Изображения
Тип файла: bmp untitled.bmp (88.6 Кбайт, 30 просмотров)
Ответить с цитированием
  #6  
Старый 29.08.2012, 14:57
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а при использовании HyperTerminal, после отправки команды из него, в родной программе кнопку нажимаешь чтобы получить данные из прибора? или программа сразу же получает данные?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 29.08.2012, 15:00
Barsdg Barsdg вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
а при использовании HyperTerminal, после отправки команды из него, в родной программе кнопку нажимаешь чтобы получить данные из прибора? или программа сразу же получает данные?

HyperTerminal только посылает команду прибору о старте сканирования, как и мой код.
Ответить с цитированием
  #8  
Старый 29.08.2012, 15:36
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а если запустить свою программу, отправить команду для сканирования и закрыть ее. и только потом в родной программе нажать кнопку получить данные?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 29.08.2012, 15:41
Barsdg Barsdg вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
а если запустить свою программу, отправить команду для сканирования и закрыть ее. и только потом в родной программе нажать кнопку получить данные?
Аналогично, кстати это у меня весь код связанный с com-портом. может я что-то не дописал?
Настройки установлены в самом компоненте.
Ответить с цитированием
  #10  
Старый 29.08.2012, 15:50
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

еще попробовать:
Код:
Str := Str + #13#10;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #11  
Старый 29.08.2012, 15:58
Barsdg Barsdg вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
еще попробовать:
Код:
Str := Str + #13#10;
При этом, команда 'MEAS80' выполняется только 1 раз, более не реагирует.
Чтобы команда сработала, нужно в Родной проге попытаться загрузить данные, конечно результат будет таким же, и только тогда команда 'MEAS80' снова срабатывает.
Ответить с цитированием
  #12  
Старый 29.08.2012, 16:00
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

ну так один раз и посылай ее. только вместо одного \r шли \r\n после слова MEAS80. описания же протокола устройства не выложил...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Barsdg (05.09.2012)
  #13  
Старый 29.08.2012, 16:16
Barsdg Barsdg вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
ну так один раз и посылай ее. только вместо одного \r шли \r\n после слова MEAS80. описания же протокола устройства не выложил...
Я не знаю где взять описание протокола устройства, с отправкой команды по моему проблем нет, здесь проблема в том что Родная прога после моей программы не видит ком-порт. Может как-то нежно по другому разъединиться...
Ответить с цитированием
  #14  
Старый 29.08.2012, 18:52
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

-флушируй порт
-убрать закрытие порта из процедуры отправки и перенести в закрытие формы
-проснифири что передает родная программа и твоя при этом действии
-после закрытия твоей программы что выдаст новый CreateFile?
-что в диспетчере устройств после этого?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Barsdg (05.09.2012)
  #15  
Старый 29.08.2012, 18:52
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

прибор висит на СОМ1, вы со своей программы открываете порт и шлете туда команду (при этом порт СОМ1 штатная программа открыть не может - он занят), закрываете порт - теперь его НИКТО не открыл (в том числе и штатная программа)
после посылки из терминала штатная программа сама по себе открывает СОМ1?
лучше будет воспользоваться Free Com Port Monitor и посмотреть, что шлет штатная программа и что шлется в вашем случае, сравнить и сделать какие-то выводы, а заодно и протокол можно будет как-то понять
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
Этот пользователь сказал Спасибо cotseec за это полезное сообщение:
Barsdg (05.09.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:29.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025