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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.10.2010, 17:34
HunteRus HunteRus вне форума
Прохожий
 
Регистрация: 02.10.2010
Адрес: В Питере
Сообщения: 14
Версия Delphi: Delphi5
Репутация: 10
По умолчанию COM - BlueTooth

Решил вот выложить работу с blueTooth

Код:
function PortInit : boolean; //инициализация порта
var
    ct: TCommTimeouts;
    dcb: TDCB;
    comport_arr :^char;
    ptmp        :^char;

    i:integer;
begin

  f := Windows.CreateFile(PChar(comport), GENERIC_READ or
                              GENERIC_WRITE,
                              FILE_SHARE_READ or FILE_SHARE_WRITE,
                              nil, OPEN_EXISTING,
                              FILE_ATTRIBUTE_NORMAL, 0);
  if (f <= 0) or not Windows.SetupComm(f, 2048, 2048)or not
      Windows.GetCommState(f, dcb) then exit; //init error

  dcb.BaudRate := 9600;
  dcb.StopBits := 0;
  dcb.Parity := 2;
  dcb.ByteSize := 8;
  if not Windows.SetCommState(f, dcb)
  or not Windows.GetCommTimeouts(f, ct) then exit; //error
  ct.ReadTotalTimeoutConstant := 50;
  ct.ReadIntervalTimeout := 50;
  ct.ReadTotalTimeoutMultiplier := 1;
  ct.WriteTotalTimeoutMultiplier := 0;
  ct.WriteTotalTimeoutConstant := 10;
  if not Windows.SetCommTimeouts(f, ct)
  or not Windows.SetCommMask(f, EV_RING + EV_RXCHAR + EV_RXFLAG + EV_TXEMPTY)
then exit; //error
  PortInit := true;
end;

function DoneComm: boolean; //закpыть поpт
begin
  DoneComm := Windows.CloseHandle(f);
end;

function PostComm(var Buf; size: word): integer; //пеpедача в поpт
var
        p: pointer;
        i: cardinal;
begin
  p := @Buf;
  result := 0;
  while size > 0 do begin

    if not WriteFile(f, p^, 1, i, nil) then exit;
    inc(result, i); inc(integer(p)); dec(size);
    Application.ProcessMessages;
    end;
  PostComm := result;
end;

function ReadComm(var Buf; size: word): integer; //пpием из поpта
var
        i: cardinal;
        ovr: TOverlapped;
begin
  fillChar(buf, size, 0);
  fillChar(ovr, sizeOf(ovr), 0); i := 0; result := -1;
  if not windows.ReadFile(f, buf, size, i, @ovr) then exit;
  result := i;
  ReadComm := result;
end;

но пишет ошибку минут через 5 работы, кто знает как исправить помогите, заранее благодарен
__________________
Код:
procedure UnleassFor(i: int64) UnleassFor(i + 1);

...

UnleassFor(0);
Бесконечный For
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter