Модуль "Календарь" (часть 6) - GetDateBookEntries
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
от 07 декабря 2007 г.
function TfrmAT_DateBook.GetDateBookEntries(var AEvents: array of TDateBookEvent; AfrmProgress: TfrmProgress): boolean;
var
str, tmp, s: string;
i, k, t: integer;
ModReadCnt, DivReadCnt, tmpDivReadCnt, tmpCnt: integer;
xDateBook: TDateBookEvent;
begin
result:= false;
if not LockDateBook('1') then exit;
if not Set_UCS2_Mode then exit;
{==> AT+MDBR=?
+MDBR: 500,3,64,8,2
}
for i:= Low(AEvents) to High(AEvents) do AEvents[i].index:= MaxInt;
//ModReadCnt:= xDateBookParam.Count mod 30;
//DivReadCnt:= xDateBookParam.Count div 30;
ModReadCnt:= xDateBookParam.Count mod 1;
DivReadCnt:= xDateBookParam.Count div 1;
k:=0;
tmpDivReadCnt:= DivReadCnt;
if ModReadCnt > 0 then inc(DivReadCnt);
AfrmProgress.AdvProgressBar1.Value:= 0;
AfrmProgress.AdvProgressBar1.MaxValue:= xDateBookParam.Count;
AfrmProgress.GradientLabel1.Caption:= at_db_pw_text01;
AfrmProgress.Update;
for t:=1 to DivReadCnt do
begin
if ModReadCnt > 0
then begin
if tmpDivReadCnt = 0 then tmpCnt:= ModReadCnt
//else tmpCnt:= 30;
else tmpCnt:= 1;
end
//else tmpCnt:= 30;
else tmpCnt:= 1;
tmp:= Format('AT+MDBR=%d,%d', [k, (k+tmpCnt-1)]);
Logger('>> ' + tmp);
tmp:= SendATCommand(tmp);
Logger('<< ' + tmp);
if (tmp = '') or (POs('ERROR', tmp) > 0)then break;
{
#$D#$A'+MDBR: 0,003100320033003400350036,1,0,"00:04","06-29-2005",1,"00:00","00-00-2000",1'
#$D#$A'+MDBR: 1,042904400438, 1,1,"14:57","06-29-2005",2,"14:56","06-29-2005",1'
#$D#$A'OK'#$D#$A
}
{
L7e
+MDBR: 0,00520065006E0074,1,1,"10:00","04-14-2007",,"09:55","04-14-2007",4,"11:00","04-14-2007","",0,,,501,1,0,,"00-00-2000"
OK
}
tmp:= Trim(tmp);
Delete(tmp, length(tmp) - 1, 2);
for i:=1 to tmpCnt do
begin
if (tmp <> '') and (length(tmp) > 2)
then begin
str:= ExtractStr(tmp, #13#10);
if (length(tmp) >= 2) and (tmp[1] = #13) and (tmp[2]=#10) then Delete(tmp, 1, 2);
//str:= ExtractStr(tmp, #13#10#13#10);
ExtractStr(str, '+MDBR: ');
xDateBook.index:= strToint(ExtractStr(str, ','));
s:= ExtractStr(str, ',');
s:= UCS2ACSI(s, true);
xDateBook.Title:= s; {***} Logger(Format('DateBook.Title: %s',[s]));
xDateBook.Timed:= ExtractStr(str, ',')[1]; {***} Logger(Format('DateBook.Timed: %s',[xDateBook.Timed]));
xDateBook.IsAlarm:= ExtractStr(str, ',"')[1]; {***} Logger(Format('DateBook.IsAlarm: %s',[xDateBook.IsAlarm]));
xDateBook.StartTime:= ExtractStr(str, '","'); {***} Logger(Format('DateBook.StartTime: %s',[xDateBook.StartTime]));
xDateBook.StartDate:= ExtractStr(str, '",'); {***} Logger(Format('DateBook.StartDate: %s',[xDateBook.StartDate]));
xDateBook.Duration:= ExtractStr(str, ',"'); {***} Logger(Format('DateBook.Duration: %s',[xDateBook.Duration]));
xDateBook.al_time:= ExtractStr(str, '","'); {***} Logger(Format('DateBook.al_time: %s',[xDateBook.al_time]));
xDateBook.al_date:= ExtractStr(str, '",'); {***} Logger(Format('DateBook.al_date: %s',[xDateBook.al_date]));
xDateBook.repeat_ev:= str[1]; {***} Logger(Format('DateBook.repeat_ev: %s',[xDateBook.repeat_ev]));
// ищем запятую, если есть, то это новый тип ежедневника
//+MDBR: 0,00520065006E0074, 1,1,"10:00","04-14-2007", ,"09:55","04-14-2007",4 ,"11:00","04-14-2007", "", 0, , , 501, 1, 0, , "00-00-2000"
if iDateBookType > 0 then
begin
ExtractStr(str, ',"');
xDateBook.EndTime:= ExtractStr(str, '","'); {***} Logger(Format('DateBook.EndTime: %s',[xDateBook.EndTime]));
xDateBook.EndDate:= ExtractStr(str, '",'); {***} Logger(Format('DateBook.EndDate: %s',[xDateBook.EndDate]));
// осталось
//"{мелодия, если есть, то кавычек нет}",0{тип события},{ячейка},{записи},501,1{событие весь день},0{повтор},,"00-00-2000" - надо разбираться
// ячейка
{
+MDBR: 1,04140435043D044C00200440043E043604340435043D0438044F0020041D04300442043004480438,0,1,"00:00","03-14-2007",,
"09:00","03-14-2007",6,"00:00","03-15-2007",002F0062002F006D006F00620069006C0065002F0061007500640069006F002F005200750073002F041E043A04350430043D00200415043B044C043704380020002D002004110435043700200431043E044E002E006D00700033,4,,,501,0,0,,"00-00-2000"
}
//ExtractStr(str, '"');
//ExtractStr(str, '",');
ExtractStr(str, ',');
//0{тип события},{ячейка},{записи},501,1{хз},0{дни},,"00-00-2000" - надо разбираться
s:= ExtractStr(str, ',');
xDateBook.EventType:= strtoint(s); {***} Logger(Format('DateBook.EventType: %d',[xDateBook.EventType]));
//{ячейка},{записи},501,1,0{дни},,"00-00-2000" - надо разбираться
s:= ExtractStr(str, ',');
//{записи},501,1{хз},0{дни},,"00-00-2000" - надо разбираться
s:= UCS2ACSI(s, true);
xDateBook.Cell:= s; {***} Logger(Format('DateBook.Cell: %s',[xDateBook.Cell]));
s:= ExtractStr(str, ',');
//501,1{хз},0{дни},,"00-00-2000" - надо разбираться
s:= UCS2ACSI(s, true);
xDateBook.Records:= s; {***} Logger(Format('DateBook.Records: %s',[xDateBook.Records]));
{??????} s:= ExtractStr(str, ','); //501
s:= ExtractStr(str, ','); //
//1{хз},0{дни},,"00-00-2000" - надо разбираться
xDateBook.xState:= strtoint(s);
s:= ExtractStr(str, ',');
//0{дни},,"00-00-2000" - надо разбираться
xDateBook.Days:= strtoint(s); {***} Logger(Format('DateBook.Days: %d',[xDateBook.Days]));
s:= ExtractStr(str, ',');
//{},"00-00-2000" - надо разбираться
//xDateBook.Repeats:= boolean(strtont(s));
{
ошибка при чтении - длинная строка начинающаяся с '002F0062002F006D.......' is not valid integer valueBeZ, Сегодня, 0:52:48а дай в терминале команду
AT+CSCS=UCS2
AT+MDBL=1
AT+MDBR=0
AT+MDBR=1
AT+MDBR=2
AT+MDBR=3
AT+MDBR=4
AT+MDBR=5Мерль, Сегодня, 0:54:13==> AT+CSCS=UCS2
<==
OK
==> AT+MDBL=1
<==
ERROR
==> AT+MDBR=0
<==
+MDBR: 0,04140435043D044C00200440043E043604340435043D0438044F0020041D04350442043000200410043D0438,0,1,"00:00","01-27-2007",,"12:00","01-27-2007",6,"00:00","01-28-2007","",4,04140435043D044C,043F043E0437043404400430043204380442044C,501,0,0,,"00-00-2000"
OK
==> AT+MDBR=1
<==
+MDBR: 1,04140435043D044C00200440043E043604340435043D0438044F0020041D04300442043004480438,0,1,"00:00","03-14-2007",,"09:00","03-14-2007",6,"00:00","03-15-2007",002F0062002F006D006F00620069006C0065002F0061007500640069006F002F005200750073002F041E043A04350430043D00200415043B044C043704380020002D002004110435043700200431043E044E002E006D00700033,4,,,501,0,0,,"00-00-2000"
OK
==> AT+MDBR=2
<==
+MDBR: 2,04140435043D044C00200440043E043604340435043D0438044F0020041D0438043D044B,0,1,"00:00","02-21-2007",,"12:00","02-21-2007",6,"00:00","02-22-2007","",4,,,501,0,0,,"00-00-2000"
OK
==> AT+MDBR=3
<==
+MDBR: 3,04140440002004250435043B044C043C044B,0,1,"00:00","07-10-2007",,"10:00","07-10-2007",6,"00:00","07-11-2007",002F0062002F006D006F00620069006C0065002F0061007500640069006F002F00540065006C006F006800720061006E006900740065006C002E006D00700033,4,,,501,0,0,,"00-00-2000"
OK
==> AT+MDBR=4
<==
+MDBR: 4,041704430431044B,1,1,"11:00","06-14-2007",,"10:30","06-14-2007",0,"12:00","06-14-2007","",3,,,501,0,0,,"00-00-2000"
OK
==> AT+MDBR=5
<==
OK
}
end;
AEvents[xDateBook.index]:= xDateBook;
end;
end; {for i:=1 to tmpCnt do}
AfrmProgress.AdvProgressBar1.Value:= k;
AfrmProgress.Update;
k:= k+tmpCnt;
dec(tmpDivReadCnt);
end; {for t:=1 to DivReadCnt do}
result:= true;
LockDateBook('0');
end;
Еще записи по теме
- Модуль "P2KFileManager" (часть 9) - UploadFile
- Модуль "Справочник" (часть 39) - RzListView1Change
- Модуль "Будильник" (часть 13) - AlarmClockToBuffer
- Языковой Модуль (часть 2)
- Модуль "Flash_Terminal" (часть 4) - spSkinSpeedButton3Click
- Модуль "P2KApi" (часть 32) - TP2KAPI.File_Read
- Модуль "Новое сообщение" (часть 2) - FormCreate
