Создание программного обеспечения организации учета и контроля парковок на платных стоянках посредством СМС-услуг

Анализ теоретических сведений и программных инструментов для разработки системы СМС-парковки. Разработка алгоритмов и программы автоматизированной системы, проектирование ее базы данных. Особенности общей структуры пользовательского интерфейса программы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 26.05.2018
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Для эксплуатации ЭВМ следует предусматривать следующие помещения:

· машинный зал, помещение для размещения сервисной и периферийной аппаратуры, помещение для хранения запасных деталей, инструментов, приборов (ЗИП);

· помещения для размещения приточно-вытяжных вентиляторов;

· помещение для персонала;

· помещение для приема-выдачи информации.

Основные помещения ВЦ располагаются в непосредственной близости друг от друга. Их оборудуют вентиляцией и искусственным освещением. К помещению машинного зала и хранения магнитных носителей информации предъявляются особые требования. Площадь машинного зала должна соответствовать площади, необходимой по заводским техническим условиям данного типа ЭВМ.

Высота зала над технологическим полом до подвесного потолка должна быть 3-3,5м. Расстояние между подвесным и основным потолками при этом должно быть 0,5-0,8м. Высоту подпольного пространства принимают равной 0,2-0,6м.

В ВЦ, как правило, применяется боковое естественное освещение. Рабочие комнаты и кабинеты должны иметь естественное освещение. В остальных помещениях допускается искусственное освещение.

В тех случаях, когда одного естественного освещения не хватает, устанавливается совмещенное освещение. При этом дополнительное искусственное освещение применяется не только в темное, но и в светлое время суток.

Искусственное освещение по характеру выполняемых задач делится на рабочее, аварийное, эвакуационное [13].

Рациональное цветовое оформление помещения направлено на улучшение санитарно-гигиенических условий труда, повышение его производительности и безопасности. Окраска помещений ВЦ влияет на нервную систему человека, его настроение, и в конечном счете на производительность труда. Основные производственные помещения целесообразно окрашивать в соответствии с цветом технических средств. Освещение помещения и оборудования должно быть мягким, без блеска.

Снижение шума, создаваемого на рабочих местах ВЦ внутренними источниками, а также шума, проникающего извне, является очень важной задачей. Снижение шума в источнике излучения можно обеспечить применением упругих прокладок между основанием машины, прибора и опорной поверхностью. В качестве прокладок используются резина, войлок, пробка, различной конструкции амортизаторы. Под настольные шумящие аппараты можно подкладывать мягкие коврики из синтетических материалов, а под ножки столов, на которых они установлены - прокладки из мягкой резины, войлока, толщиной 6-8мм. Крепление прокладок возможно путем приклейки их к опорным частям.

Возможно также применение звукоизолирующих кожухов, которые не мешают технологическому процессу. Не менее важным для снижения шума в процессе эксплуатации является вопрос правильной и своевременной регулировки, смазывания и замены механических узлов шумящего оборудования [14].

Рациональная планировка помещения, размещения оборудования в ВЦ является важным фактором, позволяющим снизить шум при существующем оборудовании ЭВМ. При планировке ВЦ машинный зал и помещение для сервисной аппаратуры необходимо располагать вдали от шумящего и вибрирующего оборудования.

Снижение уровня шума, проникающего в производственное помещение извне, может быть достигнуто увеличением звукоизоляции ограждающих конструкций, уплотнением по периметру притворов окон, дверей.

Таким образом для снижения шума создаваемого на рабочих местах внутренними источниками, а также шума, проникающего извне, следует:

· ослабить шум самих источников (применение экранов, звукоизолирующих кожухов);

· снизить эффект суммарного воздействия отраженных звуковых волн (звукопоглощающие поверхности конструкций);

· применять рациональное расположение оборудования;

· использовать архитектурно-планировочные и технологические решения изоляции источников шума.

2.5 Противопожарная защита [13]

Пожары в ВЦ представляют особую опасность, так как сопряжены с большими материальными потерями. Характерная особенность ВЦ - небольшие площади помещений. Как известно, пожар может возникнуть при взаимодействии горючих веществ, окисления и источников зажигания. В помещениях ВЦ присутствуют все три основные фактора, необходимые для возникновения пожара.

Горючими компонентами на ВЦ являются: строительные материалы для акустической и эстетической отделки помещений, перегородки, двери, полы, перфокарты и перфоленты, изоляция кабелей и др.

Противопожарная защита - это комплекс организационных и технических мероприятий, направленных на обеспечение безопасности людей, на предотвращение пожара, ограничение его распространения, а также на создание условий для успешного тушения пожара.

