智能家居项目总结以及学习总结

学习总结:

        是一段艰辛的路程,是一段值得回忆的经历,一切都是为了秋招,为了将来有更好的生活,为了能够成为一名嵌入式工程师!

        从熟悉的C语言,半吊子的数据结构和简单算法,linux下的IO操作,进线程编写,socket套接字的应用,QT和C++的学习,ARM A9板子的学习,uboot的移植,linux驱动。一切是值得的!

        个人认为:写代码一定要写好注释和使用说明!设计项目的大框架是影响整个项目进程的一个最重要的东西!自己写代码的逻辑一定要清晰!嵌入式代码应该要考虑一个移植性!你的代码不一定是通用的!

        接手别人的shi山真的不开心,但是看大佬的代码会让人很愉快!

        对C的使用更加娴熟!要更加深入学习C语言,争取成为一名精通C语言的大佬!

        下来一定要再学习计算机组成原理!深入了解指令!

        要掌握常用的数据结构!从数组,链表,队列,栈,常用树,了解图,堆!

        C++,,,,,emm这玩意看以后工作吧,目前来说QT端暂时可以用了

        板子:只接触过ARM A9,stm32f103,C51。有一定的板子编程能力!



        要掌握将主机代码移植到目标机的技能!

        以后一定要搞驱动!把应用层搞明白就必须再去学习驱动!这玩意一定搞懂内核!这应该是一名嵌入式工程师所需要的技能!

附上项目部分代码模块!

数据库同QT通信

 int ret = read(clientfd, buf, sizeof(buf));
            if(-1==ret || 0==ret)
                break;
 sscanf(buf, "%s%s%s", cmd, name, pass);
/*buf是login开头,则是登录*/
            if(0 == strncmp("login", cmd, 5) )
            {
                int ret = db_user_pwd_corrct(name,pass);
				//1允许登录
				printf("%d\n",ret);
				if( 1 == ret)
				{
					write(clientfd,"login ok", 8);
					break;
				}	
			}
			/*buf以register开头,则是注册*/
            else if(0 == strncmp("register", cmd, 8) )
            {
				int ret=db_add_user(name, pass);
                //1注册成功
				if(ret == 1)
				{
					write(clientfd,"register ok", 11);
				}
			}

V4L2框架摄像头 : 部分看不懂的代码请查看对应结构体内容即可以看懂

 

/*数据收发!必须一致才能保证通信正确!*/
//开始拍照
	char buf_size[8]={0};//发的图片大小
	char buf[8]={0};//接受开启视频的信息
	while(1)
	{
		struct pollfd fds[1];
		fds[0].fd = fd;
		fds[0].events = POLLIN; //关注可读
		
		poll(fds, 1, 10000);//等待有图像准备好
		//6.2 提取采样内容
		struct v4l2_buffer buffer;
		buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
		buffer.memory = V4L2_MEMORY_MMAP;
		ioctl(fd, VIDIOC_DQBUF, &buffer);
		
		//视频监控,通过网络发走
		//TODO
		if(-1==read(clientfd,buf,8))
		{
					printf("err!\n");
					close(clientfd);
					return (void*)0;
		}
		if(strncmp(buf,"pic",3)==0)
		{
			//先发图片大小再发图片
			memset(buf_size,0,8);
			//buf_size =itoa(buffer.bytesused);windows的不能跨平台
			sprintf(buf_size,"%d",buffer.bytesused);	
			printf("%s\n",buf_size);
			if(-1==write(clientfd,buf_size,8))
			{
				printf("err!\n");
				close(clientfd);
				return (void*)0;
				//break;		
			}
			if(-1==write(clientfd,addr[buffer.index],buffer.bytesused))
			{
					printf("err!\n");
					close(clientfd);
					return (void*)0;
			}
			//printf("%d\n",buffer.bytesused);
		}

 QT端登录:支持传统账号密码,还支持脸部识别登录(使用百度AI)

         请参考另一博客


版权声明:本文为m0_52282946原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。