Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS -- serial port (https://javascript.ru/forum/misc/13842-js-serial-port.html)

madmax 16.12.2010 01:50

JS -- serial port
 
http://robocraft.ru/blog/algorithm/108.html - есть ардуино
есть веб страница с некоторым кодом - JS отслеживает действия на страницы и генирирует определенное число - вот это число и надо передать в ардуино -
Можно ли передать напрямую есть ли доп библиотеки плагины которые дают возможности для записи в серийный порт?
Если нет как реализовать прослойку по передачи например передать эти данные в Java который запишит их.
Прошу отнестись к этому вопросу серьезно так как если эта проблема будет решена я смогу сделать крутое уствойство, которое возможно немного изменит мир)))
Спасибо.

dmitriymar 16.12.2010 10:13

madmax,
ну во первых -Мир нужно спасать от сумасшедших гениев,а не помогать им его изменять. запиши это число в куки а потом явой его оттуда достань

x-yuri 16.12.2010 10:21

а лучше отправь ajax-запрос

dmitriymar 16.12.2010 10:23

Цитата:

Сообщение от x-yuri
а лучше отправь ajax-запрос

куда ему его отправить?установить ещё ява сервер у себя и т.д?)) он это всё локально делает.

x-yuri 16.12.2010 10:36

а куки куда отправлять?

dmitriymar 16.12.2010 10:54

Цитата:

Сообщение от x-yuri
а куки куда отправлять?

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

x-yuri 16.12.2010 11:05

явой считывает куки какого из установленных браузеров? Почему не просто в файл писать? И если уж писать в файл, не случаться так, что один еще не дописал, а второй читать начал?

dmitriymar 16.12.2010 11:20

Цитата:

Сообщение от x-yuri (Сообщение 84121)
явой считывает куки какого из установленных браузеров? Почему не просто в файл писать? И если уж писать в файл, не случаться так, что один еще не дописал, а второй читать начал?

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

noonv 16.12.2010 13:12

а может просто использовать JSON-запросы на Ethernet-шылд, подключённый к Arduino? или по-другому - отправлять JSON-запросы на сервер, к которому подключён контроллер.

noonv 16.12.2010 14:36

через Ethernet-шылд Arduino может работать как простенький сервер

dmitriymar 16.12.2010 15:01

Цитата:

Сообщение от noonv
через Ethernet-шылд Arduino может работать как простенький сервер

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

madmax 16.12.2010 18:23

Сервер использовать нельзя, интеренет-шилд тоже, хакать не кого не будем, пользователь страницу может локально открыть, и не как с инетом не связыватся (это не обязательно).
Идея с куками хорошая но - будет ли должная скорость можно будет передавать 40++ чисел в секунду, я сомневаюся.
Чтобы стало ясней - мы ардуино управляем из веба (все делают из Джавы) а это муторная долгая разработка графичиского окружения, я пытаюсь использовать JS и веб чтобы пользователь взял JS и сам быстро написал что хочет ( из за легкости разработки) используя библеотеку (она модулирует эти цифры исходя из заданных параметров). И не заморачивался углублением в Java C++, на которых не создашь что-нибудь за 20 минут.
Неужели JS не может не как по другому передавать данные в сторонние программы, языки? Может есть плагины для браузеров? Естественно пользователь знает что делает и сознательно будет ставить некорое что то для коректной работы всего этого.

madmax 16.12.2010 18:25

и да кукисы не дадут синхронизации (тоесть я отправил сейчас и ты это точно прочитал тоже сейчас а не через 30 миллисикунд) иначе я бы сразу их использовал и не задавал вопросов)

noonv 16.12.2010 18:29

сдаётся, что придётся работать через флеш :)
кстати - посмотрите как реализован вот этот проект:
http://www.modk.it

monolithed 16.12.2010 19:13

Цитата:

Сообщение от x-yuri
явой

Цитата:

Сообщение от dmitriymar
в яве

что вы то подхватили эту заразу, так выражаться))

Kolyaj 16.12.2010 19:50

Цитата:

Сообщение от madmax
Неужели JS не может не как по другому передавать данные в сторонние программы, языки?

Не JS не может, а браузер не может. В целях безопасности.

dmitriymar 16.12.2010 20:01

Цитата:

Сообщение от monolithed
что вы то подхватили эту заразу, так выражаться))

блин, один кричит что я грубиян,другой что выражаюсь.....

dmitriymar 16.12.2010 20:04

Цитата:

Сообщение от madmax
и да кукисы не дадут синхронизации (тоесть я отправил сейчас и ты это точно прочитал тоже сейчас а не через 30 миллисикунд) иначе я бы сразу их использовал и не задавал вопросов)

на любом языке будет задержка,только в некоторых больше в других меньше-и никуда от этого не дется

x-yuri 16.12.2010 21:23

Цитата:

Сообщение от dmitriymar
хотя видел посты что это можно рнр делать..

да, может

Цитата:

Сообщение от noonv
сдаётся, что придётся работать через флеш

и чем он поможет?

Цитата:

Сообщение от monolithed
что вы то подхватили эту заразу, так выражаться))

это я в терминологии собеседника выразился... чес слово, больше не буду

Цитата:

Сообщение от dmitriymar
на любом языке будет задержка,только в некоторых больше в других меньше-и никуда от этого не дется

при таком способе общения - да

Цитата:

Сообщение от Kolyaj
Не JS не может, а браузер не может. В целях безопасности.

почему браузер? Браузер просто не дает js достаточно привилегий

