The_rain_of_May 2022-01-09 22:57 采纳率: 77.8%
浏览 23
已结题

imx6q开发板,使用write写了一个504000字节的.txt文档,能写进去,但是用记事本,word打开,全是乱码

问题遇到的现象和发生背景
我用的是imx6q开发板,使用eim读取fpga数据,fpga位宽16bit。一次要读取50400个字。等于一次要向SSD写入50400个字节,我看了下没有超过一次write的最大字节数。
问题相关代码,请勿粘贴截图
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
/* file management */
#include <sys/stat.h>
#include <fcntl.h>
/* sleep, write(), read() */
#include <unistd.h>
#define FPGA_BYTE 504000

typedef unsigned char uint8
typedef unsigned short  uint16
typedef unsigned int    uint32

/*extern*/
extern uint16 FPGA_buf[252000];

/*
 *@function:采集数据到固态硬盘
*/
uint8 DataToDisk()
{
    uint32 savefd;
    uint32 savefw;

    if((savefd=open(txtfile,FLAGS,MODE)) < 0)    //txtfile:以当前时间命名文件名。
    {
        return -1;
    }

    if((savefw=write(savefd,(char*)FPGA_buf,FPGA_BYTE)) < 0)
    {
        return -1;
    }
    
    return 0;
}
运行结果及报错内容

img

我的解答思路和尝试过的方法
我查阅了一些资料,尝试过更改编码格式,比如utf-8,但依然是乱码。
又尝试过使用fopen,fprintf进行写操作,发现写入字节数不对。
我想要达到的结果
显示正确的数据,比如504000个数字等
  • 写回答

2条回答 默认 最新

  • qllaoda 2022-01-10 10:35
    关注

    补充一下,要不要用文本格式显示,取决于数据用途,如果是给人看,那当然建议用文本格式,而且你还不能简单的转成字符串就完了,还得加上一些补充文本说明,否则人看到一大串数字也搞不清楚。
    如果是给电脑软件做进一步处理,那可以用二进制格式,但是建议加上一个文件头,里面有格式符,校验,长度等信息,方便电脑软件对数据做一些预处理。
    折中的格式是CSV,一种表格格式,既方便人看,也方便电脑处理,格式也简单,单片机好处理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 创建了问题 1月9日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度