CH378多次写入输出报错

你好,我目前做项目,使用CH378将数据存储到SD卡中,使用了并口方式,参照例程中单字节存储,目前实现了建立TXT文件,并写入了80个字节,

strcpy(FileName,"\\"); 

strcat(FileName,"2018");

strcat(FileName,".TXT");   

status = CH378FileCreate( &FileName );

//写标题栏

mDelaymS( 100 );

status = CH378ByteWrite( Item, 80, NULL );             // 以字节为单位向文件写入数据

mDelaymS( 100 );

status = CH378FileClose( TRUE );

mDelaymS( 100 );

NewSize = 80;

然后再往里面写入240个字节,也没有问题,

CH378FileOpen( FileName );

mDelaymS( 200 );

StatusTemp=CH378ByteLocate(NewSize);

mDelaymS( 200 );

CH378ByteWrite(SDDataSave, 240, NULL );           // 以字节为单位向文件写入数据

mDelaymS( 200 );

CH378FileClose( TRUE );

NewSize=NewSize+240; 

但是我写两次240个字节,用电脑读SD卡,可以看到“2018.TXT”文件,且大小为560个字节(80byte+240byte+240byte,双击打开文件提示不能打开文件H:\2018.TXT”

CH378FileOpen( FileName );

mDelaymS( 200 );

StatusTemp=CH378ByteLocate(NewSize);

mDelaymS( 200 );

CH378ByteWrite(SDDataSave, 240, NULL );           // 以字节为单位向文件写入数据

mDelaymS( 200 );

CH378FileClose( TRUE );

NewSize=NewSize+240; 

CH378FileOpen( FileName );重复写入相同的240个字节

mDelaymS( 200 );

StatusTemp=CH378ByteLocate(NewSize);StatusTemp的返回值为0

mDelaymS( 200 );

CH378ByteWrite(SDDataSave, 240, NULL );           // 以字节为单位向文件写入数据

mDelaymS( 200 );

CH378FileClose( TRUE );

NewSize=NewSize+240; 

求指导,谢谢了。

 


函数的调用与使用是没有任何问题的。这个代码我跑了SD和U盘,均OK。只是“status = CH378FileCreate( &FileName );”应该没有取地址符吧?你试一下,写511字节和写513字节是否有区别?是否该写过378读写函数呢?还可以尝试下其他SD和U盘是否可行。


试了下,写入511个字节是可以的,但写入513个字节就是出现和上面相同的问题?这个是什么原因啊。


画板子的时候把U盘接口也留出来了,手上没有其他SD卡(目前使用的TF卡加SD卡套),然后使用了U盘,就没有出现上面的问题,这个为什么会出现这种情况呢,后面批量的话需要指定SD卡型号和厂家?


把SD卡放在读卡器内,在PC端查看一下,读卡器能否正常在电脑上拷贝、读写等操作。

然后可以在PC端下载一个WINHEX软件查看一下这张插入SD卡的读卡器,看一下这张盘的扇区大小、容量等信息。同时,可以使用378的自动演示功能,在这张盘里面创建一个文件看下扇区大小、容量等信息是否有区别?winhex还可以看到那个打不开文件的一切信息,可以看到文件损坏的原因

SD卡型号和厂家最好使用主流的。廉价的或者是没有按照规范协议开发的SD卡,可能会存在不兼容现象。


只有登录才能回复,可以选择微信账号登录