scripts

среда, 31 июля 2013 г.

Работа со сканером и отправка электронной почты из C#.

Появилась задача - разработать программу для сканирования документов с возможностью введения данных о пациенте и отправки сканов на заданный email.
Необходимо было обеспечить максимально удобную и интуитивно понятную работу для работников поликлиники.
В итоге интерфейс получился таким:


1.Порядок работы


1.1 Информация о клиенте


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

1.2 Сканирование


Нажатие на кнопку "Сканировать" запускает процесс сканирования. В фоновом режиме создается папка для данного клиента, куда будут сохраняться отсканированные документы. Название папки уникально и имеет следующий вид ГП26_Иванов_И_И_2013_07_26. Таким образом, если Иванов И.И. придет в другой день, то для него будет создана другая папка.
Далее фоново в этой папке создается текстовый файл с данными о клиенте (Иванов_info.txt). 
В процессе сканирования создаются сканы документов, причем, чтобы обеспечить их уникальность в названии скана присутствует порядковый номер (Иванов_И_И_1.jpeg, Иванов_И_И_2.jpeg).

1.3 Отправка почты


По нажатию на кнопку "Отослать" вначале в фоновом режиме создается архив папки клиента созданной в процессе сканирования (ГП26_Иванов_И_И_2013-07-26.7z) , после успешного создания архива происходит отправка электронного сообщения с прикрепленным архивом на заданный email.

2.Особенности реализации


Работать со сканером решил через wia (Windows Image Acquisition).
Нашел обзор сканирования без использования диалогового окна (без диалогового окна быстрее и проще работать) и вынес логику работы со сканером в отдельный класс WIAScanner

Перед отправкой отсканированных изображении на электронный почтовый адрес (класс Email) происходит архивация папки бесплатным архиватором 7-Zip (класс SevenZip).
Сообщение отправляется синхронно, по завершению отправки пользователю выдается соответствующее сообщение.
Некоторые данные (куда отправлять почту) решил хранить во внешнем конфигурационном файле scancenter.config

Комментариев нет:

Отправить комментарий