CH376串口字节读取数据问题

我为什么调用s = CH376ByteRead(buf, 255, &RealCount ); 函数的时候返回数据比较短。

UINT8CH376ByteRead( PUINT8 buf, UINT16 ReqCount, PUINT16 RealCount )  /* 以字节为单位从当前位置读取数据块 */

{

UINT8s;

xWriteCH376Cmd( CMD2H_BYTE_READ );

xWriteCH376Data( (UINT8)ReqCount );

xWriteCH376Data( (UINT8)(ReqCount>>8) );

xEndCH376Cmd( );

if ( RealCount ) *RealCount = 0;

while ( 1 ) {

s = Wait376Interrupt( );

if ( s == USB_INT_DISK_READ ) {

s = CH376ReadBlock( buf );  /* 从当前主机端点的接收缓冲区读取数据块,返回长度 */

xWriteCH376Cmd( CMD0H_BYTE_RD_GO );

xEndCH376Cmd( );

buf += s;

if ( RealCount ) *RealCount += s;

}

/*else if ( s == USB_INT_SUCCESS ) return( s );*/  /* 结束 */

else return( s );  /* 错误 */

}

}

是不是这个地方有问题!

我这样改动就偶尔读取数据超时,具体改动余下。

 do{

s = CH376ReadBlock( buf );  /* 从当前主机端点的接收缓冲区读取数据块,返回长度 */

                 buf += s;

RealCount += s;

s = CH376GetIntStatus();

}while(s!=0X1D);

希望技术解决疑惑!

下面是读取文件的数据

25 0D 0A 4F 30 30 30 30 28 54 29 0D 0A 4E 31 30 30 20 47 32 31 0D 0A 4E 31 31 30 20 30 20 47 34 39 20 47 38 30 20 47 39 30 0D 0A 4E 31 32 30 20 54 32 31 39 20 4D 36 0D 0A 4E 31 33 30 20 47 30 20 47 39 30 20 47 35 34 20 58 2D 37 35 2E 20 59 31 30 2E 20 41 30 2E 20 53 33 35 30 30 20 4D 33 0D 0A 4E 32 31 39 20 5A 32 35 2E 0D 0A 4E 31 35 30 20 5A 31 30 2E 0D 0A 4E 31 36 30 20 47 31 20 5A 2D 31 31 37 30 20 58 2D 36 35 2E 0D 0A 4E 31 38 30 20 47 32 20 58 2D 35 35 2E 20 59 30 2E 20 49 30 2E 20 4A 2D 31 30 2E 0D 0A 4E 31 39 30 20 47 33 20 58 30 2E 20 59 2D 35 35 2E 20 49 35 35 2E 20 4A 30 2E 0D 0A 4E 32 30 2E 20 49 30 2E 20 4A 35 35 2E 0D 0A 4E 32 31 30 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 58 30 2E 20 59 35 35 2E 20 49 2D 35 35 2E 20 4A 30 2E 0D 0A 4E 32 32 30 20 58 2D 35 2E 20 4A 2D 35 35 2E 0D 0A 4E 32 33 30 20 47 32 20 58 2D 36 35 2E 20 59 2D 31 30 2E 20 49 2D 31 32 34 30 20 47 31 20 58 2D 37 35 2E 0D 0A 4E 32 35 30 20 47 30 20 5A 32 34 2E 0D 0A 4E 32 36 30 20 59 31 30 2E 0D 0A 4E 32 37 30 20 5A 39 2E 0D 0A 4E 32 38 30 20 47 31 20 5A 2D 32 2E 20 46 33 2E 36 0D 0A 4E 32 39 30 20 58 30 20 47 32 20 58 2D 35 35 2E 20 59 30 2E 20 49 30 2E 20 4A 2D 31 30 2E 0D 0A 4E 33 31 30 20 47 33 20 58 30 2E 20 59 2D 35 35 2E 20 49 35 33 32 30 20 58 35 35 2E 20 59 30 2E 20 49 30 2E 20 4A 35 35 2E 0D 0A 4E 33 33 30 20 58 30 2E 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0

在4E 32 31 30 20数据后读取出问题!

翻译字符

%

O0000(T)

N100 G21

N110 0 G49 G80 G90

N120 T219 M6

N130 G0 G90 G54 X-75. Y10. A0. S3500 M3

N219 Z25.

N150 Z10.

N160 G1 Z-1170 X-65.

N180 G2 X-55. Y0. I0. J-10.

N190 G3 X0. Y-55. I55. J0.

N20. I0. J55.

N210 ?X0. Y55. I-55. J0.

N220 X-5. J-55.

N230 G2 X-65. Y-10. I-1240 G1 X-75.

N250 G0 Z24.

N260 Y10.

N270 Z9.

N280 G1 Z-2. F3.6

N290 X0 G2 X-55. Y0. I0. J-10.

N310 G3 X0. Y-55. I5320 X55. Y0. I0. J55.

N330 X0. 

下面是源文件

%

O0000(T)

N100 G21

N110 G0 G17 G40 G49 G80 G90

N120 T219 M6

N130 G0 G90 G54 X-75. Y10. A0. S3500 M3

N140 G43 H219 Z25.

N150 Z10.

N160 G1 Z-1. F3.6

N170 X-65.

N180 G2 X-55. Y0. I0. J-10.

N190 G3 X0. Y-55. I55. J0.

N200 X55. Y0. I0. J55.

N210 X0. Y55. I-55. J0.

N220 X-55. Y0. I0. J-55.

N230 G2 X-65. Y-10. I-10. J0.

N240 G1 X-75.

N250 G0 Z24.

N260 Y10.

N270 Z9.

N280 G1 Z-2. F3.6

N290 X-65.

N300 G2 X-55. Y0. I0. J-10.

N310 G3 X0. Y-55. I55. J0.

N320 X55. Y0. I0. J55.

N330 X0. Y55. I-55. J0.

N340 X-55. Y0. I0. J-55.

在N140 怎么又掉了几个字符?!


丢失的数据是固定字节吗?376的中断是怎么处理的呢?后续问题您可以拨打025—52638373咨询


非常感谢大家,问题找到了。中断函数处理等待时间不够。现在随便怎么读都可以了,读一个文件需要8分钟





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