如何完成向LMS111传感器发送命令的程序?
自编一个客户端程序,连接传感器并通过发送命令获取传感器测量的数据。现在连接已经解决了,但发送的命令过去后没有任何回应,各位大神帮看一下。
主线程发送命令,另创建一个线程读取传感器反馈的数据,部分代码如下:
void CGetDataDlg::OnBtnSend()
{
// TODO: Add your control notification handler code here
CString strSend;
GetDlgItemText(IDC_EDIT_SEND,strSend);
char* sendData=(LPSTR)(LPCSTR)strSend;
send(m_sockClient,sendData,strlen(sendData)+1,0);
SetDlgItemText(IDC_EDIT_SEND,"");
//将命令显示在接收框内
CString strTemp;
GetDlgItemText(IDC_EDIT_RECV,strTemp);
strTemp+="\r\n";
strTemp+=strSend;
SetDlgItemText(IDC_EDIT_RECV,strTemp);
//额外建立一个线程完成数据接收
PARAMETER *pParam=new PARAMETER;
pParam->sock=m_sockClient;
pParam->hwnd=m_hWnd;
HANDLE hThread=CreateThread(NULL,0,ReceiveProc,pParam,0,NULL);
CloseHandle(hThread);
}
void CGetDataDlg::OnBtnExit()
{
// TODO: Add your control notification handler code here
shutdown(m_sockClient,2);
closesocket(m_sockClient);
WSACleanup();
exit(-1);
}
DWORD WINAPI CGetDataDlg::ReceiveProc(LPVOID lpParameter)
{
SOCKET sock=((PARAMETER*)lpParameter)->sock;
HWND hwnd=((PARAMETER*)lpParameter)->hwnd;
// int recv;
char recvBuf[10000];
memset(recvBuf,0,sizeof(recvBuf));
int len=sizeof(recvBuf)+1;
recv(sock,recvBuf,len,0);
::PostMessage(hwnd,UM_DISPLAY,0,(LPARAM)recvBuf);
return 0;
}
void CGetDataDlg::OnDisplay(WPARAM wParam,LPARAM lParam)
{
CString str=(char*)lParam;
CString strTemp;
GetDlgItemText(IDC_EDIT_RECV,strTemp);
strTemp+="\r\n";
strTemp+=str;
SetDlgItemText(IDC_EDIT_RECV,strTemp);
}