前言:
本文讲解在OpenWrt上安装ser2net.ipk软件包,实现双向通信。
实验平台如下:
路由器型号:TP-LINK TL-WR703N v1
OpenWrt版本:Chaos Calmer 15.05.1
对应的ser2net.ipk版本:ser2net_2.10.0-2_ar71xx.ipk
第一部分,关于 ser2net.ipk 软件包
1、是什么?
这是一个可以通过个人PC向路由的指定端口发送数据,然后路由原封不动的将数据发送到路由的TTL接口的程序。
2、有啥用?
当安装完这个程序后,我们就可以通过编制的程序向路由的TTL口发送串行数据,意义在于:单片机就可以接受路由发送的串行数据进行各种控制。
3、源码分析— ser2net 源码分析
- ser2net 源码分析: 将TCP数据转发到serial
static char *config_file = "/etc/ser2net.conf";
--- readconfig.c: 用fgets读取配置文件的内容并进行解析(handle_config_line)
--- selector.c: 利用回调函数
typedef void (*t_sighup_handler)(void);
static t_sighup_handler user_sighup_handler = NULL;
/* The main loop for the program. This will select on the various sets, then scan for any available I/O to process.
It also monitors the time and call the timeout handlers periodically. 被调用端传递数据, 循环判断有无数据*/
void sel_select_loop(selector_t *sel)
{
for (;;) {
memcpy(&tmp_read_set, &sel->read_set, sizeof(tmp_read_set));
memcpy(&tmp_write_set, &sel->write_set, sizeof(tmp_write_set));
memcpy(&tmp_except_set, &sel->except_set,