Источниками зажигания в ВЦ могут быть электронные схемы от ЭВМ, приборы, применяемые для технического обслуживания, устройства электропитания, кондиционирования воздуха, где в результате различных нарушений образуются перегретые элементы, электрические искры и дуги, способные вызвать возгорание горючих материалов.

В современных ЭВМ имеет место быть очень высокая плотность размещения элементов электронных схем. В непосредственной близости друг от друга располагаются соединительные провода, кабели. При протекании по ним электрического тока выделяется значительное количество теплоты. При этом возможно оплавление изоляции. Для отвода избыточной теплоты от ЭВМ служат системы вентиляции и кондиционирования воздуха. При постоянном действии эти системы представляют собой дополнительную пожарную опасность.

Энергоснабжение ВЦ осуществляется от трансформаторной станции и двигатель-генераторных агрегатов. На трансформаторных подстанциях особую опасность представляют трансформаторы с масляным охлаждением. В связи с этим предпочтение следует отдавать сухим трансформаторам.

Пожарная опасность двигатель-генераторных агрегатов обусловлена возможностью коротких замыканий, перегрузки, электрического искрения. Для безопасной работы необходим правильный расчет и выбор аппаратов защиты. При проведении обслуживающих, ремонтных и профилактических работ используются различные смазочные вещества, легковоспламеняющиеся жидкости, прокладываются временные электропроводники, ведется пайка и чистка отдельных узлов. Возникает дополнительная пожарная опасность, требующая дополнительных мер пожарной защиты. В частности, при работе с паяльником следует использовать несгораемую подставку с несложными приспособлениями для уменьшения потребляемой мощности в нерабочем состоянии [13].

Для большинства помещений ВЦ установлена категория пожарной опасности В.

Одной из наиболее важных задач пожарной защиты является защита строительных помещений от разрушений и обеспечение их достаточной прочности в условиях воздействия высоких температур при пожаре. Учитывая высокую стоимость электронного оборудования ВЦ, а также категорию его пожарной опасности, здания для ВЦ и части здания другого назначения, в которых предусмотрено размещение ЭВМ, должны быть 1 и 2 степени огнестойкости.

Для изготовления строительных конструкций используются, как правило, кирпич, железобетон, стекло, металл и другие негорючие материалы. Применение дерева должно быть ограничено, а в случае использования, необходимо пропитывать его огнезащитными составами. В ВЦ противопожарные преграды в виде перегородок из несгораемых материалов устанавливают между машинными залами.

К средствам тушения пожара, предназначенных для локализации небольших возгораний, относятся пожарные стволы, внутренние пожарные водопроводы, огнетушители, сухой песок, асбестовые одеяла и т.п.

В зданиях ВЦ пожарные краны устанавливаются в коридорах, на площадках лестничных клеток и входов. Вода используется для тушения пожаров в помещениях программистов, библиотеках, вспомогательных и служебных помещениях. Применение воды в машинных залах ЭВМ, хранилищах носителей информации, помещениях контрольно-измерительных приборов ввиду опасности повреждения или полного выхода из строя дорогостоящего оборудования возможно в исключительных случаях, когда пожар принимает угрожающе крупные размеры. При этом количество воды должно быть минимальным, а устройства ЭВМ необходимо защитить от попадания воды, накрывая их брезентом или полотном.

Для тушения пожаров на начальных стадиях широко применяются огнетушители. По виду используемого вещества огнетушители подразделяются на следующие основные группы:

· Пенные огнетушители, применяются для тушения горящих жидкостей, различных материалов, конструктивных элементов и оборудования, кроме электрооборудования, находящегося под напряжением.

· Газовые огнетушители, применяются для тушения жидких и твердых веществ, а также электроустановок, находящихся под напряжением.

· В производственных помещениях ВЦ применяются главным образом углекислотные огнетушители, достоинством которых является высокая эффективность тушения пожара, сохранность электронного оборудования, диэлектрические свойства углекислого газа, что позволяет использовать эти огнетушители даже в том случае, когда не удается обесточить электроустановку сразу.

Для обнаружения начальной стадии загорания и оповещения службы пожарной охраны используют системы автоматической пожарной сигнализации (АПС). Кроме того, они могут самостоятельно приводить в действие установки пожаротушения, когда пожар еще не достиг больших размеров. Системы АПС состоят из пожарных извещателей, линий связи и приемных пультов (станций).

Эффективность применения систем АПС определяется правильным выбором типа извещателей и мест их установки. При выборе пожарных извещателей необходимо учитывать конкретные условия их эксплуатации: особенности помещения и воздушной среды, наличие пожарных материалов, характер возможного горения, специфику технологического процесса и т.п.

