Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с COM портом 
:(
    Опции темы
sazon
Дата 30.3.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.3.2009

Репутация: нет
Всего: нет



Здрасти...Решил написать чисто для себя программу: есть девайс, который связывается с компом через 232 интерфейс, в ком порт короче, есть описания команд( reset, send_card и т.д) в мануале к этому девайсу и естьжелание написать программку, которая отсылала бы  эти команды в порт и могла считывать то, что прислал в порт этот девайс. сначала я замутил все это тупо с перемычками( замнул прием и передачу), вроде бы все пахало более менее...с девайсом все намного понятно хитрее. передача не идет( количество отправленных байтов 0), а с порта считывается то что я отправлял...причем вроде все настроил под устройство: паритет, скорость. стоповые биты, размер байта. может быть дааная проблема связана с управлением потока: аппаратное, программное ?...просто в делфе не очень понятно как это настраивается( управление потоком)), все коды в инете прктически на си, а там вроде это реализовывается по- иному.
кстати передачу делаю синхронную,  отослал -  принял...заранее благодарен.

PM MAIL   Вверх
SneG0K
Дата 30.3.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: нет
Всего: 54



Все коды в инете работают с использованием WinAPI CreateProcess() и честно плевать на каком они языке. По поводу передачи - ты бы код показал и схему девайса, ибо на сколько я знаю, ничего лишнего замыкать не надо.
PM WWW Skype   Вверх
sazon
Дата 30.3.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.3.2009

Репутация: нет
Всего: нет



вот прием и передача
Код

function Tcomport.writedata(var comand: string): boolean;
var
     written: DWORD;
begin


  result:= false;
  new(fcomand);
  Fcomand^:= Pchar(comand);
  writefile(FHandle,Fcomand,length(comand),written,0);
  if written = length(comand) then
    result:= true
  else result:= false;
  dispose(Fcomand);
  Fcomand:= nil;

end;

function Tcomport.readdata(var buf : string): boolean;
var tem: dword;
    comstat: Tcomstat;
    num: integer;
    b: ^Pchar;
    temp: dword;
begin
  result:= false;
  ClearCommError(Fhandle,tem,@comstat);
  num:= comstat.cbInQue;

  if num > 0 then
  begin
    result:= true;
    new(b);
    readfile(Fhandle,b,num,temp,0 );
    buf:= b^;
    dispose(b);
    b:= nil;
  end;

end;

Добавлено @ 14:29
заранее извиняюсь за некое убожество кода...замыкал я когда тестил свою прогу без девайса; замыкал 2и 3-ий пин ком порта, смотрел будет ли у меня считанная информация совпадат с отосланной..

M
Rrader
sazon, не забываем пользоваться кнопочкой "Код"


Это сообщение отредактировал(а) Rrader - 30.3.2009, 14:44
PM MAIL   Вверх
sazon
Дата 30.3.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.3.2009

Репутация: нет
Всего: нет



и еще ребят, извиняюсь за ламерский такой вопрос...у меня в этом коде такая вещь происходит: если производить троссировку f7 то все происходит норм, передается, принимается...если просто запускаю прогу, то происходит ошибка: первую команду(какой-ть набор символов в виде стринга) он не считывает, второй раз сичтывает то что я порту и послал. но в юуфере приема находятся езе байты первой команды, в третий раз выдает ошибку invalid pointer operation
PM MAIL   Вверх
SneG0K
Дата 30.3.2009, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: нет
Всего: 54



У меня с сокетами и с использованием многих API была проблема со string
попробуй вместо string выделять array of char
PM WWW Skype   Вверх
Romikgy
Дата 31.3.2009, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



sazon, товарисч у вас явная проблема с работой с динамическими данными 
Код

function Tcomport.writedata(var comand: string): boolean;
var
     written: DWORD;
begin
  result:= false;
  
  writefile(FHandle,comand[1],length(comand),written,0);
  if written = length(comand) then
    result:= true
  else result:= false;
 
  
end;



Код

function Tcomport.readdata(var buf : string): boolean;
var tem: dword;
    comstat: Tcomstat;
    num: integer;
    b: ^Pchar;
    temp: dword;
begin
  result:= false;
  ClearCommError(Fhandle,tem,@comstat);
  num:= comstat.cbInQue;
  if num > 0 then
  begin
    result:= true;
    stelength(buf,num);
    readfile(Fhandle,buf[1],num,temp,0 );
    
  end;
end;



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
mitka
Дата 2.4.2009, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 29.3.2009

Репутация: нет
Всего: нет



Народ, извиняюсь за назойливость и благодарю всех за помощь.Возник такой вопрос: по умолчанию какое управление потоком -отсутствует, аппартаное или программное...как я понял - оно отсутствует? или я не прав
PM MAIL   Вверх
Romikgy
Дата 2.4.2009, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



по идее аппаратное по умолчанию


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Virtuals
Дата 3.4.2009, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 4
Всего: 11



mitka, 
по умолчанию то которое выставленно в диспетчере устройств  smile , тоесть любое, не стоит на это надеется.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0819 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.