madmax, насколько я понял, надо чтобы пользователь с минимальными усилиями получил доступ к этому устройству из браузера. Т.е. без всяких серверов. В общем-то я таким никогда не занимался, но думаю надо гуглить в сторону HTA, ActiveX, java-апплетов (хотя вряд ли тут ситуация лучше, чем с js в плане доступа к аппаратному обеспечению) либо написания расширений для браузеров. А вообще, десктопные приложения не только на java, c#, c++ писать можно ;)

dmitriymar 16.12.2010 21:42

Цитата:

Сообщение от x-yuri
madmax, насколько я понял, надо чтобы пользователь с минимальными усилиями получил доступ к этому устройству из браузера. Т.е. без всяких серверов. В общем-то я таким никогда не занимался, но думаю надо гуглить в сторону HTA, ActiveX, java-апплетов (хотя вряд ли тут ситуация лучше, чем с js в плане доступа к аппаратному обеспечению) либо написания расширений для браузеров. А вообще, десктопные приложения не только на java, c#, c++ писать можно

делфи с++ с# в борландовской среде(про визуху не знаю) позволяют создавать свои браузеры(именно полноценные браузеры) довольно таки легко. и из них можно получать доступ ко всем ресурсам компа и к портам в том числе.и организовать взаимодействие браузера и странице можно по своему вкусу.но есть одно но-это всё дело описано частично только в Архангельском . а остальную инфу ему придётся искать ручками.
так что этот вариант ему подойдёт по полной для оболочки. ну только если он не знает среду-будет разбираться ней от полугода до 2-3 лет.и то при условии что найдёт хорошие книги по среде.хотя это будет повторением того что уже создано под эту плату с одной разницей в оригинале С++ используется а здесь будет скрипт...

dmitriymar 16.12.2010 21:47

Цитата:

Сообщение от x-yuri
это я в терминологии собеседника выразился... чес слово, больше не буду

а я не пионер-так что ничего меня не изменит!!!

madmax 20.12.2010 01:37

O_0 - вот сдесь много чего написано))
Собственно задачу я решел - используем TinkerProxy, и встроенные классы флеша,из JS передаем код в флеш из флеша в сервер от туда в Arduino.
Но мне не нравится это решение оно по моему не хакерское какое-то:)
Пришлось что-бы флешь в странице ,баги не давал ставить Apache и работать через него - и что же получилось пользователь должен ставить
TinkerProxy (настраивает конфиги, ), Apache (и они оба будут в трее болтатся), причем в некоторых ситуациях получились баги это плохо.

Я решил нужно попробывать другой путь - можно ли JS законектится к TinkerProxy это вроде сервера, если нет тогда Python, или что вероятней PHP, раз уж без сервера ни как что уж тогда))
Что скажете господа?

x-yuri 20.12.2010 02:02

а apache зачем? Расскажи про баги

еще можешь попробовать посмотреть Adobe AIR или написать свой http-сервер: высоких требований к нему нету - так как он только для одного пользователя - и должно быть достаточно вариантов, как это быстро сделать

madmax 20.12.2010 02:30

Цитата:

Сообщение от x-yuri (Сообщение 84499)
а apache зачем? Расскажи про баги

еще можешь попробовать посмотреть Adobe AIR или написать свой http-сервер: высоких требований к нему нету - так как он только для одного пользователя - и должно быть достаточно вариантов, как это быстро сделать

Апачь нужен для того - того... я не знаю для чего:) . Если запускаю просто из папки страницу (HTML+JS+FLASH) то передача данных из JS to Flash работает только в IE, реализацию использовал с вашего же сайта, а второй баг
есть код на AS3
import flash.errors.*;
import flash.events.*;
import flash.net.Socket;
import flash.external.ExternalInterface;
var arduinoSocket:Socket = new Socket("localhost",5333);
ExternalInterface.addCallback("sendFromJS",  recieveFromJS);
//ExternalInterface.addCallback("sendFromJS",
							  
	function recieveFromJS(str:String):void {
        try {
           arduinoSocket.writeUTFBytes(str); 
			arduinoSocket.flush();
        }
        catch(e:IOError) {
            trace(e);
        }
    }

он получен из двух кусков один я взял с вашего примера это
ExternalInterface.addCallback("sendFromJS",  recieveFromJS);

и все что к ней примыкает и все остальное это запись в сериал порт.
Проблема в том что по отдельности это работает я могу передать в Flash из JS данные, могу Flash отправить в Arduino, но в связке они не работают, в AS эти функции я не знаю и поэтому не могу найти ошибку вот:D

x-yuri 20.12.2010 06:15

прикрепи какой-нибудь тестовый пример к сообщению - попробую у себя. Первое может быть связано с какими-нибудь настройками безопасности...

madmax 21.12.2010 13:14

Вложений: 1
Сокет сервер, и файлы из htdocs апача

x-yuri 25.12.2010 08:05

Вложений: 1
во-первых по поводу безопасности: флешка не может и общаться с сетью, и с локальными файлами. За одним исключением, если ты пометил ее как trusted (поместил в local-trusted sandbox). Это делается, например, в Settings Manger. Но может быть задано и на других уровнях. Помимо этого, надо разрешить доступ js->swf (Security.allowDomain("*")). Прикрепил рабочий пример

Цитата:

Сообщение от madmax
Проблема в том что по отдельности это работает я могу передать в Flash из JS данные, могу Flash отправить в Arduino, но в связке они не работают, в AS эти функции я не знаю и поэтому не могу найти ошибку вот

ты попадаешь в recieveFromJS? Получаешь нужную строку? Что значит не работают?

p.s. повторюсь: тебе же нужно декстопное приложение, которое можно писать с помощью html/css/js. Насколько я знаю, этим требованиям соответствует Adobe AIR


Часовой пояс GMT +3, время: 14:17.