ESP32编译器目的易于使用。
但是我在更复杂的物联网项目中遇到了诸如可维护性和可测试性的问题。
在通过手动100%进行代码功能测试之前,我需要编译并刷新ESP32。
该处理方案将Golang转换为Arduino代码,可以使用ESP32工具链将其编译为图像。
现在,我可以使用全自动测试方法,而无需100%手动进行。
重要事项:Transpiler仅支持一小部分。
查看和以获取当前功能。
也不可能触发C/C++垃圾回收,因为Golang会自动在“后台”处理它。
Go字符串将被转换为C常量char数组,可以在堆栈上处理。
安装goget-ugithub.com/andygeiss/esp32-transpiler用法Usageofesp32-transpiler:-sourcestringGolangsourcefile-targetstringArduinosketchfile
2016/4/20 20:01:27 9KB go golang arduino esp32
1
模仿数据链路层的gobackn协议/*该协议是搭载ack的回退n步协议*/#include#include"protocol.h"#definemax_seq7#defineflag126#defineESC100#definewait_time2700 //发送计时器等待的时间#defineack_wait_time280staticintphl_ready=0;unsignedcharbuf[max_seq+1][270];unsignedcharack[8];//发送空的ack帧unsignedcharin_buf[600],last_buf[520];//接收时的缓冲区;去掉冗余之后的缓冲区,为防备因误码两帧合并为一帧而定义了很大一个数组intnbuffered=0;//发送的帧数intbuf_size[max_seq+1];//记下以发送各帧的帧长intnext_frame_to_send=0;intframe_in_phl=0;//用于成帧intframe_expected=0;intack_expected=0;intbetween(inta,intb,intc){ if(((a<=b)&&(b<c))||((c<a)&&(a<=b))||((b<c)&&(c<a))) return1; elsereturn0;}//判断帧尾,防止出现误判escescflag为数据的情况intend_flag(intin_len){ intcount=0; inti; if(in_len=0;i--)//记录flag前的esc数目 count++; returncount%2;//若flag前的esc为偶数,则为帧尾}//成帧函数--数据帧voidsend_frame(char*my_buf,intlen){ intn; buf[frame_in_phl][0]=(frame_expected+max_seq)%(max_seq+1); //ack buf[frame_in_phl][1]=frame_in_phl; //发送帧的帧号 for(n=0;n<len;n++) buf[frame_in_phl][n+2]=my_buf[n]; //将处理过的新帧赋值到缓冲区中 len=len+2; *(unsignedint*)(buf[frame_in_phl]+len)=crc32(buf[frame_in_phl],len); //在原始帧的基础上加检验和 buf_size[frame_in_phl]=len+4; //记录当前帧的长度,包括3个帧头,4个检验和 nbuffered=nbuffered+1; //缓冲区占用数加一 frame_in_phl=(frame_in_phl+1)%(max_seq+1);}//成帧函数--ack帧voidsend_ack() //ack帧的处理{ ack[0]=(frame_expected+max_seq)%(max_seq+1); ack[1]=max_seq+10; //ack帧的序号位,使ack[1]==frame_expected恒不成立 *(unsignedint*)(ack+2)=crc32(ack,2); //在原始帧的基础上加检验和}//主函数intmain(intargc,char**argv){intevent,arg,n,m,i,j,len=0,in_len=0; unsignedcharmy_buf[260]; intphl_wait=0;//在物理层中还没有被发送的帧protocol_init(argc,argv);enable_network_layer();for(;;){event=wait_for_event(&arg);switch(event){caseNETWORK_LAYER_READY:
2019/7/26 21:18:43 425KB go back n gobackn
1
1学生端功能注册用户和登陆,学生可自由的注册用户并登陆在线答疑系统。
资料的修改,注册后学生可以修改自己的注册资料。
查询课程,查询自己感兴味的课程,支持模糊检索。
申请课程,如果学生还不属于某课程,可提交该课程的申请表。
查看提问,学生提出问题后,可以查看该为题的回答情况。
查看参与的提问,学生参与了某些问题的讨论,可以查看所有参与的提问2教师端功能查看未回答的提问,老师登陆后,可以查看未回答的问题列表。
查看已回答的提问,对于已经回答的问题,老师也可查看并继续回复讲解。
添加学生,老师可以为自己的某个课程添加学生用户。
删除学生,老师可以删除自己教授的课程下的学生用户。
3管理端功能课程管理,管理员可以对课程信息进行维护。
用户管理,管理端可以对学生用户和老师用户进行管理。
内容管理,管理员可以对提问内容和回复内容进行管理。
管理员管理,主要是超级管理员对普通管理员的管理4数据库用户表、课程信息表、提问信息表、回复信息表、申请信息表、用户——课程关系表用户表:字段名称 数据类型 字段大小 是否主键 说明UID int N/A 是 用户编号UName varchar 20 否 用户名UPwd varchar 20 否 用户密码UGender char 2否 用户性别UEmail varchar 40 否 电子邮件URole int N/A 否 用户角色UHead varchar 50 否 图像URLURegDate date N/A 否 注册日期UlastLogin datetime N/A 否 最后登陆时间ULastEmit datetime N/A 否 最后发表时间UPermit int N/A 否 用户权限
2017/6/11 23:16:37 7.39MB jsp+mySQL
1
一.Java基础部分 71、一个".java"源文件中能否可以包括多个类(不是内部类)?有什么限制? 72、Java有没有goto? 73、说说&和&&的区别。
84、在JAVA中如何跳出当前的多重嵌套循环? 85、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 96、shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错? 97、char型变量中能不能存贮一个中文汉字?为什么? 98、用最有效率的方法算出2乘以8等於几? 99、请设计一个一百亿的计算器 910、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 1111、"=="和equals方法究竟有什么区别? 1112、静态变量和实例变量的区别? 1213、能否可以从一个static方法内部发出对非static方法的调用? 1214、Integer与int的区别 1315、Math.round(11.5)等於多少?Math.round(-11.5)等於多少? 1316、下面的代码有什么不妥之处? 1317、请说出作用域public,private,protected,以及不写时的区别 1318、Overload和Override的区别。
Overloaded的方法能否可以改变返回值的类型? 1419、构造器Constructor能否可被override? 1520、接口能否可继承接口?抽象类能否可实现(implements)接口?抽象类能否可继承具体类(concreteclass)?抽象类中能否可以有静态的main方法? 1521、写clone()方法时,通常都有一行代码,是什么? 1522、面向对象的特征有哪些方面 1523、java中实现多态的机制是什么? 1724、abstractclass和interface有什么区别? 1725、abstract的method能否可同时是static,能否可同时是native,能否可同时是synchronized? 1826、什么是内部类?StaticNestedClass和InnerClass的不同。
1927、内部类可以引用它的包含类的成员吗?有没有什么限制? 2028、AnonymousInnerClass(匿名内部类)能否可以extends(继承)其它类,能否可以implements(实现)interface(接口)? 2129、super.getClass()方法调用 2130、String是最基本的数据类型吗? 2231、Strings="Hello";s=s+"world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 2232、能否可以继承String类? 2333、Strings=newString("xyz");创建了几个StringObject?二者之间有什么区别? 2334、String和StringBuffer的区别 2335、如何把一段逗号分割的字符串转换成一个数组? 2436、数组有没有length()这个方法?String有没有length()这个方法? 2437、下面这条语句一共创建了多少个对象:Strings="a"+"b"+"c"+"d"; 2438、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? 2539、下面的程序代码输出的结果是多少? 2540、final,finally,finalize的区别。
2741、运行时异常与一般异常有何异同? 2742、error和exception有什么区别? 2843、Java中的异常处理机制的简单原理和应用。
2844、请写出你最常见到的5个runtimeexception。
2845、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? 2946、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用? 2947、sleep()和wait()有什么区别? 3048、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
3249.下面两个方法同步吗?(自己发明) 3350、多线程有几种实现方法?同步有几种实现方法? 3351、启动一个线程是用run()还是start()?.
2020/1/1 8:23:26 771KB java面试资料
1
一、 实验目的与要求学习用汇编言语编写与设计分支循环程序。
题目:分类统计字符个数COUNT_CHAR二、 实验内容程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其他字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中。
1
设计思想(1)程序主体结构部分:说明部分%%规则部分%%辅助程序部分(2)主体结构的说明在这里说明部分告诉我们使用的LETTER,DIGIT,IDENT(标识符,通常定义为字母开头的字母数字串)和STR(字符串常量,通常定义为双引号括起来的一串字符)是什么意思.这部分也可以包含一些初始化代码.例如用#include来使用标准的头文件和前向说明(forward,references).这些代码应该再标记"%{"和"%}"之间;规则部分>可以包括任何你想用来分析的代码;我们这里包括了忽略所有注释中字符的功能,传送ID名称和字符串常量内容到主调函数和main函数的功能.(3)实现原理程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码方式的编码,用以区分之。
PL/0语言的EBNF表示::==;::=={|};::=+|-::=*|/::==|#|=::=a|b|…|X|Y|Z::=0|1|2|…|8|9三:设计过程1.关键字:void,main,if,then,break,int,Char,float,include,for,while,printfscanf并为小写。
2."+”;”-”;”*”;”/”;”:=“;”:”;”=“;”“;”=“;”(“;”)”;”;”;”#”为运算符。
3.其他标记如字符串,表示以字母开头的标识符。
4.空格符跳过。
5.各符号对应种别码关键字分别对应1-13运算符分别对应401-418,501-513。
字符串对应100常量对应200结束符#四:举例说明目标:实现对常量的判别代码:digit[0-9]letter[A-Za-z]other_char[!-@\[-~]id({letter}|[_])({letter}|{digit}|[_])*string{({letter}|{digit}|{other_char})+}int_num{digit}+%%[|\t|\n]+"auto"|"double"|"int"|"struct"|"break"|"else"|"long"|"switch"|"case"|"enum"|"register"|"typedef"|"char"|"extern"|"return"|"union"|"const"|"float"|"short"|"unsigned"|"continue"|"for"|"signed"|"void"|"default"|"goto"|"sizeof"|"do"|"if"|"static"|"while"|"main"{Upper(yytext,yyleng);printf("%s,NULL\n",yytext);}\"([!-~])*\"{printf("CONST_string,%s\n",yytext);}-?{int_num}[.]{int_num}?([E][+|-]?{int_num})?{printf("CONST_real,%s\n",yytext);}"0x"?{int_num}{printf("CONST_int,%s\n",yytext);}","|";"|"("|")"|"{"|"}"|"["|"]"|"->"|"."|"!"|"~"|"++"|"--"|"*"|"&"|"sizeof"|"/"|"%"|"+"|"-"|">"|"="|">="|"<<="|"&="|"^="|"|="|"="{printf("%s,NULL\n",yytext);}{id}{printf("ID,%s\n",yytext);}{digit}({letter})+{printf("error1:%s\n",yytext);}%%#includeUpper(char*s,intl){inti;for(i=0;i<l;i++){s[i]=toupper(s[i])
2021/11/7 5:50:07 105KB 词法分析器制作
1
功能和界面比较简单的一个管理系统。
(1)数据库管理系统选用MySQL5.5。
(2)数据库访问方式选用数据源JDBC。
(3)系统开发语言选择Java。
(4)系统界面swing。
(5)开发环境eclipse药品由专门的采购人员从医药经销商处购进医药超市,并将药品信息记录入库,顾客从超市购买药品需填写相关个人信息,每次售药需登记经办人(医药超市员工,即销售人员)的信息,以及所售药品的信息。
简化的系统数据库(MediDB)中次要包含以下三个数据表(设计时可根据实际业务需要适当追加其它的数据表),各表及其相应字段分别描述如下:1.顾客信息表(client)编号cno:char(10)姓名cname:nvarchar(8)性别csex:nchar(1)男 或 女年龄cage:int(4)住址caddress:nvarchar(50)电话cphone:nvarchar(20)症状csymptom:nvarchar(50)已购药品mno:char(12)经办人ano:char(8)录入日期cdate:datetime(8)备注cremark:nvarchar(50)2.经办人信息表(agency)编号ano:char(8)姓名aname:char(8)性别asex:nchar(1)男 或 女电话aphone:char(12)备注aremark:varchar(50)3.药品信息表(medicine)编号mno:char(12)名称mname:nvarchar(50)服用方法mmode:nchar(2)内服 或 外用功效mefficacy:nvarchar(50)
1
一、1.Pleasedownloadandinstalltheglutlibrary.2.WriteacompleteprogramusingthefollowingcodestodrawaSierpinskigasket.voidmyinit(){//attributesglClearColor(1.0,1.0,1.0,1.0);glColor3f(1.0,0.0,0.0);//setupviewingglMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0,50.0,0.0,50.0);glMatrixMode(GL_MODELVIEW);}voiddisplay(){GLfloatvertices[3][3]={{0.0,0.0,0.0},{25.0,50.0,0.0},{50.0,0.0,0.0}};//anarbitrarytriangleintheplanez=0;GLfloatp[3]={7.5,5.0,0.0};//orsetanydesiredinitialpointwhichisinsidethetriangle;intj,k;intrand();glBegin(GL_POINTS);for(k=0;k<5000;k++){/*pickarandomvertexfrom0,1,2*/j=rand()%3;//computenewlocation;p[0]=(p[0]+vertices[j][0])/2;p[1]=(p[1]+vertices[j][1])/2;//displaynewpointglVertex3fv(p);}glEnd();glFlush();}#includevoidmain(intargc,char**argv){glutInit(&argc;,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutInitAWindowSize(500,500);glutInitWindowPosition(0,0);glutCreateWindow(“SimpleOpenGLExample”);glutDisplayFunc(display);myinit();glutMainLoop();}3.实现DDA和Bresenham画线算法(1)画10万以上随机生成的直线段,比较两个算法的平均时间.(2)分别把屏幕上的1*1,5*5,9*9像素当作直线段上的一个点,观察线段的走样情况.二、请写一个OpenGL(如果熟悉WebGL也可以用)程序完成如下任务(1)读入三维网格模型的obj文件;(2)用OpenGL函数glTranslatef()对模型模型进行平移,使得其重心位于原点;(3)用函数glLookAt()设置视点,并且要求试点绕模型一周,以便用透视投影观察各个侧面;(4)要求利用真实感绘制对模型进行渲染.(利用OpenGL函数设置光源,材质,计算好每个三角形的法向量后,利用OpenGL的glNormal函数给待绘制的三角形设置法向量).绘制的结果大概如下:三、本实验为综合实验,任务是利用光线跟踪算法进行Whitted全局光照计算,并对读入场景进行真实感绘制。
(特别提示:网上类似的projects可以参考,但不能照抄.如http://tobias.isenberg.cc/graphics/LabSessions/RaytracingProject,http://physbam.stanford.edu/links/ray_tracing/project_ray_tracing.htmlhttps://www.cs.utexas.edu/~fussell/courses/cs354/assignments/raytracing/handout.shtml)(1)参加对象:本实验针对所有选课同学,3-5人组成一个小组,共同实现;
非15级同学在组队方面有困难的话可与老师沟通.(2)实验结果提交:每人都要求提交一份.内容包括a.源程序;可执行代码;三维场景数据;同组的同学这部
2021/5/20 14:17:55 48.13MB 华南理工大学 图形学实验
1
#include#includeusingnamespacestd;intchoice;inta=0,b=0,c=0,d=0;intuser_input;voidS(intColor){HANDLEhCon=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hCon,Color);}voidwait(){Sleep(100);user_input=getchar();}voidcls(){Sleep(100);system("cls");}intmain(intargc,char*argv[]){S(172);start:cls();gotoa1;gameover:printf("游戏结束。
");printf("按回车键继续");user_input=getchar();gotostart;a1:printf("现在游戏开始。
");user_input=getchar();printf("一天,你正在开飞机经过一片雪山区。
");wait();printf("忽然你的操作系统失控了,飞机直直地坠入山中。
");wait();printf("你朝两旁看了看,左边是雪地,右边是树林。
而你正前方是悬崖,所以你不得不转弯。
\n1-左转。
\n2-右转。
\n");s1:wait();switch(user_input){case'1':gotoa8;case'2':gotoa13;default:gotos1;}a2:cls();printf("你下了飞机,走向树林。
");wait();printf("过了一会儿,你感到又饿又冷,就喝了一点威士忌,坐下休息。
");wait();printf("但是,威士忌并没有让你觉得温暖。
你只是觉得很冷、很冷。
\n");gotogameover;a3:cls();printf("你吃了一些果实,还摘了一些放在口袋,想晚一点吃。
");wait();printf("过了一会儿,你的肚子剧烈的痛起来。
这时,你才意识到,果子有毒!\n");gotogameover;a4:cls();printf("你能否要继续往隧道里走?\n1-是。
\n2-不了。
\n");s4:wait();switch(user_input){case'1':gotoa18;case'2':gotoa22;default:gotos4;}a5:cls();printf("你能带三件东西下飞机。
请选择:\n1-香蕉、打火机、外套。
\n2-威士忌、外套、匕首。
\n");s5:wait();switch(user_input){case'1':gotoa10;case'2':gotoa2;default:gotos5;}a6:cls();printf("你走到了隧道里,隧道里很黑,忽然你被一个东西绊倒了。
\n");wait();printf("你爬起来,看了看地上的东西,原来是一条麻绳。
\n1-捡起来。
\n2-置之不理。
\n");s6:wait();switch(user_input){case'1':gotoa11;case'2':gotoa23;default:gotos6;}a7:cls();printf("你呆在飞机里,感到越来越冷,你不得不离开了飞机。
\n");gotoa5;a8:cls();printf("随着“噗”地一声闷响,你的飞机安全降落在雪地上。
");wait();printf("你要离开飞机去找东西吗?\n1-离开。
\n2-待着。
\n");s8:wait()
2020/2/14 7:27:53 1.84MB C++ 代码类 游戏 生存
1
《数据结构》(C语言版)算法源码及运行演示系统使用说明一、启动演示系统双击演示系统应用程序文件“DS_VC_ALGO.EXE”启动演示系统,出现图1所示界面。
图1《数据结构》(C语言版)算法源码及运行演示系统主界面二、演示系统使用步骤除了个别算法之外,演示系统给出了《数据结构》(C语言版)书中算法对应的程序代码(CPP文件)和测试运行程序(VC++6.0的EXE文件)。
通过本系统,可以显示算法的源代码以及运行结果。
具体操作步骤如下:1.选择相应章单击演示系统界面右侧章选择按钮。
例如,要选择第6章,则单击“第6章”选择按钮。
当相应章被选择后,窗口的右侧部分将列出本章的算法选择按钮。
例如,选择第6章后,窗口的右侧部分将显示第6章中的算法6.1-6.13和6.15的选择按钮。
由于书中的算法6.14和6.16只是示意性算法,故未给出源码,其按钮上的文字为灰色,处于“无效”状态。
2.选择相应章中的算法单击窗口右侧部分所列举的本章某个算法选择按钮,被选择的算法的源码将在窗口左侧空白区域中显示。
对于较长的源码,单击显示区域后,可用键盘的光标键和翻页键浏览源码。
例如,选择了第6章中的算法6.5后界面如图2所示:图2选择算法6.53.运行测试程序单击窗口上部的“运行”按钮,将弹出运行窗口,运行所选算法的测试程序。
若运行按钮为灰色,表示该算法无单独测试程序。
例如,算法6.5的测试运行窗口如图3所示:图3测试运行窗口测试运行说明:测试运行窗口显示程序的执行过程及结果。
若在显示过程中出现运行窗口无法正常演示的情况,只需调节运行窗口大小即可正常显示(调节最小化按钮或窗口最大化/还原按钮“”)。
三、退出演示系统使用完毕后,单击窗口右上角关闭按钮“”退出演示系统。
四、测试程序示例在《数据结构》的课程教学中,各抽象数据类型的设计与实现是重要的学习和实践环节。
为此,本系统只给出了各算法源码的测试程序的可执行文件。
在此,给出算法6.5的测试程序示例,以供参考。
算法6.5是中序遍历线索二叉树的非递归算法,要对其源码进行测试,可首先调用算法6.6及6.7建立中序线索二叉树。
以下是测试程序的源码,相关类型和辅助函数定义在文件include06.h和include06.cpp中,此略。
//test0605.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include"include06.h"//相关类型和辅助函数的定义BiThrTreepre;//线索二叉树遍历辅助变量#include"algo0607.cpp"//算法6.7源码#include"algo0606.cpp"//算法6.6源码#include"algo0605.cpp"//算法6.5源码intmain(intargc,char*argv[]){chargl_str[64];BiThrTreeT;BiThrTreeThrt;printf("*******************************************\n");printf("*《数据结构》(C语言版)严蔚敏,吴伟民*\n");printf("*算法6.5,6.6&6.7*\n");printf("*******************************************\n");srand((unsigned)time(NULL));//随机函数初始化T=NULL;//空二叉树Tfor(intpass=0;pass<5;pass++){//测试运行5次,第一次为空树outBiThrTree(T,gl_str);//以类广义表的方式输出二叉树T到gl_strprintf("T=%s\n",gl_str);//显示pre=NULL;Statusr=InOrderThreading(Thrt,T);//算法6.6,6.7,中序线索化printf("InOrderThreading(Thrt,T):%s\n",(r)?"OK":"ERROR");initVisitStr();//将visitStr清为空串InOrderTraverse_Thr(Thrt,v
2018/10/26 23:48:18 2.92MB 严蔚敏 数据结构 C语言 源代码
1
共 76 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