forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_bt (http://forum.boolean.name/showthread.php?t=4624)

Tadeus 04.10.2007 13:57

Re: Lib_bt
 
Не понял, честно говоря :)

Piligrim 04.10.2007 15:45

Re: Lib_bt
 
Итак:
1. Эмуляторы моторолы работают с блютус через сервер impronto, лежит в папочке SDK, поэто и NullPointer вылетает, ведь он не запущен. :)
2. Пример при поиске серверов вылетает т.к. я забыл добавить
procedure no_servers_found; которая вызывается при неудачном поиске серверов, из нее можно вызвать bt.stop; для остановки поиска иначе будет предпринята попытка повторного поиска

aleshka 04.10.2007 16:50

Re: Lib_bt
 
Цитата:

Сообщение от pilgrim
Итак:
1. Эмуляторы моторолы работают с блютус через сервер impronto, лежит в папочке SDK, поэто и NullPointer вылетает, ведь он не запущен. :)
2. Пример при поиске серверов вылетает т.к. я забыл добавить
procedure no_servers_found; которая вызывается при неудачном поиске серверов, из нее можно вызвать bt.stop; для остановки поиска иначе будет предпринята попытка повторного поиска

2. Ага, пасибо, помогло. добавил

procedure no_servers_found;
begin
wait := MenuAppendString('no server found');
delay(1000);
end;

полегчало, вылеты прошли.
Я так понял, что no_servers_found, message_received и т.д. - это callback функции?

1. Эмулятор моторолы был использован как вспомогательное средство ))). В WTK тоже были проблемы без вышепреведенной процедуры ) Ты огласил бы весь их список. И может добавиш флаг активности который устанавливался бы в bt.start и сбрасывался бы в bt.stop

PS: дома потестю работу с комповым донглом, завтра отпишусь.

Piligrim 04.10.2007 18:46

Re: Lib_bt
 
Да это callback функции. Я и стараюсь их все в примере показать. :)
Флаг активности добавлю.

aleshka 05.10.2007 11:44

Re: Lib_bt
 
Вобщем потестил. Прием-отправка на виртуальный компорт всетаки не работает. Телефон находит сервер, подключается к нему, судя по появлению значка подключения как в телефоне так и на компе, но терминалка на компорте предательски молчит ) Выложи плз исходники, буду разбираться в чем дело.

Eddy 05.10.2007 22:24

Re: Lib_bt
 
решил слегка изменить код, теперь не работает. что не так?
program BtProject;
uses bt;
var
cmdOK, clicked : command;
wait, search,exit,service : integer;
bt_servers:array[1..2] of String; {массив под сервера, размер будет переопределен автоматически}
start:boolean;
{вызывается после завершения поиска серверов. содержит список серверов разделенный ||.
временно возвращает только первый найденный}
procedure no_servers_found;
begin
delay(1000);
end;
procedure servers_list(list: integer);
begin
//wait := MenuAppendString(bt_servers[1]); {количество обнаруженных серверов}
drawtext('servers:'+list,50,50);
repaint;
Debug('servers:'+list);
bt.start(bt_servers[1]);{старт соединения с сервером}
end;
{вызывается после успешного установления соединения}
procedure accept_connection;
begin
start:=true;
end;
{вызывается при возникновении ошибок в соединении, пропадании соединения.
автоматически вызывается bt.stop;}
procedure connection_error;
var
cm: command;
begin
showAlert('Bluetooth',
'Ошибка Bluetooth соединения.',
loadImage('/icon.png'),
ALERT_ERROR);
playAlertSound;
cm := createCommand('OK', CM_OK, 1);
addCommand(cm);
repeat
delay(100);
until getClickedCommand <> emptyCommand;
end;
{вызывается при получении сообщения от оппонента}
procedure message_received(msg:String);
begin
if bt.is_client=1 then
drawtext('Na cliente najata'+' ' + (msg),0,0);
else drawtext('Na servere najata'+' ' + (msg),0,0);
Debug(msg);
end;
begin
bt.init;
service:=1;
while getkeypressed= ke_none do begin
drawtext('nazmite 1 chtob stat serverom',0,0);
repaint;
if getkeypressed=ke_key1 then
service:=1;
if getkeypressed=ke_key2 then
service:=2
end;
if service=1 then
bt.wait_connection('ME');
if service=2 then
bt.search_connection;
if start then begin
if bt.is_client=1 then drawtext('true client',0,0);
if bt.is_client<>1 then drawtext('true server',0,0);
end;
while getkeypressed<>ke_key0 do begin
setcolor(255,255,255);
fillrect(0,0,240,320);
setcolor(0,0,0);
bt.send_message('1');
repaint;
end;
bt.stop; {отключаем соединение}
end.

