关于上位机通过UDP于下位机通信问题?

CodeInfo_ 2012-04-09 08:28:03
我的思想是MCU一直不断发送同一个字符‘3’,用上位机接收,发现一个问题,如果在上位机还没打开,单片机就开始工作的话,MFC的上位机就会收到“3烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫?”
单如果是先打开上位机,再让MCU工作的话,收到的就是‘3’,但好像要打开上位机几秒后再开MCU才可以,如果太快打开MCU收到的是‘33’
不知道为什么,另外我上位机打开前是会先进行登录窗口进行密码验证的;
下面附上我接收消息的处理函数:

DWORD WINAPI CShangweijiDlg::RecvProc(LPVOID lpParameter)
{
//获取主线传递的套接字和窗口句柄
SOCKET socket=((recvparam*)lpParameter)->socket;
HWND hwnd=((recvparam*)lpParameter)->hwnd;
delete lpParameter;
SOCKADDR_IN addrFrom;
int len=sizeof(SOCKADDR);

char recvBuf[200];
char tempBuf[300];
int retval;
while(TRUE)
{
//接收数据

retval=recvfrom(socket,recvBuf,200,0,(SOCKADDR*)&addrFrom,&len);
if(SOCKET_ERROR==retval)
break;

if(strlen(recvBuf)!=0)//判断接收是否为空,若不为空执行下一步
{
::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)recvBuf);//将内容传给主窗口
}

}
return 0;
}
//接收消息响应函数
void CShangweijiDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
{
//取出接收到的数据
CString str=(char*)lParam;

CString strTemp;
//获得已有的数据
GetDlgItemText(IDC_EDIT_RECV,strTemp);
str+="\r\n";
str+=strTemp;
//显示所有接收到的数据
SetDlgItemText(IDC_EDIT_RECV,str);
}
...全文
546 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeInfo_ 2012-04-10
  • 打赏
  • 举报
回复
万分感谢,CSDN就是强大
  • 打赏
  • 举报
回复
char recvBuf[200] = "";
char tempBuf[300] = "";;
Eleven 2012-04-09
  • 打赏
  • 举报
回复
初始化一下,Debug下没初始化就是0xCC,0xCC,中文好像就是个烫字
hdg3707 2012-04-09
  • 打赏
  • 举报
回复
char recvBuf[200];
char tempBuf[300];
memset(recvBuf,0,200);//加上初始化为零
memset(tempBuf,0,200);//加上初始化为零

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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