怎么用串口控件发送二进制文件

tcp8587 2009-08-14 08:39:27
RT,用微软的MSCOMM控件,怎么发送二进制的文件,比如发送一个EXE文件?
...全文
535 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcp8587 2009-10-30
  • 打赏
  • 举报
回复
呵呵,问题已经解决。

定制通信协议,加控制字符。
tcp8587 2009-08-25
  • 打赏
  • 举报
回复
人气怎么这么低?

我现在是发送可以实现。

现在的问题是串口控件有一个字符就触发onmsocmmcom消息处理函数,本应该读到一个数据包后再进行处理。那如果在处理数据包的过程中,串口缓冲区收到数据,那么是继续处理还是返回响应消息处理函数?

还有一个,我是该把收到的数据全都存起来再进行处理还是边接收边处理,如果边接收边处理,那如果处理不及会不会有数据丢失。如果全部接收呢,那要是一个64M的文件,我不可能分配这么大的缓冲区把它先存起来,那效率是不是太低了点?
tcp8587 2009-08-21
  • 打赏
  • 举报
回复
我定义了通信协议。

程序初始时都处于接收状态。

发送方先发一个请求包,接收方收到请求包后选择是否保存文件,是的话返回ACK,发送方开始发数据,不保存的话返回NAK,发送方停止处理,返回接收状态。

用的是控件实现,我在控件的ONCOMMSCOMM()消息响应函数中实现先判断接收到的包类型,再发送数据包。可是现在只能发出去请求包,接收方不反应。
zoulie 2009-08-15
  • 打赏
  • 举报
回复
接受端收到数据就以2进制(打开的模式)写进文件,例如保存成sample.exe
socoola 2009-08-15
  • 打赏
  • 举报
回复
收数据:给串口控件添加消息 
void CTest_mscommDlg::OnOnCommMscomm()
{
VARIANT m_input;
char *str,*str1;
int k,nEvent,i;
CString str2,m_RcvData;
nEvent=m_MSComm.GetCommEvent();
switch(nEvent)
{
case 2:
k=m_MSComm.GetInBufferCount(); //接收缓冲区的字符数目
if(k>0)
{
m_input=m_MSComm.GetInput();
str=(char*)(unsigned char*)m_input.parray->pvData;
}
i=0;
str1=str;
while(i {
i++;
str1++;
}
*str1='{post.content}';
str2=(const char*)str; //清除字符串中的不必要字符
m_RcvData=(const char *)str;
}
//数据显示处理
m_disp+=m_RcvData;
UpdateData(false);
tcp8587 2009-08-15
  • 打赏
  • 举报
回复
呵呵,多谢楼上各位。我发送已经解决了。现在的问题是我发送一个二进制文件过去后接收方怎么还原。以EXE文件为例,我接收到的肯定要能运行。这个该怎么办?
zgl7903 2009-08-15
  • 打赏
  • 举报
回复
分帧发送: 帧头 + 控制信息 + 数据 + 校验 + 帧尾
zoulie 2009-08-14
  • 打赏
  • 举报
回复
将文件以2进制打开,读出来,然后发送
danxuezx 2009-08-14
  • 打赏
  • 举报
回复
http://www.programfan.com/CLUB/archives/130/129343.html
http://www.china-askpro.com/msg42/qa84.shtml
socoola 2009-08-14
  • 打赏
  • 举报
回复
SetInputMode(1)设置以二进制方式读写数据。
发送数据实例:

int i,Count;
CString m_SendData;
m_SendData="Hello!";
Count=m_SendData.GetLength();
CByteArray m_Array;

m_Array.RemoveAll();
m_Array.SetSize(Count);

for(i=0;i m_Array.SetAt(i,m_SendData[i]);
m_MSComm.SetOutput(COleVariant(m_Array));

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