Piligrim 05.10.2007 23:21

Re: Lib_bt
 
вот так лучше:
while not start do delay(100);
while getkeypressed<>ke_key0 do begin
у тебя соединение ещ не успевает установиться, а ты уже посылать что-то пытаешься

Eddy 06.10.2007 00:14

Re: Lib_bt
 
Спасибо!
Вопрос: поддерживается ли одновременное соединение с несколькими серверами? Или это можно реализовать самому с помощью либы?

Piligrim 06.10.2007 00:52

Re: Lib_bt
 
в данный момент многосессионность не реализована, но легко добавляется.
ЗЫ: обычно у одного сервера много клиентов, а тут наоборот надо ;)

IVenoMI 09.10.2007 00:41

Re: Lib_bt
 
Хех... Увидев эту либу стряхнул пыль с дистрибутива МП :) Все то что заявслено работает. наскольо удалось потестить :) Спарка SE w810i и Samsung i320

MotoMustanger 29.10.2007 22:38

Re: Lib_bt
 
Появилось несколько вопросов:
1.Как сделать так чтобы два разных bluetooth чата не видели друг друга?
2.Каким образом можно узнать, поддерживает ли телефон JSR82?
3.Не работает этот код:
Код:

//вызывается при получении сообщения от оппонента
procedure message_received(msg:String);
begin
.............
if getchar(msg,0)='%' then
begin
if getchar(msg,2)='%' then
begin                       
kx:=stringtointeger(copy(msg,1,2));       
ky:=stringtointeger(copy(msg,3,length(msg)-1));
end
else if getchar(msg,3)='%' then
begin
kx:=stringtointeger(copy(msg,1,3));                ky:=stringtointeger(copy(msg,4,length(msg)-1));
end;
btcord:=true;
end;
end;

Procedure game;
begin
repeat
...........
bthod:=false;
btcord:=false;
repeat
clicked:=getclickedcommand;
kclicked:=getkeypressed;
if ((kclicked=KE_KEY5) or (btcord=true)) and (a[kx,ky]='0')then
begin
...............
a[kx,ky]:=hod;
if (gametype='bt') and (btcord=false) then
begin                               
mesag:='%'+kx+'%'+ky+' ';                               
bt.send_message(mesag);
end;
bthod:=true;
if hod='1' then hod:='2'
else if hod='2' then hod:='1';
end
until (kclicked<>KE_NONE) or (clicked=back) or (firstN=true) or (clicked=svgm) or (bthod=true);
until (clicked=back) or (clicked=svgm);
end;

После посылки координаты(нажатии на 5) прогу выбивает в меню на том теле, с которого её послали (хотя координата все же посылается но не распознается на другом телефоне). Без блутуза все хорошо работает, не выбивает

Eddy 30.10.2007 13:40

Re: Lib_bt
 
Вот давненько написал
http://slil.ru/24965102
проверяет имеется ли класс, возвращает циферку, просьба не стебаться над реализацией)
!!! SE w810i и Samsung i320 !!!
Сэр IVenomI, не могли бы вы сказать, что за ява машина стоит на самсунге, и заодно потестить выше приведенный мидлет? Насколько мне известно ява-машины для мобильной винды не поддерживают большинство жср-ов(включая синийзуб). Да и на jbenchmark показанно, что нет синего зуба.

MotoMustanger 30.10.2007 18:40

Re: Lib_bt
 
Нее. Это не то. Мне нужно чтобы моя прога определяла, поддерживает ли телефон jsr82 и можно было играть по блутуз если есть такая поддержка. Потому что у меня нету jsr82 и она просто зависает. Делается это функцией getproperty но параметра я не знаю

Eddy 30.10.2007 20:50

Re: Lib_bt
 
ой извиняюсь, там уже скомпиленная версия. забыл)
выдери оттуда либу trybluetooth
код:
program bluetooth;
uses trybluetooth;
var i:integer;
begin
i:=getbluetooth;
drawText('Bluetooth Support:', 0, 0);
if i=10 then drawtext('True',getstringwidth('Bluetooth Support:'),0)
else drawtext('False',getstringwidth('Bluetooth Support:'),0);
while getkeypressed<>ke_key0 do begin
drawtext('Press key "0" to exit',0,getstringheight('B'));
repaint;
end;
end.
просьба не стебаться над реализацией

Piligrim 30.10.2007 23:39

Re: Lib_bt
 
для обеспечения взаимоневидимости надо добавить кое-что в либу.
чего еще там не хватает? добавлю до кучи :)


Часовой пояс GMT +4, время: 11:49.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot