3,245
社区成员
发帖
与我相关
我的任务
分享
void PASCAL CallBackFunc(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2)
{
CLinMasterNodeTestDlg* dlg = (CLinMasterNodeTestDlg*)dwUser;
if(!dlg->m_mscomm.GetPortOpen())
{
if(NOTopenCOMflagonce==0)
{
NOTopenCOMflagonce=1;
}
return;
}
if(stream==0)
{
dlg->m_mscomm.SetBreak(1);
stream=1;
}
else if(stream==1)
{
if(dlg->m_Frei.GetCheck())
{
LIN_txdata1|=1<<1;
}
else
{
LIN_txdata1&=~(1<<1);
}
if(dlg->m_Autark.GetCheck())
{
LIN_txdata1|=1<<0;
}
else
{
LIN_txdata1&=~(1<<0);
}
if(dlg->m_Vorw.GetCheck())
{
LIN_txdata1|=1<<2;
}
else
{
LIN_txdata1&=~(1<<2);
}
dlg->m_mscomm.SetBreak(0);
CByteArray array2;
static int x=0;
x++;
if(x&1)
{
array2.SetSize(5);
array2.SetAt(0,0x55);
T_u8 PIDresult=0;
PIDresult=IDconvertPID(58);
array2.SetAt(1,PIDresult);
array2.SetAt(2,LIN_txdata1);
array2.SetAt(3,Send59dataarray[1]);
Send59dataarray[0]=LIN_txdata1;
T_u8 Enhancecheksum1=0;
Enhancecheksum1=EnhancedChecksum(Send59dataarray,2,PIDresult);
array2.SetAt(4,Enhancecheksum1);
dlg->m_mscomm.SetOutput(COleVariant(array2));
}
else
{
//dlg->m_mscomm.SetOutBufferCount(0);
array2.SetSize(2);
array2.SetAt(0,0x55);
T_u8 PIDresult1=0;
PIDresult1=IDconvertPID(59);
array2.SetAt(1,PIDresult1);
dlg->m_mscomm.SetOutput(COleVariant(array2));
Requestflag=1;
}
delay=100;
stream=2;
}
else if(stream==2)
{
if(delay)
delay--;
else
{
stream=0;
//while(dlg->m_mscomm.GetOutBufferCount()>5);
//dlg->m_mscomm.SetSettings("19200,n,8,1");
//delay=100;
}
}
}
void CLinMasterNodeTestDlg::OnComm()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
unsigned char rxdata[30]; //设置BYTE数组An 8-bit integerthat is not signed.
CString strtemp;
CString recd;
int arayindextemp=0;
static char recordlength=0;
//static char streamRx=0;
unsigned char rxarray[30];
// int rxdindex=0;
// int rxaindex=0;
// bool flag=0;
switch(m_mscomm.GetCommEvent())
{
case 1: // comEvSend发送数据
break;
case 2: // comEvReceive读取数据
{
// MessageBox(_T("读取数据事件"), _T("TRACE"), MB_OK);
variant_inp=m_mscomm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为COleSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
// 接受数据
//m_www=len;
//UpdateData(0);
for(k=0;k<len;k++)
{
//unsigned char Hexchange=0;
safearray_inp.GetElement(&k,rxarray+k); //转换为BYTE型数组
}
if(Requestflag==1)
{
if(recordlength<9)
{
int templength=recordlength+len;
for(long u16=recordlength;u16<templength;u16++)
{
//safearray_inp.GetElement(&u16,rxarray+u16); //转换为BYTE型数组
aray[u16]=*(unsigned char*)(rxarray+(u16-recordlength));
recordlength++;
Watchstr.Format(_T("%02x"),aray[u16]); //十六进制显示
Watchstrun+=Watchstr;
Watchstrun+=" ";
}
}
else
{
Requestflag=0;
m_qqqq=Watchstrun;
UpdateData(0);
Watchstrun=" ";
recordlength=0;
}
}
break;
}