关于上位机通过UDP于下位机通信问题?
我的思想是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);
}
单如果是先打开上位机,再让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);
}
...全文
相关推荐
上位机与下位机通信设计初步
介绍了PC机与8051单片机的串口通信的初步知识,比较适合通信的初学者。
上位机与下位机通讯源代码
通信的程序,对的,希望对你们有帮助,哈哈。
FPGA与上位机的UDP通信.zip
使用Verilog写的FPGA代码UDP代码,上位机使用python语言编写接口来接收与发送,完成FPGA与上位机的通信。
网口调试软件,通过pc的网口以TCP/UDP协议和下位机通讯。
网口调试软件,通过pc的网口以TCP/UDP协议和下位机通讯。是做嵌入式网口通讯程序开发的必备工具。
uIP0.9_UDP下位机代码
uIP0.9在STC单片机上的移植,代码包含2部分。 (1)上位机,采用C#编写。基于.NET4.0 (2)下位机,采用C语言编写。


网络编程
