首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于串口传送文件的简单有关问题(诚心寻求帮助)

2012-03-15 
关于串口传送文件的简单问题(诚心寻求帮助)我源程序是这样的:当然省略了第一包数据(发送文件名)StringTemp

关于串口传送文件的简单问题(诚心寻求帮助)
我源程序是这样的:当然省略了第一包数据(发送文件名)
        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,当成二进制文件处理。

热点排行