📄 commrev.cpp
字号:
#include "stdafx.h"
#include "CeTools.h"
#include "UManageView.h"
extern int ExitRevThread2;
/***********************************************************
用途:从串口读取数据存入RvBuff中
调用:独立线程
参数:父指针
返回:不用
***********************************************************/
UINT CommRev( LPVOID pParam )
{
BYTE Buff[600];
int rnum;
int i;
WORD k=0;
CFile cf;
CUManageView* pObject = (CUManageView*)pParam;
if(pObject == NULL || !pObject->IsKindOf(RUNTIME_CLASS(CUManageView))) return 0; // 非法参数
//网络广播
BOOL optval=TRUE;
BOOL NetFlag=FALSE;
SOCKADDR_IN to;
WSADATA wsd;
SOCKET s;
SOCKADDR_IN in;
to.sin_family =AF_INET;
to.sin_addr.s_addr=INADDR_BROADCAST;
to.sin_port=htons(700);
if (WSAStartup(MAKEWORD(1, 1), &wsd) != 0)
return 10;
if((s=socket(AF_INET, SOCK_DGRAM, 0))== INVALID_SOCKET)
return 10;
ZeroMemory(&in,sizeof(in));
in.sin_family =AF_INET;
in.sin_addr.s_addr =INADDR_ANY;
in.sin_port =htons(800);
if(bind(s,(LPSOCKADDR)&in,sizeof(in)) == SOCKET_ERROR)
{
closesocket(s);
pObject->MessageBox("网络创建失败!","错误",MB_ICONERROR);
return 10;
}
if(setsockopt(s,SOL_SOCKET,SO_BROADCAST,(char *)&optval,sizeof(optval))==SOCKET_ERROR)
{
closesocket(s);
pObject->MessageBox("网络创建失败!","错误",MB_ICONERROR);
return 10;
}
NetFlag=TRUE;
///////////////
cf.Open("RevData.bin",CFile::modeCreate|CFile::modeWrite);
k=0;
while(1)
{
pObject->RvStr.TimerCount++;
Sleep(50);
if(ExitRevThread2)//退出
{
cf.Close();
closesocket(s);
return 10;
}
if(pObject->idCom==0)//串口未打开
continue;
rnum=pObject->Read_Com(pObject->idCom,Buff,599);
if(rnum>0)
{
if(NetFlag)//广播
sendto(s,(char *)Buff,rnum,0,(LPSOCKADDR)&to,sizeof(SOCKADDR));
////////////////
pObject->RvStr.TimerCount=0;
//单位时间内收到的数据量
if(rnum<=(R_BUFFER_SIZE-pObject->RvStr.Endp))
{
CopyMemory(&pObject->RvStr.RvBuff[pObject->RvStr.Endp],Buff,rnum);
pObject->AddToList(&pObject->RvStr.RvBuff[pObject->RvStr.Endp],rnum,0);
}
else
{
i=R_BUFFER_SIZE-pObject->RvStr.Endp;
CopyMemory(&pObject->RvStr.RvBuff[pObject->RvStr.Endp],Buff,i);
pObject->AddToList(&pObject->RvStr.RvBuff[pObject->RvStr.Endp],i,0);
CopyMemory(pObject->RvStr.RvBuff,&Buff[i],rnum-i);
pObject->AddToList(pObject->RvStr.RvBuff,rnum-i,0);
}
pObject->RvStr.Endp+=rnum;
pObject->RvStr.Endp%=R_BUFFER_SIZE;
cf.Write(Buff,rnum);
k++;
// if(k%2==0)
pObject->m_AnimateIcon_Ctrl.ShowNextImage();
// pObject->app->ErrCodeRate_m.run=1;
// pObject->app->ErrCodeRate_m.CommTotalLen+=rnum;
}
else
{
pObject->RvStr.TimerCount++;
// if(pObject->RvStr.TimerCount>1200)
// pObject->app->ErrCodeRate_m.run=0;
}
if(ExitRevThread2)
{
cf.Close();
closesocket(s);
return 10;
}
}
cf.Close();
closesocket(s);
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -