Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
rt-thread0.4.0 javascript实现动态web刷新,每次仅仅传输动态变化数据
发布于 2014-04-08 23:53:50 浏览:5331
订阅该版
```#define true 1 #define false 0 #define MAX_CONNECTION 16 #define MAX_CONNECT_TIME CLOCKS_PER_SEC #define READ_BUFFER_SIZE 4096 //包含javascript函数的html文本 const static char files_fun[] = " " " " "
AJAX test
" " " " " " " "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" " " " "; static float g_server_data[8]; typedef struct { // {{{ char* data; long length; }SMessage; // }}} const static char indexdata[] = "
A test page
This is a "small" test page. "; const static char http_html_hdr[] = "HTTP/1.0 200 OK Content-Type: text/html "; const static char str_data[] = "1000" "1001" "1020" "1300" "1020" "1001" "1020" "1300 "; static void process_connection(struct netconn *conn) { struct netbuf *inbuf; char *rq; rt_err_t err; rt_uint16_t len; void *pf; char char_send[32]; long length; inbuf = netconn_recv(conn); netbuf_data(inbuf, (void**)&rq, &len); if(len > 3) { if(rq[0] == 'G' && rq[1] == 'E' && rq[2] == 'T' && rq[3] == ' ') { netconn_write(conn, http_html_hdr, sizeof(http_html_hdr), NETCONN_NOCOPY); netconn_write(conn, files_fun, sizeof(files_fun), NETCONN_NOCOPY); } else { if(rq[0] == 'P' && rq[1] == 'O' && rq[2] == 'S' && rq[3] == 'T') { int i = 0; int j = 0; length = 0; for (i = 0; i < 8; ++i) { g_server_data* += (i + 1) / 100.0; pf = &g_server_data*; for(j = 0; j < 4; j++) { char_send[i*4 + j] = *((char *)pf + j); length ++; } } netconn_write(conn, char_send, length, NETCONN_NOCOPY); } } } netbuf_delete(inbuf); } void lw_thread(void* paramter) { struct netconn *conn, *newconn; rt_err_t err; conn = netconn_new(NETCONN_TCP); netconn_bind(conn, NULL, 80); netconn_listen(conn); while(1) { newconn = netconn_accept(conn); process_connection(newconn); netconn_delete(newconn); } } void websrv() { rt_thread_t tid; tid = rt_thread_create("websrv", lw_thread, RT_NULL, 1024, 25, 5); if (tid != RT_NULL) rt_thread_startup(tid); } ``` 初始化好 ```lwip_sys_init(void); eth_system_device_init(); rt_hw_dm9000_init();``` 后启动websrv() 动态实现的原来是先传送一个html的文本,这个文本含有一个javascript的函数函数, 这个javascript函数在web客户端运行后,会想向webserver端请求post数据, webserver就回8个float类型的数据,这个8个float是随机生成的。 这个仅仅是个简单范例,在客户端运行的javascript仅仅发送了post,webserver就马上发送8个float,大家可以在实际的运用中完善数据验证。 ![1.jpg](https://oss-club.rt-thread.org/uploads/2303_c1b4d1accd75e2140744028f8151cb67.jpg)
查看更多
8
个回答
默认排序
按发布时间排序
aozima
2014-04-09
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
代码难以阅读
geniusgogo
认证专家
2014-04-09
这家伙很懒,什么也没写!
好牛叉的样纸!然后就没看到然后了!
xiao苦
2014-04-17
这家伙很懒,什么也没写!
字符串是命令啦,javascript好像是运行时解析的
leoluyi
2014-04-19
这家伙很懒,什么也没写!
[attach]2255[/attach]最新升级到rt-thread1.2.1,Lwip1.4.1, 在安富莱STM32F103ZE上现实, 单个连接运行24小时,数据稳定, 运行多个web连接的时候,很快就会挂掉,需要进一步修改代码才能实现稳定运行。 ``` /** * RT-Thread Components Initialization */ void rt_components_init(void) { /* #ifndef _MSC_VER #if RT_DEBUG_INIT int result; const struct rt_init_desc *desc; rt_kprintf("do components intialization. "); for (desc = &__rt_init_desc_rti_board_end; desc < &__rt_init_desc_rti_end; desc ++) { rt_kprintf("initialize %s", desc->fn_name); result = desc->fn(); rt_kprintf(":%d done ", result); } #else const init_fn_t *fn_ptr; for (fn_ptr = &__rt_init_rti_board_end; fn_ptr < &__rt_init_rti_end; fn_ptr ++) { (*fn_ptr)(); } #endif #else */ #ifdef RT_USING_MODULE rt_system_module_init(); #endif #ifdef RT_USING_FINSH /* initialize finsh */ finsh_system_init(); finsh_set_device(RT_CONSOLE_DEVICE_NAME); #endif #ifdef RT_USING_LWIP rt_hw_dm9000_init(); /* initialize lwip stack */ /* register ethernetif device */ eth_system_device_init(); /* re-init device driver */ /* initialize lwip system */ lwip_system_init(); rt_kprintf("TCP/IP initialized! "); #endif #ifdef RT_USING_DFS /* initialize the device file system */ dfs_init(); #ifdef RT_USING_DFS_ELMFAT /* initialize the elm chan FatFS file system*/ elm_init(); #endif #if defined(RT_USING_DFS_NFS) && defined(RT_USING_LWIP) /* initialize NFSv3 client file system */ nfs_init(); #endif #ifdef RT_USING_DFS_YAFFS2 dfs_yaffs2_init(); #endif #ifdef RT_USING_DFS_UFFS dfs_uffs_init(); #endif #ifdef RT_USING_DFS_JFFS2 dfs_jffs2_init(); #endif #ifdef RT_USING_DFS_ROMFS dfs_romfs_init(); #endif #ifdef RT_USING_DFS_RAMFS dfs_ramfs_init(); #endif #ifdef RT_USING_DFS_DEVFS devfs_init(); #endif #endif /* end of RT_USING_DFS */ #ifdef RT_USING_NEWLIB libc_system_init(RT_CONSOLE_DEVICE_NAME); #else /* the pthread system initialization will be initiallized in libc */ #ifdef RT_USING_PTHREADS pthread_system_init(); #endif #endif #ifdef RT_USING_RTGUI rtgui_system_server_init(); #endif #ifdef RT_USING_USB_HOST rt_usb_host_init(); #endif //#endif } ```
andylauren
2014-05-26
这家伙很懒,什么也没写!
很好的例程,启发很大,标准AXJX加LWIP实现了异步动态网页,相当不错,学习了
ljt8015
2014-05-27
这家伙很懒,什么也没写!
XML 技术及 Java Script 技术在网页中的使用 XML 文件其实就是一个标准的数据交换文件。在 Java Script 脚本中有专门解析 XML 文件的方法。这样就提供了一个浏览器与服务器之间进行数据的交互的简单办法。 动态数据交换,就是在浏览器访问网页时能够解析出 XML 文件的内容,在不刷新网页 的同时,每隔一段时间就进行一次 XML 文件加载和解析,这样只要 XML 内的内容一旦有 改变,网页中可以马上反应出来。 在下面的实例中,每 100ms 就对 XML 文件加载和解析一次,实时刷新数据。如果 measrue02.xml 中的数据有改变,那么浏览器中可以 100ms 内更新过来。这样我们就可以把 AD 测量的值放入 measure02.xml 中,那么 AD 测量的数据就可以在网页上实时显示出来。 注:在解析 XML 文件的过程中还解决了原来浏览器的限制,修改后可以支持绝大多数 的浏览器。 measure02.xml ```
18.5
21.5
20.5
19.5
``` measure02.html ```
ARM9 远程实时测量技术
温度测量点(1-4):
1)
Channel one
℃
2)
Channel two
℃
3)
Channel three
℃
4)
Channel four
℃
``` 33
艾那的小强
2014-10-29
这家伙很懒,什么也没写!
[quote][attach]0[/attach]最新升级到rt-thread1.2.1,Lwip1.4.1, 在安富莱STM32F103ZE上现实, 单个连接运行24小时,数据稳定, 运行多个web连接的时候,很快就会挂掉,需要进一步修改代码才能实现稳定运行。 请问多个连接挂掉找到原因了吗?
撰写答案
登录
注册新账号
关注者
0
被浏览
5.3k
关于作者
leoluyi
这家伙很懒,什么也没写!
提问
3
回答
6
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【NXP-MCXA153】 定时器驱动移植
2
GD32F450 看门狗驱动适配
3
【NXP-MCXA153】看门狗驱动移植
4
RT-Thread Studio V2.2.9 Release Note
5
CherryUSB的bootuf2配置
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
9
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部