В соответствии с “Типовыми правилами пожарной безопасности для промышленных предприятий”, залы ЭВМ, помещения для внешних запоминающих устройств, подготовки данных, сервисной аппаратуры, архивов, копировально-множительного оборудования и т.п. необходимо оборудовать дымовыми пожарными извещателями. В этих помещениях в начале пожара при горении различных пластмассовых, изоляционных материалов и бумажных изделий выделяется значительное количество дыма и мало теплоты.

В других помещениях ВЦ, в том числе в машинных залах дизель-генераторов и лифтов, трансформаторных и кабельных каналах, воздуховодах допускается применение тепловых пожарных извещателей.

Объекты ВЦ, кроме АПС, необходимо оборудовать установками стационарного автоматического пожаротушения. Наиболее целесообразно применять в ВЦ установки газового тушения пожара, действие которых основано на быстром заполнении помещения огнетушащим газовым веществом с резким снижением содержания в воздухе кислорода.

Пожарам в ВЦ должно уделяться особое внимание, так как пожары в ВЦ сопряжены с опасностью для человеческой жизни и большими материальными потерями [14].

Заключение

В процессе написания выпускной квалификационной работы были проделаны следующие действия:

1. Подробно изучен весь процесс работы автопарковок города

2. Были изучены процесс доступа к GSM модемам из среды программирования Delphi 2010, управление процессом отправки и получения СМС сообщений посредством данной системы.

3. Исходя из потребностей, были изучены новые компоненты Delphi 2010, применены при разработке программного средства.

4. На основе полученных данных была спроектирована база данных, составлены отчеты.

5. После получения информации о предпочтениях и требованиях оператора парковки, было создано программное обеспечение.

6. С учетом поправок и замечаний программа была доведена до конечной версии, которая наиболее максимально удовлетворяет требованиям управляющего автопарковки.

Так как программа была разработана в сотрудничестве с управляющим сотрудником автопарковок, я считаю, что этот программный продукт может быть с успехом применен в автопарковках Узбекистана. Он позволит упростить труд оператора автопарковок, повысить эффективность его работы, сделать удобным управление автопарковками.

В результате работы было разработано программное обеспечене организации учета и контроля парковок на платных стоянках посредством СМС услуг, которое в значительной степени упростит процесс пополнения бюджета города, повышение комфорта для автовладельцев, минимализации участия персонала, экономия времени для автовладельцев.

Литература

1. Каримов И.А. "Мировой финансово-экономический кризис, пути и меры по его преодолению в условиях Узбекистана", Ташкент, Узбекистон, 2009.

2. Каримов И.А. Обеспечить поступательное и устойчивое развитие страны - важнейшая наша задачи. - Т.17. - Т, Ўзбекистон - 2009г. - 56 с.

3. Фаронов В.В. "Delphi 7. Учебный курс", М.: Изд. Молчалова С.В., 2004г. - 376 с.

4. Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем. - М.: Финансы и статистика, 1989 г. - 508 с.

5. Мартин Дж. Организация баз данных в вычислительных системах. - М.: Мир, 2000г. - 254 с.

6. Каратыгин С.А. Аccеss 2000. Руководство ползователя с примерами. - М.: Лаборатория Базовых Знаний, 2000г. - 376 с.

7. Бекаревич Ю.Б., Пушкина Н.В. СУБД Аccеss для Windows XP в примерах. СПб.: ВНУ-Санкт-Петербург. 2008. - 400 с.

8. Энсор Д. Проектирование баз данных К.: ВНВ-2000 г. - 265с.

9. Диго С.М. "Базы данных Проектирование и использование". издательство "Финансы и статистика", 2005 г. - 592 с.

10. Коннолли Т., Бегг К., Страчан А. Базы данных: проектирование, реализация, сопровождение. Теория и практика, 2-е изд.: Пер. с англ.: Уч. пос. - М.: Изд. дом "Вильямс", 2000. - 1120 с.

11. Титоренко Г.А. Информационные технологии управления.М., Юнити: 2002. - 221 с.

12. Мешков В.А. "Генератор отчетов Fast Report. Руководство пользователя", М. Мир, 2004 г. - 145с.

13. Мельникова В.В. Защита информации в компьютерных системах. Финансы и статистика, 1997г. - 866 с.

14. Кудратов А., Ганиев Т. и др. Безопасность жизнедеятельности, Тошкент, Ало?ачи, 2005

15. http://www.lvmtechnology.com Автоматизированная система управления парковками

16. http://habrahabr.ru Отправка SMS с 3G/GSM модема

