Подключение к SQL Server из микроконтроллера (Arduino или Fez с .Net Micro Framework) - PullRequest
5 голосов
/ 17 сентября 2010

Я ищу примеры, учебные пособия или просто «это + это + это должно работать» для чтения и записи на сервер SQL (2008) с микроконтроллера, такого как плата Arduino.Я также рассмотрел (и, вероятно, буду использовать) устройства с .Net Micro Framework, такие как Fez Cobra .Micro Framework не включает ADO.Я уверен, что это будет связано с некоторыми XML, но я не могу понять, какую технологию для дальнейшего изучения.Я не хочу иметь приложение для ПК в качестве посредника.

Спасибо!

Ответы [ 6 ]

5 голосов
/ 17 сентября 2010

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

Я сомневаюсь в вас 'Вы сможете реализовать TDS при ограниченном питании и памяти AVR.

1 голос
/ 24 сентября 2010

Все еще не знаю, о чем ваш вопрос ... Тег "arduino" позволяет мне думать, что вы спрашиваете о коде Arduino, но комментарии ниже заставляют меня сомневаться в том, что вы спрашиваете о вещах .NET. Вот предварительный ответ на вопрос, как управлять вещами на стороне Arduino.

Способ 1: использование последовательной связи и прокси

На Arduino я бы просто выводил SQL-запросы через последовательный порт, например:

Serial.begin(115200);
Serial.println("INSERT INTO table_name VALUES (value1, value2, value3,...);");

На стороне сервера (или на стороне компьютера, который вы используете для доступа в Интернет) я написал бы простой скрипт, который открывает соединение с БД и направляет запрос к нему. Это может быть достигнуто либо с помощью команд CLI , либо путем открытия сетевого соединения на заданном порту. Я не использую Windows / .NET и т. Д., Но на платформе GNU / Linux, используя python и mysql, код проверки концепции, который я написал бы, выглядел бы примерно так (BEWARE: UNTESTED!):

import os, serial

self.ser = serial.Serial("/dev/ttyUSB0", 115200)
query = self.ser.readline().strip()
return os.popen("mysql -u<my_usr> -hlocalhost -p<my_pass> -e" + query)

Способ 2: использование сетевого экрана или непосредственно сетевой платы Arduino

Последнее будет отправлено иногда в ближайшее время (см. эту презентацию , если вам интересно об этом). Первый уже доступен . Написание кода для него должно быть очень простым (см. docs здесь). Результат должен быть чем-то вроде (НЕПРОВЕРЕНО):

Serial.begin(<speed>);
Ethernet.begin(<mac_number>, <ip>);
Client client(<server>, <port>);
client.println("GET <path> HTTP/1.0");
while (client.available()) {
  char c = client.read();
  Serial.print(c);
}

НТН!

0 голосов
/ 01 августа 2012

Вы можете установить конечную точку HTTP в SQL Server и затем отправлять ему команды HTTP put.

0 голосов
/ 12 июля 2011

Посмотрите на http://www.logicdata.it/sqleng, у них есть замечательный SQLServer для микро.

0 голосов
/ 15 ноября 2010

В зависимости от пары параметров:

1.0 Вы подключены через последовательный порт к главному ПК.

Создайте клиентское приложение на главном ПК, которое получало команды через последовательный порт и переводитэти команды в sql, используя ADO или что вы предпочитаете.

2.0 Вы используете сетевой экран.

В этом случае у вас есть несколько вариантов:

2a.Подключитесь к веб-сервису и используйте Soap или подобный протокол http для отправки команд, которые служба преобразует в команды базы данных.

2б.Попытайтесь реализовать хотя бы подмножество протокола TDS и напрямую подключиться к серверу sql и выдавать ему команды напрямую.

0 голосов
/ 17 сентября 2010

Я не знаю, как вы поняли идею XML, но я советую вам взглянуть на документацию по протоколу Microsoft SQL Server , которая дает вам довольно хорошее представление о том, что вы на самом деле имеете реализовать для естественного общения с вашим сервером SQL.

...