主题 : 读取adc,然后把数据写入到一个文件的问题 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 60735
精华: 0
发帖: 69
金钱: 345 两
威望: 69 点
贡献值: 0 点
综合积分: 138 分
注册时间: 2011-12-15
最后登录: 2013-07-07
楼主  发表于: 2012-01-05 11:31

 读取adc,然后把数据写入到一个文件的问题

请教各位大牛,我写了一个程序,用于读取adc,并把数据写入到一个文件,但是有很多问题。相关程序如下:
void TMainForm::savedata()
{
    int fd=::open("/home/plg/save_ADC.text",O_RDWR|O_CREAT|O_APPEND);
    if(fd<0)
    {
        perror("open file !");
        exit(1);
    }

    int fd_adc=::open("/dev/adc",0);
    if(fd_adc<0)
    {
        perror("open ADC device!");
        exit(1);
    }
    char newdata[30];
    int len=::read(fd_adc,newdata,sizeof newdata);
    if(len<=0)
    {
        perror("read ADC device!");
        exit(1);
    }

    QString data(newdata);
    ::write(fd,data.latin1(),sizeof data.length());
    
    ::close(fd_adc);
    ::close(fd);
}
问题:1,但改变newdata数组大小时,超过40,保存的数据看到的就是乱码;
      2,不是乱码时看到的数据如下:
85
@96
@104
111
119
129
133
-1
@10231023-1
@ 77
@
好像是读的数据是两位(及其)数时,换行后再输出一个@;读的数据是三位数时,显示貌似很正常;读的数据是四位数时,就不换行了。
注:因为我要现实adc波形,所以使用Qtopia编程。
请大牛指教,我都弄了好几天了。先谢过啦!