我用CH375字节方式写入数据,几个全局变量定义在主函数外面。 把外设的数据读到这几个变量里,然后把这几个变量的值写到U盘里,上电后接上U盘,写进去的数据是对的,数据如下: 序号:0 时间:20111111111111 温度:22 序号:1 时间:20664453543511 温度:77
但是把U盘拔出来,再接进去,读出来就错了。。。 序号: 时间: 温度: 序号: 时间: 温度:
复位一下单片机,就对了,拔出来再接进去就错了。。。 求指点..谢谢
我用CH375字节方式写入数据,几个全局变量定义在主函数外面。 把外设的数据读到这几个变量里,然后把这几个变量的值写到U盘里,上电后接上U盘,写进去的数据是对的,数据如下: 序号:0 时间:20111111111111 温度:22 序号:1 时间:20664453543511 温度:77
但是把U盘拔出来,再接进去,读出来就错了。。。 序号: 时间: 温度: 序号: 时间: 温度:
复位一下单片机,就对了,拔出来再接进去就错了。。。 求指点..谢谢
U盘连接在CH375上,你是怎么检测这个数据是正确的?假设你写的数据是对的,如果存在这种现象,写完数据后,等待U盘上的灯不闪后再将U盘拔出。
你的几个全局变量在 主函数中有没有初始化,U盘端开和连接之后,这几个变量的值是否影响到U盘的数据写入
我在大while循环里,每次都初始化他们,但还是错的,像下面那样 time[0]=66;time[1]=44;time[2]=53;time[3]=54;time[4]=35;time[5]=11;temper=77; fun();// fun函数是写数据的,由下面两个函数组成,一个写整数,一个写字符串 void charge_d(unsigned char t) { unsigned char *p; sprintf(p,"%d",t); mCmdParam.ByteWrite.mByteCount=strlen(p);//字符串长度 strcpy((char *)mCmdParam.ByteWrite.mByteBuffer ,p);//字符串内容 CH375ByteWrite(); }
void charge_c(unsigned char *q) { mCmdParam.ByteWrite.mByteCount=strlen(q);//字符串长度 strcpy((char *)mCmdParam.ByteWrite.mByteBuffer ,q);//字符串内容 CH375ByteWrite(); }
甚至我把那几个全局变量定义到主函数里,每次循环都初始化,还是一样的结果。
如果不行就算了,毕竟不是硬件问题,多谢帮忙了!
可能是你的程序问题。 序号: 时间: 温度: 序号: 时间: 温度: 为什么汉字是正确的?数字不是正确的?这可能是转换错误。 你不用转换,直接这样做 mCmdParam.ByteWrite.mByteBuffer[0] = 0x31; mCmdParam.ByteWrite.mByteBuffer[1] = 0x32; mCmdParam.ByteWrite.mByteBuffer[2] = 0x33; mCmdParam.ByteWrite.mByteBuffer[3] = 0x34; mCmdParam.ByteWrite.mByteBuffer[4] = 0x35; 依次往下写 看看数据是否正确