17. E. Бадло, С. Бадло. OPC клиент-сервер своими руками. Часть 2 или… Интеграция GSM модема в любую SCADA. - Радиолюбитель, 2010, №6, с.22-26.

18. http://www.segodnya.ua Sms-парковки появились только в центре Киева

Приложение. Код программы

unit MainForm;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, ComCtrls, ExtCtrls, Menus, StdCtrls, ImgList, ToolWin,

DBCtrls, XPMan,

{$IFDEF ASDLL} GSM_Main, {$ENDIF}

GSM_Intf, Spin;

type

TForm1 = class (TForm)

StatusBar1: TStatusBar;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

DBGrid1: TDBGrid;

ControlBar1: TControlBar;

ToolBar1: TToolBar;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ImageList1: TImageList;

ComboBox1: TComboBox;

DBCheckBox1: TDBCheckBox;

XPManifest1: TXPManifest;

Label1: TLabel;

ControlBar2: TControlBar;

ToolBar2: TToolBar;

ToolButton4: TToolButton;

ToolButton5: TToolButton;

ToolButton6: TToolButton;

ComboBox2: TComboBox;

DBGrid2: TDBGrid;

Memo: TMemo;

Panel1: TPanel;

InitializationBtn: TButton;

Splitter1: TSplitter;

ScanSerialPortsBtn: TButton;

OpenBtn: TButton;

PortsBox: TComboBox;

DeviceInfoBtn: TButton;

GetCurrentPortSettingsBtn: TButton;

GroupBox1: TGroupBox;

Label2: TLabel;

Label3: TLabel;

PhoneNumberEdit: TEdit;

SmsTextEdit: TEdit;

SendSmsBtn: TButton;

ConfirmedCB: TCheckBox;

TransCB: TCheckBox;

FinalizationBtn: TButton;

Button4: TButton;

GroupBox3: TGroupBox;

Label4: TLabel;

MemTypesCB: TComboBox;

IsMemoryTypeExistsBtn: TButton;

MemoryStatusBtn: TButton;

ReadFromMemoryBtn: TButton;

MessIndexSE: TSpinEdit;

GetMessageInfoBtn: TButton;

DeleteMessageBtn: TButton;

ClearMemoryBtn: TButton;

Timer1: TTimer;

ToolButton7: TToolButton;

Label5: TLabel;

Label6: TLabel;

DateTimePicker2: TDateTimePicker;

DateTimePicker1: TDateTimePicker;

ToolButton8: TToolButton;

Timer2: TTimer;

CheckBox1: TCheckBox;

ToolButton9: TToolButton;

procedure ToolButton1Click (Sender: TObject);

procedure ToolButton2Click (Sender: TObject);

procedure DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

procedure ComboBox1Change (Sender: TObject);

procedure ToolButton6Click (Sender: TObject);

procedure InitializationBtnClick (Sender: TObject);

procedure ScanSerialPortsBtnClick (Sender: TObject);

