这可以用Javascript完成吗?微控制器/ TCP IP [英] Can this be done with Javascript? Microcontrollers/TCP IP

查看:61
本文介绍了这可以用Javascript完成吗?微控制器/ TCP IP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对Javascript很新,所以也许我的问题可能很愚蠢。


我正在玩微控制器和TCP / IP组件。

这意味着我可以通过TCP / IP,UDP等控制电子设备。

但是,我的问题出在客户端。


我想要一个程序,或者一个包含按钮的网页,当按下
时,会向TCP / IP组件发送信号并等待

回复。

也许这看起来很奇怪,但是让我说我​​在端口80上有一个连接
我单击网页上的一个单选按钮,新信息是发送

(与get命令一样)到TCP / IP组件。

分析新命令并发回确认。


实际上,这将是一个网页,有2个8个单选按钮,

发送8个灯的信息。

信息的方式是由Javascriot发送并不重要。

TCP / IP组件在处理完信息后回复。


让我们说有人点击lamp1。来自OFF toON

脚本应该发送一个代码按钮状态的代码

页面

" A1,B0 ,C1,E0,F0,G0H0,I0"

这意味着灯A,C为ON,其余为OFF。


TCP / IP组件检查是否可以这样做并回复:

" A1,B0,C1,E0,F0,G0H0,I0"

与命令发送的命令相同脚本。

脚本通过可视化新状态做出反应。


在稍后阶段,输入应为8字节。

所以8个灯应该成为可以包含从0

到255的数字的文本框。


这只是这个问题的草稿版本,如果它好像是

Javascript不是最好的方法,我不再打扰你了

:-)


感谢您的帮助

解决方案

10月17日上午6:55,t ... @ testnospam.nl写道:
< blockquote class =post_quotes >
我是Javascript的新手,所以也许我的问题可能是愚蠢的。


我正在玩微控制器和TCP / IP组件。

这意味着我可以通过TCP / IP,UDP等控制电子设备。

但是,我的问题出在客户端。


< snip>


这只是这个问题的草稿版本,如果好像是

Javascript不是最好的办法这个,我再也不会打扰你了。

:-)



这取决于你所说的最佳方式。对于

程序员的最佳方式,我会说不。防止黑客打开或关闭你家中灯光的最佳方法,我会说不。最好的方式是

能够告诉你的客户哦,只需打开设备的网页

127.0.0.11然后点击红色按钮,我我想也许..取决于

你最好的意思是什么...


事情是,当涉及到沟通时,javascript可以做只有

HTML可以做什么:发出HTTP请求。所以首先你必须确保你的设备可以解析HTTP。请记住,浏览器不会发送简单和最小的HTTP,而是发送类似的内容:


GET / set_buttons?A = 1& B = 0& C = 1& E = 0& F = 0& GH = 00& I = 0 HTTP / 1.1

主持人:127.0.0.11


User-Agent:Mozilla / 5.0(X11; U; Linux i686; en-US; rv:1.8.1.17)Gecko /

20061201 Firefox / 2.0.0.17(Ubuntu-feisty)


接受:text / xml,application / xml,application / xhtml + xml,text /

