Goahead 嵌入式 Webserver 的一些demo [此博文包含图片]_嵌入式webdemo-程序员宅基地

技术标签: web  

1、Form

 

建立一个form.asp,并保存到项目/web/目录下,内容如下:

 

<html>
<!-Copyright(c) Go Ahead software Inc.,2012-2012.AllRights Reserved.->
<head>
<title>Goahead Form Test</title>
<link rel="stylesheet" href="style/normal_ws.css"type="text/css">

</head>

<body>
<h1>Goahead Form Test1</h1>
<form action=/goform/formTest method=POST>

<table>

<tr>
  <td>Name:</td><td><input type=text name=name size=50 value=""></td>
</tr>
<tr>
  <td>Addr:</td><td><input type=text name=addr size=50 value=""></td>
</tr>
<tr>
  <td></td>
   <tdALIGN="CENTER">
    <input type=submit name=ok value="OK"><input type=submit name=ok value="CANCEL"></td>
</tr>
</table>

</form>

</body>
</html>

 

 

在 goahead 中增加如下内容:

websFormDefine(T("formTest"),formtest);    // 注册

 

static voidformtest(webs_t wp, char_t *path, char_t*query)   // 原型
{
 char_t *name, *addr;
 name = websGetVar(wp, T("name"), T(""));
 addr = websGetVar(wp, T("addr"), T(""));
 websHeader(wp);
 websWrite(wp,T("<body><h2>Name:%s, Addr: %s</h2>\n"),name,addr);
 websFooter(wp);
 websDone(wp, 200);
}

 

2、ASP
建立一个asp.asp,并保存到项目/web/目录下,内容如下:

<divid="view">
 <h4>串口状态</h4>
 <table id="viewTab"class="viewTab" cellspacing="0"cellpadding="0">
  <tr>
   <thwidth="">串口</th>
   <thwidth="">线路协议</th>
   <thwidth="">波特率(bps)</th>
   <thwidth="">数据位</th>
   <thwidth="">起始位</th>
   <thwidth="">停止位</th>
   <thwidth="">奇偶校验</th>
   <thwidth="">流控</th>
  </tr>
  <%MakePortAttributeList("1", "Test", "Lanj"); %>
 </table>
</div>
 
在 goahead中增加如下内容:

websAspDefine(T("MakePortAttributeList"),getPortAttrib);   // 注册

 

typedef struct PortAttributeList{
 char_t *port;
 char_t *agreement;
 char_t *bandrate;
 char_t *figure;
 char_t *outset;
 char_t *termination;
 char_t *parityCheck;
 char_t *flowControl;
}STPortAttributeList;

static voidgetPortA(webs_t wp, STPortAttributeList *PortAttributeList)
{
 PortAttributeList[0].port="1";
 PortAttributeList[0].agreement="RS232";
 PortAttributeList[0].bandrate="1200";
 PortAttributeList[0].figure="8";
 PortAttributeList[0].outset="1";
 PortAttributeList[0].termination="1";
 PortAttributeList[0].parityCheck="ODD";
 PortAttributeList[0].flowControl="Hardware";
 PortAttributeList[1].port="2";
 PortAttributeList[1].agreement="RS485";
 PortAttributeList[1].bandrate="9600";
 PortAttributeList[1].figure="8";
 PortAttributeList[1].outset="1";
 PortAttributeList[1].termination="1";
 PortAttributeList[1].parityCheck="EVEN";
 PortAttributeList[1].flowControl="NO";
}