procedure FinalizationBtnClick (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure OpenBtnClick (Sender: TObject);

procedure DeviceInfoBtnClick (Sender: TObject);

procedure GetCurrentPortSettingsBtnClick (Sender: TObject);

procedure SendSmsBtnClick (Sender: TObject);

procedure IsMemoryTypeExistsBtnClick (Sender: TObject);

procedure MemoryStatusBtnClick (Sender: TObject);

procedure ReadFromMemoryBtnClick (Sender: TObject);

procedure GetMessageInfoBtnClick (Sender: TObject);

procedure DeleteMessageBtnClick (Sender: TObject);

procedure ClearMemoryBtnClick (Sender: TObject);

procedure Timer1Timer (Sender: TObject);

procedure Timer2Timer (Sender: TObject);

procedure ToolButton9Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure Print (const aStr: AnsiString); overload;

procedure Print (const aFunc: AnsiString; aResultCode: DWORD); overload;

end;

var

Form1: TForm1;

implementation

uses datamodul, edit_view;

{$R *. dfm}

procedure DoSmsReceived (aMemoryType: DWORD; aMessageID: DWORD); stdcall;

begin

Form1. Print (' [СМС]: MemType='+IntToStr (aMemoryType) +', MessID='+IntToStr (aMessageID));

end;

procedure DoRingReceived (aFromPhone: PChar; aSize: DWORD); stdcall;

begin

Form1. Print ('Ring received: '+aFromPhone);

end;

procedure TForm1. Print (const aStr: AnsiString);

begin

Memo. Lines. Add (aStr);

Memo. Invalidate;

end;

procedure TForm1. Button4Click (Sender: TObject);

begin

Memo. Clear;

end;

procedure TForm1. ClearMemoryBtnClick (Sender: TObject);

var

Res: LongInt;

MemType: DWORD;

begin

{ тут воспользуемся тем, что ItemIndex по значению соответствует и типу памяти }

MemType: = DWORD (MemTypesCB. ItemIndex);

Res: = Gsm_ClearMemory (MemType,nil);

// if Res = GSM_OK then Print (MemTypesCB. Items [MemType] +': всего '+IntToStr (MemTotal) +', исп.: '+IntToStr (MemUsed)) else

if Res = GSM_ERR_NO_MEM then Print (MemTypesCB. Items [MemType] +': НЕ существует')

else Print ('Gsm_ClearMemory',Res);

end;

procedure TForm1.comboBox1Change (Sender: TObject);

var

k: byte;

begin

if ComboBox1. ItemIndex=0 then

datm. UserTable. Filtered: =false

else

datm. UserTable. Filtered: =true;

if ComboBox1. ItemIndex=1 then k: =1 else k: =0;

datm. UserTable. Filter: ='status='+inttostr (k);

end;

procedure TForm1. DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

// if Selected then

with DBGrid1 do

begin

if datm. UserTable. FieldByName ('status'). AsBoolean then

Canvas. Brush. Color: =$FFFBF0

else

canvas. Brush. Color: =clWhite;

Canvas. Font. Color: =clBlack;

DefaultDrawColumnCell (Rect, DataCol, Column, State);

end;

end;

procedure TForm1. DeleteMessageBtnClick (Sender: TObject);

var

Res: LongInt;

MemType,MemIndex,MemUsed,MemTotal: DWORD;

begin

{ тут воспользуемся тем, что ItemIndex по значению соответствует и типу памяти }

MemType: = DWORD (MemTypesCB. ItemIndex);

MemIndex: = DWORD (MessIndexSE. Value);

Res: = Gsm_DeleteMessage (MemType,MemIndex);

if Res = GSM_OK then

begin

Print (' ['+IntToStr (MemIndex) +']: удалено');

{ выводим статус памяти }

Res: = Gsm_MemoryStatus (MemType,MemUsed,MemTotal);

if Res = GSM_OK then Print (MemTypesCB. Items [MemType] +': всего '+IntToStr (MemTotal) +', исп.: '+IntToStr (MemUsed)) else

if Res = GSM_ERR_NO_MEM then Print (MemTypesCB. Items [MemType] +': НЕ существует')

else Print ('Gsm_MemoryStatus',Res);

end else

if Res = GSM_ERR_NO_MEM then Print (MemTypesCB. Items [MemType] +': НЕ существует')

else Print ('Gsm_DeleteMessage',Res);

end;

procedure TForm1. DeviceInfoBtnClick (Sender: TObject);

const

BUF_LEN = 256;

var

Res: DWORD;

aDeviceManufacturer: array [0. BUF_LEN-1] of AnsiChar;

aDeviceName: array [0. BUF_LEN-1] of AnsiChar;

aDeviceVersion: array [0. BUF_LEN-1] of AnsiChar;

aDeviceIMEI: array [0. BUF_LEN-1] of AnsiChar;

begin

Res: = Gsm_DeviceManufacturer (@aDeviceManufacturer,BUF_LEN);

if Res <> GSM_OK then

begin

Print ('Gsm_DeviceManufacturer',Res);

Exit;

end;

Print ('Производитель: '+aDeviceManufacturer);

Res: = Gsm_DeviceName (@aDeviceName,BUF_LEN);

if Res <> GSM_OK then

begin

Print ('Gsm_DeviceName',Res);

Exit;

end;

Print (' Устройство: '+aDeviceName);

Res: = Gsm_DeviceVersion (@aDeviceVersion,BUF_LEN);

if Res <> GSM_OK then

begin

Print ('Gsm_DeviceVersion',Res);

Exit;

end;

Print (' Устройство: '+aDeviceVersion);

Res: = Gsm_DeviceIMEI (@aDeviceIMEI,BUF_LEN);

if Res <> GSM_OK then

begin

Print ('Gsm_DeviceIMEI',Res);

Exit;

end;

Print (' IMEI: '+aDeviceIMEI);

end;

procedure TForm1. FinalizationBtnClick (Sender: TObject);

begin

Print ('Gsm_Finalization',Gsm_Finalization);

end;

procedure TForm1. GetCurrentPortSettingsBtnClick (Sender: TObject);

var

Res: DWORD;

PortNo: DWORD;

BaudRate: DWORD;

BufferSize: DWORD;

Timeouts: DWORD;

begin

Res: = Gsm_GetCurrentPortSettings (PortNo,BaudRate,BufferSize,Timeouts);

if Res <> GSM_OK then

begin

Print ('Gsm_GetCurrentPortSettings',Res);

Exit;

end;

Print (' PortNo: COM'+IntToStr (PortNo));

Print (' BaudRate: '+IntToStr (BaudRate) +' bps');

Print ('BufferSize: '+IntToStr (BufferSize) +' bytes');

Print (' Timeouts: '+IntToStr (Timeouts) +' ms');

end;

procedure TForm1. GetMessageInfoBtnClick (Sender: TObject);

var

str: string;

Res: LongInt;

MemType,MemIndex: DWORD;

Mess,aPhone,aServiceCenter: array [0.1023] of AnsiChar;

aDateTime: TDateTime; { дата-время сообщения }

aPartCount: DWORD; { для мультипартовых: кол-во частей сообщения }

aPartNumber: DWORD; { для мультипартовых: номер части сообщения }

aPartID: DWORD; { для мультипартовых: ID части сообщения }

aIsReport: DWORD; { Признак: отчет о доставке (=1) }

aReportStatus: DWORD; { Статус доставки }

aReportDateTime: TDateTime; { Дата-время отчета }

aIsIncoming: DWORD; { Признак: входящее сообщение (=1) }

aIsEmpty: DWORD;

begin

{ тут воспользуемся тем, что ItemIndex по значению соответствует и типу памяти }

MemType: = DWORD (MemTypesCB. ItemIndex);

MemIndex: = DWORD (MessIndexSE. Value);

FillChar (Mess,SizeOf (Mess),$00);

FillChar (aPhone,SizeOf (aPhone),$00);

FillChar (aServiceCenter,SizeOf (aServiceCenter),$00);

Res: = Gsm_ReadFromMemory (MemType,MemIndex,@Mess,SizeOf (Mess) - 1);

Res: = Gsm_GetMessageInfo (MemType,MemIndex,

{ - ---------------------- - }

@Mess,SizeOf (Mess) - 1,{ - ---------------------- - }

@aPhone,SizeOf (aPhone) - 1,{ - ---------------------- - }

@aServiceCenter,SizeOf (aServiceCenter) - 1,{ - ---------------------- - }

aDateTime,

aPartCount,

aPartNumber,

aPartID,

aIsReport,

aReportStatus,

aReportDateTime,

aIsIncoming,

aIsEmpty);

if Res = GSM_OK then

begin

Print ('ИНФА О СООБЩЕНИИ ['+IntToStr (MemIndex) +'] ');

if aIsEmpty = 1 then

begin

Print (' ['+IntToStr (MemIndex) +']: ПУСТОЕ СООБЩЕНИЕ');

end else

begin

if (Mess [0] in ['1','0']) then

begin

// ShowMessage (aphone);

datm. UserTable. Filtered: =true;

datm. UserTable. Filter: ='tel=''+'+aphone+'''';

if datm. UserTable. RecordCount>0 then

begin

datm. UserTable. Edit;

// datam. userstable. FieldByName ('balans'). AsFloat: =datam. userstable. FieldByName ('balans'). AsFloat-100;

PhoneNumberEdit. Text: =aphone;

if mess [0] ='1' then

begin

datm. UserTable. FieldByName ('status'). AsBoolean: =true;

SmsTextEdit. Text: ='Вы заехали на стоянку ваш баланс: '+datm. UserTable. FieldByName ('summa'). AsString;

datm. UserTable. FieldByName ('vremay'). AsDateTime: =now;

datm. OplataTable. Insert;

datm. OplataTable. FieldByName ('vremyanach'). AsDateTime: =now;

datm. OplataTable. FieldByName ('tel'). AsString: =aphone;

// str: =mess;

// datm. OplataTable. FieldByName ('nom_m'). AsString: =copy (str,2,length (str) - 1);

datm. OplataTable. FieldByName ('tippl'). AsBoolean: =true;

if datm. OplataTable. Modified then datm. OplataTable. Post;

end

else

begin

datm. UserTable. FieldByName ('status'). AsBoolean: =false;

SmsTextEdit. Text: ='Счастливого пути ваш баланс: '+datm. UserTable. FieldByName ('summa'). AsString;

datm. OplataTable. Filtered: =true;

datm. OplataTable. Filter: ='tel='''+aphone+'''';

if datm. OplataTable. RecordCount>0 then

begin

datm. OplataTable. Edit;

datm. OplataTable. FieldByName ('summa'). AsInteger: = round (now) - datm. OplataTable. FieldByName ('summa'). AsInteger;

datm. OplataTable. FieldByName ('vremyakon'). AsDateTime: =now;

if datm. OplataTable. Modified then datm. OplataTable. Post;

datm. UserTable. FieldByName ('vremay'). AsDateTime: =now;

datm. UserTable. Filtered: =true;

datm. UserTable. Filter: ='tel=''+'+aphone+'''';

datm. UserTable. Edit;

datm. UserTable. FieldByName ('status'). AsBoolean: =false;

datm. UserTable. FieldByName ('summa'). AsInteger: =datm. UserTable. FieldByName ('summa'). AsInteger-datm. OplataTable. FieldByName ('summa'). AsInteger;

if datm. UserTable. Modified then datm. UserTable. Post;

datm. OplataTable. Filtered: =false;

end;

end;

SendSmsBtn. Click;

datm. UserTable. Filter: ='';

datm. UserTable. Filtered: =false;

if datm. UserTable. Modified then datm. UserTable. Post;

DeleteMessageBtn. Click;

end;

end;

Print ('aIsIncoming: '+IntToStr (aIsIncoming));

Print ('aPhone: '+aPhone);

Print ('aServiceCenter: '+aServiceCenter);

Print ('aDateTime: '+DateTimeToStr (aDateTime));

Print ('aPartCount: '+IntToStr (aPartCount));

Print ('aPartNumber: '+IntToStr (aPartNumber));

Print ('aPartID: '+IntToStr (aPartID));

if aIsReport = 1 then

begin

Print ('aIsReport: '+IntToStr (aIsReport));

Print ('aReportStatus: '+IntToStr (aReportStatus));

Print ('aReportDateTime: '+DateTimeToStr (aReportDateTime));

end;

Print ('Message: '+Mess);

end;

Print ('===================================');

end else

if Res = GSM_ERR_NO_MEM then Print (MemTypesCB. Items [MemType] +')

else Print ('Gsm_GetMessageInfo',Res);

end;

procedure TForm1. Print (const aFunc: AnsiString; aResultCode: DWORD);

begin

Print (aFunc+': '+GsmStatusCodeToStr (aResultCode));

end;

procedure TForm1. ReadFromMemoryBtnClick (Sender: TObject);

var

Res: LongInt;

MemType,MemIndex: DWORD;

Mess: array [0.1023] of AnsiChar;

begin

MemType: = DWORD (MemTypesCB. ItemIndex);

MemIndex: = DWORD (MessIndexSE. Value);

FillChar (Mess,SizeOf (Mess),$00);

Res: = Gsm_ReadFromMemory (MemType,MemIndex,@Mess,SizeOf (Mess) - 1);

if Res = GSM_OK then Print (' ['+IntToStr (MemIndex) +']: '+Mess) else

if Res = GSM_ERR_NO_MEM then Print (MemTypesCB. Items [MemType] +': Не существует')

else Print ('Gsm_ReadFromMemory',Res);

end;

procedure TForm1. ScanSerialPortsBtnClick (Sender: TObject);

const

Prefix = 'COM';

var

Res: DWORD;

Sel,Mask: Integer;

ComPortNum,Port: Integer;

Str: AnsiString;

begin

PortsBox. Items. Clear;

Res: = Gsm_ScanSerialPorts;

if Res = GSM_ERR_API_RegOpenKeyEx then

begin

Print ('Gsm_ScanSerialPorts',Res);

Exit;

end;

Str: = '';

for Sel: = 0 to 50 do

begin

Mask: = $00000001 shl Sel;

ComPortNum: = (Res and Mask) shr Sel;

if ComPortNum > 0 then

begin

Port: = Sel+1;

if Str = '' then Str: = Prefix + IntToStr (Port)

else Str: = Str + ',' + Prefix + IntToStr (Port);

PortsBox. ItemIndex: = PortsBox. Items. AddObject (Prefix+IntToStr (Port),TObject (Port));

end;

end;

Print ('Gsm_ScanSerialPorts: '+Str);

end;

procedure TForm1. SendSmsBtnClick (Sender: TObject);

var

Res: LongInt;

begin

if TransCB. Checked then Res: = Gsm_SendSmsLat (PChar (PhoneNumberEdit. Text),PChar (SmsTextEdit. Text),DWORD (ConfirmedCB. Checked))

else Res: = Gsm_SendSms (PChar (PhoneNumberEdit. Text),PChar (SmsTextEdit. Text),DWORD (ConfirmedCB. Checked));

Print ('Gsm_SendSms (Lat) ',Res);

end;

procedure TForm1. InitializationBtnClick (Sender: TObject);

begin

Print ('Gsm_Initialization',Gsm_Initialization (DoSmsReceived,DoRingReceived));

end;

procedure TForm1. IsMemoryTypeExistsBtnClick (Sender: TObject);

var

Res: LongInt;

MemType: DWORD;

begin

MemType: = DWORD (MemTypesCB. ItemIndex);

Res: = Gsm_IsMemoryTypeExists (MemType);

if Res = GSM_OK then Print (MemTypesCB. Items [MemType] +': существует') else

if Res = GSM_ERR_NO_MEM then Print (MemTypesCB. Items [MemType] +': не существует')

else Print ('Gsm_IsMemoryTypeExists',Res);

end;

procedure TForm1. MemoryStatusBtnClick (Sender: TObject);

var

Res: LongInt;

MemType,MemUsed,MemTotal: DWORD;

begin

MemType: = DWORD (MemTypesCB. ItemIndex);

Res: = Gsm_MemoryStatus (MemType,MemUsed,MemTotal);

if Res = GSM_OK then Print (MemTypesCB. Items [MemType] +': всего '+IntToStr (MemTotal) +', исп.: '+IntToStr (MemUsed)) else

if Res = GSM_ERR_NO_MEM then Print (MemTypesCB. Items [MemType] +': Не существует')

else Print ('Gsm_MemoryStatus',Res);

end;

procedure TForm1. OpenBtnClick (Sender: TObject);

var

Res: DWORD;

Port: DWORD;

begin

if PortsBox. ItemIndex = - 1 then

begin

Print ('Не выбран порт');

Exit;

end;

Port: = DWORD (PortsBox. Items. Objects [PortsBox. ItemIndex]);

Res: = Gsm_Open (Port,0);

Print ('Gsm_Open',Res);

end;

procedure TForm1. Timer1Timer (Sender: TObject);

var

Res: LongInt;

MemType,MemUsed,MemTotal,MemINdex: DWORD;

i: integer;

Mess,aPhone,aServiceCenter: array [0.1023] of AnsiChar;

aDateTime: TDateTime

aPartCount: DWORD;

aPartNumber: DWORD;

aPartID: DWORD;

aIsReport: DWORD;

aReportStatus: DWORD;

aReportDateTime: TDateTime;

aIsIncoming: DWORD;

aIsEmpty: DWORD;

str: string;

begin

MemType: = DWORD (MemTypesCB. ItemIndex);

MemIndex: = DWORD (MessIndexSE. Value);

FillChar (Mess,SizeOf (Mess),$00);

FillChar (aPhone,SizeOf (aPhone),$00);

FillChar (aServiceCenter,SizeOf (aServiceCenter),$00);

Res: = Gsm_ReadFromMemory (MemType,MemIndex,@Mess,SizeOf (Mess) - 1);

Res: = Gsm_GetMessageInfo (MemType,MemIndex,

{ - ---------------------- - }

@Mess,SizeOf (Mess) - 1,{ - ---------------------- - }

@aPhone,SizeOf (aPhone) - 1,{ - ---------------------- - }

@aServiceCenter,SizeOf (aServiceCenter) - 1,{ - ---------------------- - }

aDateTime,

aPartCount,

aPartNumber,

aPartID,

aIsReport,

aReportStatus,

aReportDateTime,

aIsIncoming,

aIsEmpty);

MemType: = DWORD (MemTypesCB. ItemIndex);

Res: = Gsm_MemoryStatus (MemType,MemUsed,MemTotal);

if aIsEmpty <> 1 then

begin

if memtotal>0 then

begin

i: =0;

while i<MemTotal do

begin

MemType: = DWORD (i);

MemIndex: = DWORD (MessIndexSE. Value);

FillChar (Mess,SizeOf (Mess),$00);

Res: = Gsm_ReadFromMemory (MemType,MemIndex,@Mess,SizeOf (Mess) - 1);

str: =mess;

inc (i);

end;

end;

MemType: = DWORD (MemTypesCB. ItemIndex);

Res: = Gsm_ClearMemory (MemType,nil);

end;

end;

procedure TForm1. Timer2Timer (Sender: TObject);

begin

if CheckBox1. Checked then

begin

GetMessageInfoBtn. Click;

end;

end;

procedure TForm1. ToolButton1Click (Sender: TObject);

begin

datm. UserTable. Edit;

form2. ShowModal;

end;

procedure TForm1. ToolButton2Click (Sender: TObject);

begin

datm. UserTable. Insert;

form2. ShowModal;

end;

procedure TForm1. ToolButton6Click (Sender: TObject);

begin

if datm. OplataTable. Modified then datm. OplataTable. Post;

end;

procedure TForm1. ToolButton9Click (Sender: TObject);

begin

datm. OplataTable. Delete;

end;

end.

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.