学习总结:
是一段艰辛的路程,是一段值得回忆的经历,一切都是为了秋招,为了将来有更好的生活,为了能够成为一名嵌入式工程师!
从熟悉的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版权协议,转载请附上原文出处链接和本声明。