static int getPortAttrib(int eid, webs_t wp, int argc, char_t**argv)   // 原型
{
 int i=0;
 int SerialNum = 2;
 STPortAttributeList PortAttributeList[SerialNum];
 printf("Parameter %d\n",argc);

 while(i <argc)
 {
  printf("Parameter%d %s\n",i,*(argv+i));
  i++;
 }
 i = 0;

 getPortA(wp,PortAttributeList);
 while(i<SerialNum)
 {
  websWrite(wp,T("<tr>"));
  websWrite(wp,T("<td>%s</td>"),PortAttributeList[i].port);
  websWrite(wp,T("<td>%s</td>"),PortAttributeList[i].agreement);
  websWrite(wp,T("<td>%s</td>"),PortAttributeList[i].bandrate);
  websWrite(wp,T("<td>%s</td>"),PortAttributeList[i].figure);
  websWrite(wp,T("<td>%s</td>"),PortAttributeList[i].outset);
  websWrite(wp,T("<td>%s</td>"),PortAttributeList[i].termination);
  websWrite(wp,T("<td>%s</td>"),PortAttributeList[i].parityCheck);
  websWrite(wp,T("<td>%s</td>"),PortAttributeList[i].flowControl);
  websWrite(wp,T("</tr>"));
  i++;
 }
 return 0;
}



参考:http://www.docin.com/p-253322636.html

     http://www.docin.com/p-308398551.html

 

 

3、CGI

建立一个cgi.asp,并保存到项目/web/目录下,内容如下:

<formaction="/cgi-bin/cgitest">

<input name="m"SIZE="5">
<input name="n"size="5"><BR>
<input type="submit"value="OK">

</form>

新建 cgitest.c,程序如下:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
 char *data;
 int i;
 long m=0,n=0;
 printf("Content-type: text/html\n\n");
 printf("<TITLE>Multi S</TITLE>");
 printf("<H3>MultiS</H3>");
 data getenv("QUERY_STRING");

 printf("<P>%s\n",data);
 if(data == NULL)
  printf("<P>ERROR! DATA NO INPUT");
 elseif(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2)
  printf("<P>ERROR! DATA GET ERROR");
 else
  printf("<P>%ld * %ld = %ld.", m, n, m*n);

 return 0;
}

编译后把可执行文档 cgitest 保存到 /cgi-bin/ 目录。



 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yyyyyyyyyywwwwwwwwww/article/details/41010413

智能推荐

2020-11-30leetcode 贪心_0xc20a69ad22df7cdc34f792c7a7f7129490e6b07f-程序员宅基地

文章浏览阅读261次。leetcode 55 跳跃游戏思路一:这道题最容易想到的方法就是递归(dfs),但是很不幸的是,使用递归方法,即使使用了空间换时间,优化了花费的时间,依然会超时。。。思路二:贪心算法官方给出的题解也是贪心算法。。之前贪心算法训练得比较少,一时没有想到,需要仔细琢磨。。针对数组中的每个索引,在保证当前索引可达的前提下,寻找当前索引可达的最大范围。。..._0xc20a69ad22df7cdc34f792c7a7f7129490e6b07f

毕业设计 单片机自动追踪灭火系统 - arduino stm32 物联网 嵌入式_基于stm32灭火小车原理图-程序员宅基地

文章浏览阅读1k次。 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是基于单片机的自动追踪灭火系统学长这里给一个题目综合评分(每项满分5分)难度系数:4分工作量:4分创新点:3分基于arduino单片机的灭火装置,当传感器检测到火焰的时候,会自动控制舵机转向灭火。_基于stm32灭火小车原理图

antdesign Pro of vue 自定义菜单栏图标,导航菜单图标引入阿里巴巴矢量库IconFont自定义的图标_ant design pro react 侧边导航使用本地图标-程序员宅基地

文章浏览阅读1.5k次。antdesign Pro of vue自定义菜单突变,引入icontfont_ant design pro react 侧边导航使用本地图标

python基于小程序的物流管理系统flask-django-php-nodejs-程序员宅基地

文章浏览阅读674次,点赞8次,收藏19次。随着计算机技术和网络技术的不断发展,线上管理成为一种新兴的管理方式。既带动了物流等相关产业链的发展,又加剧了行业间的竞争。在这种情况之下,更为高质量的物流服务质量能够获得大批人员群体的青睐,为自身进一步开拓市场奠定良好的基础。

【聚类算法】篇二之KMeans聚类算法及其优化KMeans++,elkan K-Means,Mini Batch K-Means,K中心点算法_kmeans算法参数优化-程序员宅基地