html; q = 0.9,text / plain; q = 0.8,image /png,*/*;q=0.5


接受语言:en-us,en; q = 0.5


接受编码:gzip,deflate


Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.7


保持活力:300


连接:保持活力

内容类型:application / x-www-form-urlencoded


message = 1; current_style = 1


Pragma:no-cache


缓存控制:无缓存


实际上解析起来并不难。您只对GET线路感兴趣,而您的设备可以忽略其余部分。为了测试这个,我会建议先使用一个简单的HTML表单发送数据并且不要用b $ b来触摸javascript直到你可以让你的设备可靠地通话HTTP。

然后,如果你愿意,可以使用javascript发出一个AJAX请求,以避免

重新加载整个页面。


10月17日,12:55 * am,t ... @ testnospam.nl写道:


我是'我对Javascript很新,所以也许我的问题可能很愚蠢。


我正在玩微控制器和TCP / IP组件。

这意味着我可以通过TCP / IP,UDP等控制电子设备。

但是,我的问题出在客户端。


我想要一个程序,或者一个包含按钮的网页,当按下
时,会向TCP / IP组件发送信号并等待

回复。

也许这看起来很奇怪,但是让我说我​​在p上有联系ort 80

我点击网页上的一个单选按钮,新信息发送

(就像get一样)命令)到TCP / IP组件。

分析新命令并发回确认。

(...)



是的,没问题。这可以通过几种方式完成。您可以发送/

请求任何资源的http请求的URL中的信息

(通常是< imgor a< script>)作为查询参数' '?q = theData''(或

not),你也可以通过XMLHttprequest发送/请求它,或者在GET / POST /的标题中输入
HEAD请求或在POST

请求的正文中。


HTH,

-

Jorge。


>这取决于你所说的最佳方式。
的最佳方式


>程序员,我会说不。阻止黑客开启或关闭家中灯光的最佳方法,我会拒绝。最好的方式是能够告诉你的客户哦,只需打开设备的网页
127.0.0.11,然后点击红色按钮,我会说也许..取决于
你最擅长什么......

当涉及到沟通时,javascript只能做HTML可以做的事情:发出HTTP请求。首先,您必须确保您的设备可以解析HTTP。请记住,浏览器不会发送简单和最小的HTTP,而是发送类似的内容:

GET / set_buttons?A = 1& B = 0& C = 1& E = 0& F = 0& GH = 00& I = 0 HTTP / 1.1
主机:127.0.0.11

用户代理:Mozilla / 5.0(X11; U; Linux i686; en-US; rv:1.8.1.17)Gecko /
20061201 Firefox / 2.0.0.17(Ubuntu-feisty)

接受:text / xml,application / xml,application / xhtml + xml ,text /
html; q = 0.9,text / plain; q = 0.8,image / png,* / *; q = 0.5

Accept-Language:en-us,en; q = 0.5

接受编码:gzip,deflate




























br />
Keep-Alive:300

连接:keep-alive

内容类型:application / x-www-form-urlencoded

message = 1; current_style = 1

Pragma:no-cache
缓存控制:无缓存

实际上解析起来并不难。您只对GET系列感兴趣,您的设备可以忽略其余部分。为了测试这一点,我建议首先使用简单的HTML表单发送数据并且不要触摸javascript,直到你可以让你的设备可靠地谈论HTTP。
然后,如果你愿意,可以使用javascript发出一个AJAX请求,以避免重新加载整个页面。



我有一个设备可以对GET

命令发送的所有内容作出反应。

所以如果浏览器发送这个:


radiobuttons.html?A = on& C = on& G = on& Zend = Submit


I可以过滤出按钮的名称及其状态。

所以我的所有设备都是:

A =关于C =关于G = on

其余部分被控制器中的程序忽略。


但是,我的主要问题是控制器是否可以提供反馈如果

点亮戴上了,并在网页上显示。

所以,如果我发送请求打开灯A,设备检查是否

灯实际燃烧,这应该在页面上显示。


这应该是一种双向沟通。

让我们说开关关掉了灯在房间里,

控制器知道灯没亮,即使

网页重新开始在命令之后打开它,显示灯亮了,因为

变暗了。


感谢您的回复!!!


Hi, I''m very new to Javascript so maybe my question could be stupid.

I''m playing with microcontrollers and a TCP/IP component.
This means that I can control electronics via TCP/IP, UDP and so on.
But, my problem is on the client side.

I want to have a program, or a web page containing buttons that, when
pressed sends a signal to the TCP/IP component and waits for a
response back.
Maybe this seems strange, but let''s say I have a connection on port 80
and I click a radio button on a web page, the new information is send
(like with a "get" command) to the TCP/IP component.
That analyses the new command en sends a confirmation back.

In real this would be a web page that has 2 times 8 radio buttons that
sends information for 8 lamps.
The way the information is send by the Javascriot doesn''t matter.
The TCP/IP component replies after the information is processed.

Lets say someone clicks "lamp1" from "OFF" to "ON"
The script should send a code that represents the state of the buttons
on the page
"A1,B0,C1,E0,F0,G0H0,I0"
This means that lamp A, C are ON, the rest is OFF.

The TCP/IP component checks if this can be done and replies:
"A1,B0,C1,E0,F0,G0H0,I0"
The same as the command send by the script.
The script reacts by visualize the new state.

In a later stage, the input should be a 8byte word.
So the 8 lamps should become textboxes that can contain numbers from 0
to 255.

This is but a draft version of this question, if it seems that
Javascript is not the best way to do this, I won''t bother you anymore
:-)

Thanks for your help

解决方案

On Oct 17, 6:55 am, t...@testnospam.nl wrote:

Hi, I''m very new to Javascript so maybe my question could be stupid.

I''m playing with microcontrollers and a TCP/IP component.
This means that I can control electronics via TCP/IP, UDP and so on.
But, my problem is on the client side.

<snip>

This is but a draft version of this question, if it seems that
Javascript is not the best way to do this, I won''t bother you anymore
:-)

It depends on what you mean by "best way". Best way for the
programmer, I''d say no. Best way for preventing a hacker from
switching lights in your house on or off, I''d say no. Best way to be
able to tell your client "Oh, just open the device''s web page at
127.0.0.11 and click the red button", I''d say maybe.. depending on
what you mean by best...

The thing is, when it comes to communication, javascript can do only
what HTML can do: make HTTP requests. So first you''ll have to make
sure your device can parse HTTP. And remember, the browser will not
send simple-and-minimal HTTP, rather it would send something like:

GET /set_buttons?A=1&B=0&C=1&E=0&F=0&GH=00&I=0 HTTP/1.1
Host: 127.0.0.11

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/
20061201 Firefox/2.0.0.17 (Ubuntu-feisty)

Accept: text/xml,application/xml,application/xhtml+xml,text/
html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive
Content-Type: application/x-www-form-urlencoded

message=1; current_style=1

Pragma: no-cache

Cache-Control: no-cache

Which is actually not that hard to parse. You''d only be interested in
the GET line and your device can ignore the rest. To test this out I''d
suggest first sending the data using a simple HTML form and don''t
touch javascript until you can get your device to reliably talk HTTP.
Then, if you want, use javascript to make an AJAX request to avoid
having to reload the whole page.


On Oct 17, 12:55*am, t...@testnospam.nl wrote:

Hi, I''m very new to Javascript so maybe my question could be stupid.

I''m playing with microcontrollers and a TCP/IP component.
This means that I can control electronics via TCP/IP, UDP and so on.
But, my problem is on the client side.

I want to have a program, or a web page containing buttons that, when
pressed sends a signal to the TCP/IP component and waits for a
response back.
Maybe this seems strange, but let''s say I have a connection on port 80
and I click a radio button on a web page, the new information is send
(like with a "get" command) to the TCP/IP component.
That analyses the new command en sends a confirmation back.
(...)


YES, no problem. This can be done in several ways. You can send/
request the info in the url of the http request of any resource
(usually an <imgor a <script>) as a query parameter ''?q=theData'' (or
not), and you can send/request it via an XMLHttprequest as well either
in the headers of a GET/POST/HEAD request or in the body of a POST
request.

HTH,
--
Jorge.


>It depends on what you mean by "best way". Best way for the

>programmer, I''d say no. Best way for preventing a hacker from
switching lights in your house on or off, I''d say no. Best way to be
able to tell your client "Oh, just open the device''s web page at
127.0.0.11 and click the red button", I''d say maybe.. depending on
what you mean by best...

The thing is, when it comes to communication, javascript can do only
what HTML can do: make HTTP requests. So first you''ll have to make
sure your device can parse HTTP. And remember, the browser will not
send simple-and-minimal HTTP, rather it would send something like:

GET /set_buttons?A=1&B=0&C=1&E=0&F=0&GH=00&I=0 HTTP/1.1
Host: 127.0.0.11

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/
20061201 Firefox/2.0.0.17 (Ubuntu-feisty)

Accept: text/xml,application/xml,application/xhtml+xml,text/
html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive
Content-Type: application/x-www-form-urlencoded

message=1; current_style=1

Pragma: no-cache

Cache-Control: no-cache

Which is actually not that hard to parse. You''d only be interested in
the GET line and your device can ignore the rest. To test this out I''d
suggest first sending the data using a simple HTML form and don''t
touch javascript until you can get your device to reliably talk HTTP.
Then, if you want, use javascript to make an AJAX request to avoid
having to reload the whole page.

I have a device that can react on everything that is send wit the GET
command.
So if the browser send this:

radiobuttons.html?A=on&C=on&G=on&Zend=Submit

I can filter out the names of the buttons and their state.
So all my device makes of it is:
A=on C=on G=on
The rest is ignored by the program in the controller.

But, my main question is if the controller can give feedback if the
lights were put on, and show this on the webpage.
So if I send the request to turn light A on, and the device checks if
the light is actually burning, this should be showed on the page.

This should be a two way communication.
Let''s say that the lights were switched off by a switch in the room,
the controller knows that the light didn''t turn on, and even if the
webpage requested to turn it on, after the command, shows the light as
dimmed.

Thanks already for your reply!!!


这篇关于这可以用Javascript完成吗?微控制器/ TCP IP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