读书人

关于串口传送文件的简单有关问题(诚心

发布时间: 2012-03-15 11:50:38 作者: rapoo

关于串口传送文件的简单问题(诚心寻求帮助)
我源程序是这样的:当然省略了第一包数据(发送文件名)
String Temp=ExtractFileName(filename);
char *path=Temp.c_str();
file=fopen(path, "rb ");
int length=ftell(file);//取文件长度
int k=length/256;//以256字节为一包
for(int i=0;i <k;i++)
{
fseek(file,i*256,SEEK_SET);
char *buffer=(char *)malloc(256);
fread(buffer,sizeof(char),256,file);
AnsiString strls=buffer;
strls= "1212fanlong "+strnumber+strls+ "1219fanlong ";//包头包尾校验
for(int y=0;y <6000;y++)
{
Application-> ProcessMessages();
if(RevThread-> Brev==0)//线程接受到信息后Brev写1
Sleep(1);
else
break;
}//等待线程接收到对方发回的数据确认对方接受完1包数据
RevThread-> Brev=0;
SendData=strls.c_str();
BS=strls.Length();
WriteFile(hComm,SendData,BS,&lrc,NULL);//发送此包
}
串口调试时发觉接收到的是不可识别的东东。我应该怎么改呢?(我发送的是word文档,在c++builder里面提问没人理我,到这里请教一下)qq:443437426,期望得到各位大哥的帮助
下面是接受的开头部分
unsigned long lrc,BS;
Char inbuff[1024];
DWORD nBytesRead,dwEvent,dwError;
COMSTAT cs;
ClearCommError(vComm,&dwError,&cs);
if(cs.cbInQue> sizeof(inbuff))
{
PurgeComm(vComm,PURGE_RXCLEAR);
return;
}
ReadFile(vComm,inbuff,cs.cbInQue,&nBytesRead,NULL);


[解决办法]
fread(buffer,sizeof(char),256,file);
AnsiString strls=buffer;
这里就开始错了,因为字符串需要以0结尾。
[解决办法]
char *buffer=(char *)malloc(256);//word文档不是文本文档,改成 BYTE *buffer,当成二进制文件处理。

读书人网 >VC/MFC

热点推荐