文章浏览阅读3.9k次,点赞5次,收藏24次。篇二之KMeans聚类算法及其优化一、KMeans算法二、优化初始k个中心的KMeans++算法三、优化距离计算量的elkan K-Means算法四、Mini Batch K-Means参考KMeans算法是原型聚类的一种,原型聚类是指基于一组原型进行初始化,然后再利用迭代的方式对原型进行更新求解一、KMeans算法K均值算法基于最小化平方误差的原则,所有簇的平方误差和如下:μi是簇Ci..._kmeans算法参数优化

机器人学基础(2)-微分运动和速度-雅可比矩阵计算、雅可比矩阵求逆、计算关节运动速度_机器人雅可比矩阵选择题-程序员宅基地

文章浏览阅读8.9k次,点赞14次,收藏80次。通过学习本章内容,利用公式,已知机器人关节速度,利用雅可比矩阵可以得到机器人手的运动速度;已知机器人手的运动速度,求雅可比矩阵的逆可以得到机器人各关节的速度。同时也学习了不使用雅可比矩阵求关节速度的方法,利用机器人的逆微分运动方程,就可以确定每个关节速度为多少才能产生所期望的机器人手速度。知道了机器人逆运动方程和逆运动微分方程,即知道机器人在空间中的位置和速度。第一章运动学的正运动方程和逆运动方程是为了求得机器人的位置;本章节的微分运动是在已知位置的基础上求得机器人的运动速度和各个关节速度。_机器人雅可比矩阵选择题

随便推点

PintOS, kernel panic with -v option bochs on ubuntu_run didn't start up properly: no "pintos booting" -程序员宅基地

文章浏览阅读2.6k次。Run didn't start up properly: no "pintos booting" message pintos出错解决方案when i do "pintos -- run alarm-multiple" in .../build/ everything seems fine.but when i do "make ch_run didn't start up properly: no "pintos booting" message

实测:GPT-3.5、GPT-4、Newbing和文心一言,你该怎么选?_gpt 3.5 4 翻译能力-程序员宅基地

文章浏览阅读3.9k次,点赞3次,收藏3次。GPT-4的回答在理解程度、概括能力、语言表达和逻辑结构方面都表现较好,能够较为全面地反映原文的内容和作者的心境。4)文心一言的回答则更深入地分析了原文的意义,表达更具备思想性,用词也非常精准,同时也注重语言的音韵和节奏的变化,更符合文学审美。3)Newbing的回答语义理解相对较为深入,系统地解释了每个时间段的含义,并在简洁的词汇和句子中把它们纳入一个完整的故事中。2)GPT-3.5的回答与GPT-4的回答类似,但在表达方面更为流畅,用词更加优美,更符合文学的风格,有一定的深度。_gpt 3.5 4 翻译能力

工作流-Activiti 开发_java activiti工作流 任务不存在-程序员宅基地

文章浏览阅读1.2k次。工作流-Activiti 开发 工作流概述工作流(workflow)就是工作流程的计算模型,我们常见的请假电子流就是一个简单的工作流。JavaWeb 工作流开发准备使用Eclipse开发,需要安排工作流插件 离线安装安装步骤:Eclipse插件安装 new-&gt;other 检查安装是否成功 简单开发流程1.新建一个..._java activiti工作流 任务不存在

Android基础入门_activity_main.xml-程序员宅基地

文章浏览阅读1.6k次。Android Studio使用_activity_main.xml

JSF+EJB+JPA总体思路-程序员宅基地

文章浏览阅读551次。前言: JSF+EJB+JPA 其实我并没有想象中的难,只是想做好,建立在正确的地方应用,真正的困难. 良好的技术,在错误的地方做应用,这是唯一能够被垃圾. 用. 重量级企业应用能够使用这个主要的3层结构的实现,来添加很多其它的企业级应用.而这些基本上不怎么须要改动,能够说是能够独立开来维护的部分.至于耦合性,关键看怎样建立应用了,这个又和项目開始的分析和设计密切相关.目的: 建立..._jsf+ejb+jpa是什么

jsp 页面跳转传值-程序员宅基地

文章浏览阅读259次。2019独角兽企业重金招聘Python工程师标准>>> ..._jsp页面跳转传值

推荐文章

热门文章

相关标签