【求助】使用串口助手直接操作U盘读写模块(CH376S),进行写操作,求改正!!

举例说明  往1.TXT文件中写入ABC三个字节

1、57 AB 06 55  (测试命令   回复AA)

2、57 AB 15 06  (选择U盘模式  回复 51 15)

3、57 AB 30     (检测磁盘是否连接   回复14)

4、57 AB 31       (初始化磁盘       回复14)

5、57 AB 2F 2F 31 2E 54 58 54 00  

6、57 AB 32        (打开1.TXT文件   回复14)

7、57 AB 3C 33      (往磁盘里写入3个字节    回复1E)

8、57 AB 2D 31 41   (往磁盘里写入第一个字节 A)

9、57 AB 3D          (继续写)

10、57 AB 2D 31 42  (往磁盘里写入第一个字节 B)

11、57 AB 3D

12、57 AB 2D 31 43  (往磁盘里写入第一个字节 C)


以上是我的想法   只操作到了第7步,再往下就错误了   请高手指教谢谢!!!


3.jpg

第一个红线处的意思是要 57 AB 3C +我要写进去的数据长度   是这个意思吗?

第二个红线处什么意思  没看懂  求解释谢谢

4.jpg

你好:

  1. 首先第7步,请求写入3个字节那么输入命令是57 AB 3C 03 00,请求字节内容又2字节组成,小端格式。

  2. 从第7步开始步骤如下:

    57 AB 3C 03 00 (请求写入3字节,返回中断值 1E)

    57 AB 2D 读一个字节可以写入的长度x(0x03)  连续写入x(3)个数据

    57 AB 3D  (返回中断值 14)

    上诉步骤即可完成数据写入,然后

    57 AB 36 01 (中断返回14  文件关闭)



你好,我按照你的方法,可以写入数据,但是取下U盘检查写的成功与否,发现,如果是新生成的文件,只能看到第一个数据。如果用打开文件,写数据,数据量小于原来的,可以更新;如果大于原来的,超出部分就不能写入。是否我还要进行文件目录操作,才能完成整个的写任务。


"新生成的文件,只能看到第一个数据",是正常的,新生成的文件如果不写入,376会自动创建一个文件长度为1的文件。“大于原来的,超出部分就不能写入”是异常的,你可以用winhex查看当前文件内容超出部分,是否写入?还是因为文件长度未更新?更新文件长度可以采用写1关闭文件或写bytewrite长度0等。


你好jie 。我是用430的汇编程序做的。按照你的步骤,

初始化u盘以后:

1、57 AB 2F 2F 31 2E 54 58 54 00

2、57 AB 34            (生成1.TXT文件  回复 14 )

3、57 AB 3C 10 00 (BYTE WRITE  10字节 回复 1E)

4、57 AB 2D               (WR_REQ_DATA  回复 10)

5、30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F(写入10字节)

6、57 AB 36 01            (FILE_CLOSE  01 回复 14)

在计算机上用 HXD 检查U盘,只出现一个字节 61.(原先写过内容为 "aaaa..."的文件,但是已经删除了)。

 

同样我使用打开原来有的文件 1.TXT ,文件内容 “xxxxxxxx........”操作的步骤:

1、57 AB 2F 2F 31 2E 54 58 54 00

2、57 AB 32            (生成1.TXT文件  回复 14 )

3、57 AB 3C 10 00 (BYTE WRITE  10字节 回复 1E)

4、57 AB 2D               (WR_REQ_DATA  回复 10)

5、30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F(写入10字节)

6、57 AB 36 01            (FILE_CLOSE  01 回复 14)

在计算机上用 HXD 检查U盘,原先写过内容为 "xxxxxxxx..."没有改变。

 

同样我使用打开原来有的文件操作,原来的文件1.TXT,原先写过内容为 "xxxxxxxx..."

操作步骤:

1、57 AB 2F 2F 31 2E 54 58 54 00

2、57 AB 32            (生成1.TXT文件  回复 14 )

3、57 AB 3C 10 00 (BYTE WRITE  10字节 回复 1E)

4、57 AB 2D               (WR_REQ_DATA  回复 10)

5、30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F(写入10字节)

6、57 AB 3D                 (BYTE_WR_GO   回复 14)

7、57 AB 2D                 (WR_REQ_DATA  回复 14)

8、57 AB 36 01            (FILE_CLOSE  01 回复 14)

在计算机上用 HXD 检查U盘,文件内容前10个字节同我写的一样,一旦原来文件内容小于 10字节,那写的字节数只能同原来的一样多。

 

请帮我看看,我是哪里出了问题。

另外,在执行RD_USB_DATA0命令的时候,使用串行口接收是否要用串口接收中断。

 


你的操作步奏就有点问题,命令CMD_BYTE_WRITE和CMD_BYTE_WR_GO为组合命令,即配套使用,你的演示1和2所写的文件本身就有问题。演示3里面虽为组合命令,但是第7步不需要。

执行RD_USB_DATA0命令的时候,可不用中断,使用串口超时等待接收函数。


我写的数据大小为10,小于FF,不需要多次写,没有使用 BYTE_WR_GO  ,能否帮我看看,问题到底出在哪里。

 

1、57 AB 2F 2F 31 2E 54 58 54 00

2、57 AB 34            (生成1.TXT文件  回复 14 )

3、57 AB 3C 10 00 (BYTE WRITE  10字节 回复 1E)

4、57 AB 2D               (WR_REQ_DATA  回复 10)

5、30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F(写入10字节)

6、57 AB 36 01            (FILE_CLOSE  01 回复 14)

 


命令CMD_BYTE_WRITE和CMD_BYTE_WR_GO为组合命令,必须配套使用。


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