Подписаться на получение новых статей на почту:

Передача данных с ATmega 8A в базу SQLite. Шаг №54

Всем привет. Сегодня мы с Вами научимся заносить считанные данные с COM-порта прямо в базу данных SQLite. В прошлой статье мы научились соединять симулятор с COM-портом, еще раньше разобрали базу данных, в общем поэтапно с статьи №44 мы написали простенькое java-приложение. Итак для последнего этапа – сохранение данных в базе мы воспользуемся интерфейсом

PreparedStatement, который наследует от Statement. Создавать объекты PreparedStatement одно удовольствие,  т.к. они уже знают скомпилированные SQL-выражения и могут передавать несколько входных параметров, значение которых не указывается в запросе и на его место ставится знак («?»). Ниже пример в классе conMySQL (ниже в архиве исходники программы и проект Proteus). Данные куски добавлены в программу, которую мы рассматривали, и пошагово дополняли, в предыдущих статьях. Перед тем как делается запрос к базе, мы вносим в нее данные следующим образом

Очень удобно. Я до этого пытался упорно использовать Statement, но программа также упорно выдавала ошибку, пока не прочитал про данный интерфейс.

Также с Proteus, как и с реальной модели по UART на COM-порт передается строка. Считываем ее. И уже в программе по элементам строки извлекаю фрагменты. Температуру перевожу в дробное, ну а время и дату (как Вы помните со статьи №, где мы учились составлять запросы, это у нас составной ключ) я пока оставил в строкой форме. Ниже код разбивки. .

PreparedStatement ps = con.prepareStatement («INSERT INTO log ('T1', 'T2', 'TIMELog', 'DATELog') VALUES (?,?,?,?)»);
ps.setFloat (1, Tf1);
ps.setFloat (2, Tf2);
ps.setString (3, Time);
ps.setString (4, Date)

Очень удобно. Я до этого пытался упорно использовать Statement, но программа также упорно выдавала ошибку, пока не прочитал про данный интерфейс.

Также с Proteus, как и с реальной модели по UART на COM-порт передается строка. Считываем ее. И уже в программе по элементам строки извлекаю фрагменты. Температуру перевожу в дробное, ну а время и дату (как Вы помните со статьи №50, где мы учились составлять запросы, это у нас составной ключ) я пока оставил в строкой форме. Ниже код разбивки

String T1 = bufer.substring (0, 5);
String T2 = bufer.substring (6,10);
String Time = bufer.substring (11, 17);
String Date = bufer.substring (18, 26)

Также Вы увидите в программе, что я добавил буфер в обработчике событий появления данных на ком порте. Теперь  данная информация построчно сохранятся в текстовый файл, и этот же буфер я передаю вторым аргументом в класс соединения с базой и оправки запросов. Как видите на рисунке (ниже, слева) в лог скидывается инфа каждый раз с одинаковым временем, на что программа выдает ошибки, оно и понятно ведь ключи должны быть разные. В программе я просто выделяю фрагмент строки ключа и сравниваю с предыдущим показанием, где уже далее заносятся правильные данные в базу. Рис справаДанные в текстовом файлеДанные в SQLite.

.

 

 

 

Теперь о симуляторе. На то он и симулятор, что немного «криво». Как Вы помните в статье №35 где мы разбирали передачу TWI и библиотеки был глюк небольшой. Так вот здесь также прослеживается тоже, после отправки данных с ведущего – ведомому, тот отрабатывает свои действия записывает на карту, и отсылает данные на COM-порт. После этого уходит в спящий режим. И здесь когда ведущий доходит до функции MasterRECeive и заходит в нее то зависает в цикле ожидания шины, она как бы занята. Ну пару моментов можно словить.

Да еще, вспомните что в статье №42 мы настраивали (калибровали) внутренний генератор регистром OCSSAL, для реальной модели он 165 , а вот для симулятора я взял 90. Ну реальная модель работает без выше упомянутых недостатков. Ниже рисунок модели в ProteusКонтроллер сбора данных на ATmega8A.

В общем примерно как-то так . Вот исходники. В них папка с кодом на java для окна, только не забудьте подключить внешние библиотеки: для COM-порта и интегрировать движок SQLite (статья № 52), и две папки с проектом протеус: avr and proteus – полный проект с образом для SD-карты (вспоминаем статья №22), здесь как я писал выше хочет работает хочет нет, вторая папка avr and proteus- здесь я вывел вывод данных с ведущего микроконтроллера, вот его можно смело читать на ком-порту. Вообщем пробуйте

Передача данных с ATmega 8A в базу данных SQLite ( Скачали: 105 чел. ) 

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

Просмотрено 2346 раз.

Я на Google+

Передача данных с ATmega 8A в базу SQLite. Шаг №54: 3 комментария

  1. Тут бы конечно лучше беспроводные протоколы организовать. Но все равно познавательно, спасибо.

  2. Бедноватый функционал приложения, надо бы подабавлять графики, да и вообще какую-нибудь обработку данных.Чисто для основ ИМХО

  3. Жду продолжения. Особенно про апплеты. Наверное автор хочет привязать передачу данных на веб сайт, что- то такие ощущения. Не так ли?

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting