[2007/08/16] 初见成效

本文分享了作者在开发嵌入式数据采集系统过程中的经验教训,包括socket编程、结构体使用、编译配置、时间获取方法及A/D转换等关键技术点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

和鑫鑫合作的数据采集系统的第一版终于完成了,有一些心得:

1、对socket连接的总体过程居然没有清晰的认识,编了半天居然没有connect,低级

2、结构体都不会用了,

typedef struct mydata

{}Data;

Data *mydata;

然后就没有给mydata分配空间,狂晕。

接着写出mydata=(struct Data *)malloc(sizeof(Data));

typedef了,当然就不要出现struct!!!

还用了strlen(Data),白痴编程。

3、编译应用程序使用头文件路径/home/zozowit/code/ad/uClinux-dist/linux-2.4.x/include

编译驱动模块使用头文件路径/home/zozowit/code/ad/uClinux-dist/uClibc/include

编译模块时-DMODULE -D__KERNEL__不可少

MODCFLAGS_MOD = -DMODULE -D__KERNEL__ -I$(INCLUDE) -Wall -O2 -fno-strict-aliasing -fno-common -pipe -fno-builtin -D__linux__ -g -DNO_MM -mapcs-32 -march=armv4 -mtune=arm7tdmi -mshort-load-bytes -msoft-float -nostdinc -iwithprefix include

子文件当然也要编译!!!

4、时间获取方法:

time_t timep;
 struct tm *p;
 char buf[20];

 time(&timep);
 p = localtime(&timep);

 sprintf(buf, "%d-%d-%d %d:%d:%d",(1900 + p->tm_year),(p->tm_mon + 1),p->tm_mday,p->tm_hour, p->tm_min, p->tm_sec);/* 不失为itoa的良方

5、传结构体新学

Data *mydata;

write(sock_fd, (void *)mydata, sizeof(Data));

read(sock_fd, (void *)mydata, sizeof(Data));

 

6、A/D转换实际上是read的一部分,并非初学时误认为:启动一次转换,硬件才运行一次,于是应该在启动转换程序外加个循环,让硬件不停产生电压。

错的,电压就在那,A/D转换只是获取电压值然后转成数字量,故应该在应用程序的read外加循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值