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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с Samsung X100, Нет ответа от телефона. 
:(
    Опции темы
Danya
  Дата 5.8.2005, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Уважаемые программисты. Этот код находится в FAQ. Но на всякий случай вот он:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    CheckBox1: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }


  end;

var
  Form1: TForm1;
  ComFile: THandle; //Хэндл создаваемого нами файла
  ComString: string; //(COM1, COM2 или COM3)
  ComSpeed: Integer; //Скорость взаимодействия с COM-портом
  Status: Boolean; //подключен или не подключен (чтобы в дальнейшем проверять статус
implementation

{$R *.dfm}

function OpenCOMPort: Boolean;
var DeviceName: array[0..80] of Char; 
 Device: string;
begin 
 Device := ComString; 
 StrPCopy(DeviceName, Device); 
 ComFile := CreateFile(DeviceName, 
   GENERIC_READ or GENERIC_WRITE, 
   0, 
   nil, 
   OPEN_EXISTING, 
   FILE_ATTRIBUTE_NORMAL, 
   0); 
 if ComFile = INVALID_HANDLE_VALUE then 
   begin 
     Result := False; 
     Status := Result; 
   end 
 else 
   begin 
     Result := True; 
     Status := Result; 
   end; 

end; 

function SetupCOMPort: Boolean;
const RxBufferSize = 256; 
 TxBufferSize = 256; 
var DCB: TDCB; 
 Config: string; 
 CommTimeouts: TCommTimeouts; 
begin 
 Result := True; 
 if not SetupComm(ComFile, RxBufferSize, TxBufferSize) then 
   Result := False; 
 if not GetCommState(ComFile, DCB) then 
   Result := False; 

 Config := 'baud=' + IntToStr(ComSpeed) + ' parity=n data=8 stop=1'; //Устанавливаем скорость 
 if not BuildCommDCB(@Config[1], DCB) then 
   Result := False; 
 if not SetCommState(ComFile, DCB) then 
   Result := False; 

 with CommTimeouts do 
   begin 
     ReadIntervalTimeout := 0; 
     ReadTotalTimeoutMultiplier := 0; 
     ReadTotalTimeoutConstant := 1000; 
     WriteTotalTimeoutMultiplier := 0; 
     WriteTotalTimeoutConstant := 1000; 
   end; 
 if not SetCommTimeouts(ComFile, CommTimeouts) then 
   Result := False; 
end;


procedure Connect;
begin
 ComString := 'COM1';
 ComSpeed := 19200;
 if OpenCOMPort = true then //Открываем порт…
   if SetupCOMPort = true then //…и конфигурируем его
     Form1.Memo1.Lines.Add('Подключились...');
 Sleep(1500); //засыпаем на полторы секунды чтобы дать время на соединение
end;

procedure Disconnect;
begin
 CloseHandle(ComFile);
 Form1.Memo1.Lines.Add('Отключились.');
end;


procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
   Connect
 else 
   Disconnect;

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   if Status = true then //При выходе из программы отключаемся
   Disconnect;

end;

procedure TForm1.Button1Click(Sender: TObject);
var BytesWritten: DWORD;
 s: string;
 d: array[1..1500] of Char;
 BytesRead: DWORD;
 i: Integer;
 Result: string;
begin
 s := Edit1.Text; //Берём команды из Edit1…
 s := s;
 WriteFile(ComFile, s[1], Length(s), BytesWritten, nil); //…и посылаем их телефону
 Result := '';
 if not ReadFile(ComFile, d, SizeOf(d), BytesRead, nil) then
   begin
     MessageDlg('Ошибка чтения!', mtError, [mbOK], 0);
       exit;
   end;

 s := '';
 for i := 1 to BytesRead do //Считываем ответ от телефона
   s := s + d[i];
 Result := s;
 Memo1.Lines.Add(Result); //Выводим ответ от телефона в Memo

end;

end.


Я не получаю ответа от телефона. Что я делаю не правельно ?

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  src.rar 12,19 Kb
PM MAIL   Вверх
Akella
Дата 12.8.2005, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



попробуй подключаться к COM-порту на других скоростях, например 115200
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0696 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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