OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4681|回复: 0

【JSDuino】以太网TCP

[复制链接]

45

主题

115

帖子

1

精华

版主

Rank: 7Rank: 7Rank: 7

积分
679
金钱
679
注册时间
2013-9-23
在线时间
95 小时
发表于 2017-6-24 10:43:22 | 显示全部楼层 |阅读模式
    通过本节的学习,您将了解到如何使用JavaScript代码来实现以太网(RJ45接口)TCP通信JSDuino开发板目前支持一个socket通信,不管是客户端还是服务端都使用w5500上的socket 0。由于w5500最多能支持8socket,所以在后续固件中会增加到8socket
   
    这一章主要向大家详细介绍一下JavaScript语言当中的回调函数机制。所谓的回调函数,就是那些通过某些带有注册功能的函数(例如下面的key.on)将某个函数注册到指定的位置。当任务列队检测到有任务事件时,根据事件内容来判断要到哪个位置去执行这个注册的函数(回调函数)。这个时候可以很清楚的看到,JavaScript语言代码的整体框架风格其实就是基于这个回调函数来设计的,我们可以把很多偶然性、异步性的、周期性的行为通过回调函数来实现,这样大大简化的程序设计的逻辑难度。那么这个回调函数在使用中需要注意哪些地方呢?
第一,在JSDuino开发板中,如果同样的注册函数注册了多个不同的函数,那么下一次的注册会覆盖上一次的注册。第二,根据注册函数的说明来注册相应类型的函数,比如注册函数会对回调函数参数个数和类型有要求。如果注册的函数参数类型或者个数不符合要求,那么这个函数不会被执行。

      net模块封装了如下几个API可供使用:
connect(ip, port)
发起一个socket连接
参数
描述
Ip
字符串型,远程ip地址
Port
数字型,远程端口。

close()
关闭一个socket连接
参数
描述

write(data, size)
已连接的socket发送数据
参数
描述
Data
Buffer或者string数据,当为string类型时,不需要指明size
Size
发送数据大小。

on(event, function)
注册一个socket事件的回调函数
参数
描述
Event
注册的事件类型,字符串型,connected事件表示已经连接、data事件表示有数据接收到
function
回调函数参数包括2个参数:Buffer或者string数据, 数据长度


listen(port)
Server Socket监听一个端口
参数
描述
Port
监听端口,数字型。

Javascript 客户端代码

[mw_shl_code=javascript,true]var net = require("net");
var key = require("key");

function key_cb(name){
        print(name);
        print(net.connect("10.1.1.177", 9090));
}

key.on(key_cb);

//连接成功的回调函数
function connect_callback(){
        print("socket connected!");
}

//客户端获取到数据的回调函数
function data_callback(data, size){
        print(size);
}
//注册回调函数
net.on("connected", connect_callback);
net.on("data", data_callback);


function loop(){
        while(true){

        }
}

loop();
[/mw_shl_code]

实验结果
当按下任意用户自定义按键后,建立连接;当连接成功后,打印连接成功信息;当按socket接收到数据后,打印数据长度。


Javascript 服务端代码

[mw_shl_code=javascript,true]var net = require("net");
var key = require("key");

//按键按下,监听端口
function key_cb(name){
        print(name);
        net.listen(9090);
}

key.on(key_cb);

//连接成功的回调函数
function connect_callback(){
        print("socket connected!");
}

//客户端获取到数据的回调函数
function data_callback(data, size){
        print(size);
}
//注册回调函数
net.on("connected", connect_callback);
net.on("data", data_callback);


function loop(){
        while(true){

        }
}

loop();
[/mw_shl_code]

实验结果
当按下任意用户自定义按键后,建立监听连接;当客户端连接成功后,打印连接成功信息;当按socket接收到数据后,打印数据长度。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-7 01:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表