Тема: работа с ком портом на freeduino maxserial

Здравствуйте!
Еще ни разу не работал с ардуионо, имею хороший опыт в программировании на php, работал с бд mysql, имею пользовательский и административный опыт работы с linux.

У меня есть устройство проксимус http://www.proxymus.ru/products.php?cat … ymus_tmrs3
Это ридер карт с микрочипом EM-Marine, 125 кГц
У него всего 3 провода белый(подключается к 2 и 7 ножке ком порта), красный(+12вольт), черный(-12вольт) (подскажите куда подключать провода питание на ком порт?) питаю черный и красный провод от БП компьютера.

по белому проводу передаются данные в 16ричном виде.
Соединение осуществляется со следующими параметрами:
скорость обмена: 9600 б/с;
8 бит, 1 стоп-бит;
контроль RTS/CTS.

1)Как открыть такое соединение на ком порт freeduino max serial и считывать данные которые передает проксимус?
2)Есть ли готовый класс для работы с базой данных MSSQL (база данных майкрософт)
3)На freeduino max serial есть еще цифровые входы выходы, сколько можно еще проксимусов подключить по этим входам?
4)Я планирую передавать и получать данные в базу MSSQL через ethernet shield, не помешает ли он подключать устройства на цифровые порты входов выходов?

Примерное описание того что я хочу сделать:
У меня есть турникет  perco-T-04W с встроенной платой управления, я хочу чтобы он пропускал людей через авторизованные карточки.
Для этого планирую подключить к freeduiono проксимус для считывания карт, турникет имеет интерфейс (я еще разбираюсь с его спецификацией, но скорее всего это rs232), ethernet shield.

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

Я выбрал freeduino max serial для того чтобы было больше портов для подключения, если это не обязательно и мне хватит портов которые имеются на Freeduino 2009 то буду юзать её т.к. с юсб мне легче работать, у меня нету на компьютере ком порта.

Если написал какую то фигню прошу прощения =)

2

Re: работа с ком портом на freeduino maxserial

Подключаете как и написали в те же концы com-порта (в maxserial он идентичен компьютерному)
1) Открыть соединение Serial.begin и прочее из примеров.
  if (Serial.available() > 0) {
    inByte = Serial.read(); //- получить первый байт из буфера приема
ваш код
}

В вашем случае Проксимус присылает некую последовательность (наверно идентификатор карты). Вам нужно побайтно ее получить и записать в некий string.
2) готовых классов естественно нет
3) в теории остальные проксимусы вы можете подключить только используя программную имитацию КОМ-порта на Ардуине и плюс к этому на каждый делать преобразователь интерфейса с +-10В на ТТЛ уровни (на плате реализовано на чипе MAX, можно в вашем случае простым оптрончиком). Но нужно ли? При цене 2500р можно и каждый терминал отдельной ардуиной обеспечить.
4) ethernet shild использует 4 порта ардуино, остальные свободны для ваших утех и извращений ;-)

Мне видится такая картина вашего случая:
1) получаете строку из ком порта
2) смотрите пример WebClient и аналогично делаете запрос на веб-сервер 192.168.0.1/index.php?строка_от_проксимуса (если конечно строка в ASCII, а какого она вида - смотрите на компе, подключив проксимуса и что прилетает в гипертерминал)
3) на php обработчике пишете запрос в MS-SQL или все что душе угодно
4) php отдает некую строку (OK или IGNORE к примеру)
5) процедура веб клиента получает эту строку, обрабатывает, открывает или нет терминал)
6) веб-сервер разрывает соединение. Количество подключенных Дунь фактически неограничено.

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

"Раньше было как: смотришь в книгу, и, извините, ничего не видишь. А теперь для этой цели служит дисплей!" (с) КВН НГУ 1985 год

3

Re: работа с ком портом на freeduino maxserial

Nordmen пишет:

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

Я не совсем понимаю как открыть ком порт на freeduino maxserial
Можно показать пример?

4 (2011-04-25 00:17:49 отредактировано Сергей Деменков)

Re: работа с ком портом на freeduino maxserial

DaemoncheG пишет:

Я не совсем понимаю как открыть ком порт на freeduino maxserial
Можно показать пример?

Nordmen все верно расписал - дополнить нечем. И пример привел.
"открывается" последовательный интерфейс не в стиле PC (с получением хэндлов и т.д.), а вызовом метода begin глобального объекта Serial, всунутого в вашу программу заботливыми итальянскими парнями.
Смотри примеры работы с последовательным портом, идущие с ПО, и просто в интернете - хоть на этом сайте.

Сильно заинтересовал меня способ подключения этих читалок с соединением 2 и 7 ноги.
7 нога на ПК - это RTS - по сути выход (со стороны ПК), а 2 - это RX - вход. Похоже, слава инженерному гению разработчиков, соединение RTS с RX дает эффект поддяжки RX на +12В. Правда, там же они признаются, что такое проходит не на всех матерях, и иногда нужно не жалеть один резистор, и подтягивать напрямую.
На MaxSerial конечно же RTS нет, и нужно будет именно второй вариант реализовывать.
И самое главное - видится мне, что если его не к 12В притянуть, а к 5В, то можно будет напрямую
к любой ноге Arduino цеплять, и потом через SoftwareSerial работать. Только что-то придется выдумывать с инверсией сигналов, но внутри SoftwareSerial это и программно можно.

...чуть не забыл - цеплять к MaxSerial нужно не на 2ю ногу COM-порта, а на 3-ю, ведь на 2й ноге у MaxSerial TX, который соединяется с RX компьютера. А RX у MaxSerial на 3й ноге!